WP Total Hacks 0.4.0 とWordPress3.2で変わったことで気がついたこと。

WP Total Hacksをアップデートしました。

今回のアップデートはWordPress3.2への対応です。

ホントは新しい機能を実装したものをリリースする予定だったのですが、ビジュアルエディターまわりの処理が3.1と3.2の間で、互換性が無くなってしまったため、後始末に手こずりました。

このブログでも自作プラグイン上でビジュアルエディターを設置する方法について解説させていただきましたが、もう過去の遺物です。

以下では本来の趣旨とはちょっとかわりますが、WordPressプラグイン開発から見たビジュアルエディターなどの変更点についてご説明します。

3.2で変更されたビジュアルエディター関連の関数

自作プラグインでビジュアルエディターをつけることはあんまりないと思いますが…

wp_tiny_mce() と the_editor() 内の処理が大幅に変更された。

本来ならソースを上げて説明したいところですが、めんどくさいので省略します。

従来のWordPressではビジュアルエディターを出力するためのtiny mce用の設定をwp_tiny_mce()で出力して、そのあとでthe_editor()でビジュアルエディター用のHTMLを出力するという流れでした。

しかし、3.2以降ではthe_editor()のみで最低限必要な処理が出力されるようになり、wp_tiny_mce()をthe_editor()とあわせて実行するとJavaScriptやHTMLのコンフリクトが発生します。

どうやらカスタマイズしたエディターを出力するためのパラメータをwp_tiny_mce()やその他のフックでゴニョゴニョしなければならないようです。

ですが、もともとデフォルトのままだったので、今回はそのへんは追っかけていません。

前画面モード

WordPress3.2から追加された”なんちゃらかんちゃらモード”(フルスクリーンのあれですw)は、the_editor()実行時にフルスクリーン用のHTMLを出力するのですが、悲しいことにこのHTMLにはフックがありません。

なので、自作プラグイン側で the_editor() する際には以下のような感じで、フルスクリーン用のtinyMCEプラグインを解除する必要があります。

add_filter('tiny_mce_before_init', array(&$this, 'tiny_mce_before_init'), 999);

public function tiny_mce_before_init($init)
{
    $init['plugins'] = str_replace(
        array('wpfullscreen',',,'),
        array('', ','),
        $init['plugins']
    );
    return $init;
}

ちなみに上記のソースをそのまま使うと記事などの投稿画面でもボタンが消えちゃいますので、以下のページを参考に適切な条件分岐などをしましょう。

http://firegoby.jp/archives/2236

jQueryのバージョンアップによる変更

jQueryの1.6から $(‘foo’).attr(‘checked’); は、$(‘foo’).prop(‘checked’); に書き換えてねという情報を聞いていたんですが、その後1.6.1が再度リリースされて、従来の $(‘foo’).attr(‘checked’); でも動くようにしたよんということだったので、完全にタカをくくっていました。

実際にWordPress3.2に同梱されているjQueryは1.6.1なので、オッケーと思っていたんですが、実際には動きません。

というわけで、.attr(‘checked’) を、もし自作テーマなどで使用しているなら、.prop(‘chekced’) に変える必要があります。

WP Total Hacks 0.3.0

WP Total Hacksをアップデートしました。

更新内容

  • 保存時のメッセージが出てなかったので修正しました。
  • メディアップローダー上の「投稿に挿入」が表現がおかしかったので、「画像を選択」に修正しました。
  • 保存後にアクティブなタブが維持されるように修正しました。

というわけで、今回のアップデートも動作には影響ありません。

次回のアップデートでは、いくつかの機能の追加を行います。

しばらくアップデートが続きますが、よろしくお願い致します。

指定した記事を単独で表示するサイドバーウィジェット

午前0時を過ぎたので昨日になりますが、神戸のWordBenchに参加しました。

みなさん、お疲れさまでした。

ところで、そのなかで、トップページの下の方に今後のイベントを表示したいとか、ウィジェットでやったらいいとか、そんなやりとりがありました。

実は、その解決に役立ちそうなのをすでに持っていたので、公開しておきます。

このプラグインは、URLを指定すると、その記事の投稿サムネールやタイトル、記事などを単独で表示するプラグインです。

使い道

このプラグインは単に指定された投稿またはページを単独で表示するだけです。

しかし、投稿サムネールがあればそのimgタグも出力できますので、たとえばサイドバーウィジェット上でキャンペーンなどの告知用バナーなどが、超簡単に作成できます。

HTML部分はテンプレート化していますので、様々なシーンで利用可能な優れものです。

導入手順

テーマファイル内の functions.php に以下の記述を追加してください。

register_sidebar( array(
    'name' => 'Home Widget Area',
    'id' => 'home-widget-area',
    'description' => 'The HOME widget area',
    'before_widget' => '<div id="%1$s" class="home-widget-container %2$s">',
    'after_widget' => '</div><div class="clearfix">&nbsp;</div>',
    'before_title' => '<h2 class="widget-title">',
    'after_title' => '</h2>',
));

続いて、テーマファイル内のindex.phpのhave_posts()ループの直下あたりに、以下の記述を追加してください。

dynamic_sidebar('home-widget-area');

ここまでの処理でトップページに新しいウィジェットエリアが追加されました。

あとは、本プラグインを以下からダウンロードして、インストールして下さい。

singlepost-widget

次にウィジェットの設定画面で、このウィジェットを有効化してテンプレートをゴニョゴニョすれば完成です。

イベントが完了したら、ワンタッチで削除できますので幸せですよ。

詳しい仕様

  • 投稿のIDまたはURLからその投稿に関する情報を取得します。URLが指定された場合は内部でIDに変換して、そのIDからget_post()してます。
  • サムネールのサイズはそのテーマで使用可能なサイズが自動的にプルダウンに出ます。
  • テンプレートはコンテンツ出力部分のテンプレートを指定できます。テンプレート内では、以下のような専用タグが使用できます。
    • %post_thumb% – 投稿サムネールのimgタグ
    • %class% – CSS用のクラス属性
    • %post_title% – 投稿のタイトル
    • %post_excerpt% – 投稿の抜粋
    • その他,
    • WordPressのget_post()関数を%で囲んだもの。

意味分かりにくいですかね?

でも、これは、解決策のひとつとしてとてもオススメであることは間違いありません。

わからないことがあれば、twitterで質問してくださいませ。

WP Total Hacksでクライアントにラクして納品しよう。

5月24日にこのサイトで公開したプラグインWP Total Hacksについて、再度ご紹介させていただきます。

このプラグインを公開してから3週間がたちましたが、お陰さまで本日現在までに3,000回以上もダウンロードしていただき、とても多くのブログやtwitter等でもご紹介いただきました。

海外での反応も好評で、すでに7ヶ国語に翻訳されています。

このプラグインを開発した理由

WordPress開発に携わる多くのみなさんは、クライアントのためにWordPressを構築して納品していると思います。

そんな中でお客さんに使い方を説明するわけですが。。。

  • カスタムフィールド?気にしないでください。。。
  • プラグイン?インストールしないでください。。。
  • テーマ?触らないでください。。。
  • ボタン?押さないでください。。。

こんなやりとりを誰もがしてますよね。

WordPressは非常に多機能で優秀なCMSであるがゆえに、とにかくもう説明が大変なんです。

そんなわけで、不要な機能をポンポンと無効化できるようにしよう!と思ったのが、当初の動機でした。

おすすめの機能

個人的なおすすめの機能を五つだけご紹介します。

Webmaster権限を追加

WordPressにはデフォルトで管理者、編集者、寄稿者などのロールが用意されています。

この機能を有効化するとWebmasterというロールが新たに作成されます。

このWebmasterは管理者と編集者の中間に位置するロールで、編集者に”edit_theme_options”という権限のみを追加したものです。

では、何が出来るのかといいますと、従来編集者にはできなかったサイドバーウィジェットやカスタムメニュー、カスタム背景などをカスタマイズすることができます。

一方でテーマやプラグインの管理はできませんので、このWebmasterの操作によって、サイトそのものが致命的に動作しなくなることはありません。

この機能を有効化してお客さんに渡すとかなりの説明を省くことができます。おすすめです。

アップデート通知を停止

この機能を有効化すると管理者以外にはアップデート通知が表示されません。

上述のWebmasterとともに有効化してクライアントに納品すると、アップデートをちょっとゆっくり行うことができます。(笑)

保守費用をいただいてメンテする際には便利ですよ。(大きな声では言えませんが。)

デフォルトのメールアドレスを変更

WordPressには自動的にメールを送信する機能があります。

そのときのwordpress@example.comなどのメールアドレスを変更できます。

ちゃんとテストしていませんが、Contact Form 7 とも仲良く同居できるはずなので、ぜひ有効化しましょう。

ダッシュボードウィジェットの無効化

クライアントに余計な情報を見せないために、いくつかのウィジェットを無効化しています。

特にWordPressではじまる2つのウィジェットは個人的に見せたくないと思って。。。すいませんすいません。

投稿及びページのメタボックスの無効化

パーマリンク設定などにもよりますが、スラッグはほぼ全てのサイトで無効化しています。

あと、カスタムフィールドも、必ず無効化するメタボックスの一つです。

トラックバックや投稿タグなども企業サイトでは利用することが少ないと思いますので、無効化することが多いと思います。

WP Total Hacksの今後の予定

新機能については、いくつかのアイディアをご提供いただいており、それらはGitHub上のIssuesにパラパラと書いています。

https://github.com/miya0001/wp-total-hacks/issues?sort=created&direction=desc&state=open

これに関しましては、どなたでもかけますので、アイディアは大歓迎です。

あと、今後のアップデートで重要と考えているのは、3.2への対応とマルチサイトへの対応です。

現時点で致命的なエラーが出るわけではないのですが、いくつか対応が不十分な項目があるので、近日中にアップデートする予定です。

WP Total Hacksについて – 外観・その他編

WP Total Hacksについて今回は外観及びその他タブについてご説明します。

http://firegoby.jp/wp/wp-total-hacks

これまでの解説は以下をご覧ください。

外観

管理画面のヘッダーのロゴを変更

メディアアップローダーなどを使用して管理画面ヘッダーの左側にあるWordPressのロゴ画像を変更してください。

縦横30ピクセル以下の画像を使用することをおすすめします。

なお、まもなくリリースされるWordPress 3.2では、この部分の画像サイズが小さくなりますが、はみ出した部分は切りつめて表示されるようです。

管理画面フッターを変更

管理画面左下のフッターのテキストを変更できます。

このフッターテキストの部分はWordPress側であらかじめ<p>で囲まれていますので、改行は無視する仕様になっています。

画像も挿入することが可能ですが、WordPress 3.2では、CSSで position:absolute が指定されているらしく、高さがある画像を配置するとフッターからははみ出してしまいますのでご注意ください。

ログイン画面のロゴを変更

ログイン画面のロゴ及びクリック時のURL、リンク先タイトルを指定できます。

その他

ダッシュボードウィジェットの無効化

管理画面内のダッシュボードに配置されているウィジェットを無効化できます。

無効化したい項目にチェックを入れてください。

Webmaster権限を追加

これは私の独断と偏見でつけた機能です。

WordPressのデフォルトの「管理者」と「編集者」の中間のようなロールで、簡単に言うと「編集者」にサイドバーウィジェットやカスタムメニューなどの「edit_theme_options」を追加したロールです。

ノンプログラマーに対してある程度大きめの権限を渡す際に有効で、テーマの変更やプラグインの操作などはできません。

クライアントにデモを見せるときにサイドバーウィジェットはとても喜ばれるのですが、管理者権限を渡してしまうと「あれはしないで。」「これはしないで。」という説明が必要になりますのでクライアントにはこの権限を渡しています。

デフォルトのメールアドレスを変更

ユーザー登録時やコメントなどの通知で届くWordPressからのメールの送信者名およびメールアドレスを変更できます。

ちゃんとテストしてませんが、ContactForm7などの他のプラグインでこの部分をカスタマイズできるものと同居した場合にそなえて正規表現でチェックしています。

デフォルトの連絡先情報を削除

ユーザーの編集からデフォルトの連絡先情報を削除します。

削除したい項目にチェックを入れてください。

アップデート通知を停止

WordPressでは、アップデートがあると通知してくれますが、この機能を有効にすると管理者以外には通知が行われません。

WP Total Hacks 0.2.1

さっそくですが、アップデートです。

http://firegoby.jp/wp/wp-total-hacks

今回のアップデートでは動作に関係のある項目はありません。

しばらくアップデートが頻繁にあると思いますので、ご理解の程お願い申し上げます。

また、今回のように言語ファイルの追加のみのアップデートの場合は、このブログでは告知しないこともありますので、よろしければ@miya0001をフォローしてください。

更新内容

  • トルコ語及びロシア語の言語ファイルを追加しました。
  • 数カ所にtypoがあったので修正しました。

https://github.com/miya0001/wp-total-hacks

WP Total Hacksについて – 投稿&ページ編

このサイトで配布しているプラグイン”WP Total Hacks”について、昨日の記事に引き続き今回は投稿&ページの設定をご説明します。

投稿&ページ

このタブには編集画面をカスタマイズするための機能があります。

投稿のメタボックスを削除

WordPressの投稿やページの編集画面には、ビジュアルエディター以外にもメタボックスと呼ばれる様々なボックスが配置されています。

これらのメタボックスの中には、クライアントへの説明が難しいメタボックスや、場合によっては使ってほしくないメタボックスがもあるかもしれません。

そんな場合には、削除したいメタボックスにチェックを入れることで、編集画面から削除されます。

ページのメタボックスを削除

投稿と同じく不要なメタボックスにチェックを入れてください。

リビジョンコントロール

WordPressには過去のリビジョンを保存する機能があります。

同じページを何度も編集するとこのリビジョンが膨大に並んでしまいますので、それが気になる方はプルダウンメニューで保存件数を選択してください。

0を選択した場合はリビジョン機能はオフになります。

念のため申し上げておきますが、このリビジョンが増えたからと言ってサイトの表示のパフォーマンスに影響はありませんので、好みの問題だと思います。

自動保存を無効

WordPressには30秒間隔で自動保存を行う機能があります。

これが嫌いな方は有効化することで自動保存が停止します。

私の経験では、カスタム投稿タイプ+カスタムフィールドを使用したプラグインでは、いつのまにかカスタムフィールドの値が消えてしまうバグがあるプラグインがあります。

そんな場合は、自動保存を無効にすると解消されます。

セルフピンバックを停止

コンテンツ内からリンクを貼ると、URLを抽出してピンバックを送信する機能がありますが、サイト内リンクでは余計なお世話と感じることが少なからずあります。

そんな場合は、この機能を有効にすると、サイト内リンクに対してはピンバックを送信しません。

ページに抜粋を追加

テーマによっては投稿だけでなくページにも抜粋が欲しい場合があります。

この機能を有効化すると、ページの編集画面にも抜粋入力用のテキストエリアが表示されます。

WP Total Hacks について – サイト設定編

本日リリースしたWP Total Hacksについてですが、ちょっと詳しく解説をします。

http://firegoby.jp/wp/wp-total-hacks

すべての項目を1ページで説明するのは無理なので、本日以降4回にわけて管理画面のタブごとにご説明します。

サイト設定

Faviconを追加

お気に入りに登録した際などに表示されるfavicon.icoを設定できます。.ico以外でもアップロードできますが、.ico以外のファイル形式は残念ながらieに対応していません。

wlmmanifestとxmlrpcの自動削除

これらはリモート投稿機能と言って、外部のソフトウエアなどを使用する際に必要なタグですが、デフォルトではリモート投稿がオフになっています。

この機能を有効にすると、WordPressの[投稿設定]にあるリモート投稿が有効か否かによって、自動的にこれらのメタタグが出ないようになります。

前後の投稿へのリンクをページで無効化

WordPressでは、前後の投稿へのリンクをメタタグ内に自動的に出力しますが、ページでは前後の投稿という概念そのものがないため無いほうがいいかもしれません。

好みによると思いますが、この機能を有効にするとページでのみ、これらのメタタグが削除されます。

バージョン情報をheadから削除

好みの問題ですが、この機能を有効化するとメタタグで出力されるWordPressのバージョン情報を削除します。

念のため申し上げておきますが、このメタタグが出るからと言ってセキュリティリスクがあることにはなりません。

あくまでも好みの問題だと思います。

#moreアンカーを削除

WordPressでは、続きを読むリンクに#more-xxxアンカーをつけてくれますが、場合によってはお節介と感じることもあります。

余計なお世話と思った方は有効化すると幸せになれます。

抜粋から[...]を削除

これも、#moreアンカーと同様に余計なお世話と感じることがあります。

そんな場合は有効化されると、出力されなくなります。

Google Analyticsをインストール

Google Analyticsのコードを入力できます。

管理者には表示しないように設定することで、より精度の高いアクセス解析結果が得られると思います。

ウェブマスターツールの認証

検索エンジンのウェブマスターツールで提供される認証コードを入力できます。

メタタグをそのまま入れるのではなく、認証コードのみを入力してください。