WordPressのテーマを4.2対応していて気がついた。
ダッシュボードの[外観]メニュー[ヘッダー]をクリックすると、以前はカスタムヘッダーの設定画面が表示されていた。今ではテーマカスタマイザーが表示されるようになっている。いつのころからか、カスタムヘッダーのプレビュー画面がいらなくなったのだろうか?
ダッシュボード
の記事
-
WordPressのテーマでカスタムヘッダーのプレビューはいらなくなった
TORIYAMA Yuko
-
ログイン画面のロゴ
TORIYAMA Yuko
ログイン画面に表示される「WORDPRESS」というロゴを変更することができる。
[PHP]
function my_login_logo() {$url = “画像のフルパス”;
echo ‘‘;
}
add_action(‘login_head’, ‘my_login_logo’);
[/PHP]さらに、ダッシュボードの左上の「W」というアイコンを変更することもできる。
[PHP]
function my_admin_logo() {$url = “画像のフルパス”;
echo ‘‘;
}
add_action(‘admin_head’, ‘my_admin_logo’);
[/PHP]どちらもフックを利用してCSSを上書きしている。属性が強いのか、!importantが必要だった。
これだけでも、けっこうカスタマイス感が上がる! -
WP-Cronが9時間遅れる
TORIYAMA Yuko
WordPress 3.0にしてから WP-Cron が9時間遅れていることに気が付いた。1日1回の処理をwp_schedule_event()で午前2時に設定してあり、毎日実行されているようなのであまり気にしていなかったのだ。ある朝処理されていないことに気がつき、それが昼の11時ぐらいなると動くことが分かった。
ちょうど9時間だからタイムゾーンの設定かサーバの設定がおかしいに違いない。まずWordPressでのタイムゾーンの設定は「UTC +9」で、投稿時間が正常であることを確認した。WP-Cron Dashboard というプラグインで予定を確認したところ、午前2時に設定されている。同じサーバに稼働している他のサイトで、似た処理があるものの正常だ。どうもWordPress 3.0のサイトだけが遅れると分かった。
WordPressフォーラムで質問したところ、
date_default_timezone_set('Asia/Tokyo');を設定するとよいとの回答を得たので、仕込んでみた。
今後、時間を扱うテーマやプラグインでは この設定が必要になるのだろうか。
バージョンアップ時の対応しわすれでは?という気がするものの、解決したのでよいか。 -
予約投稿に失敗する場合
TORIYAMA Yuko
開発したサービスをサーバに設置してからリリース日までは、IPによるアクセス制限をかけて社内からしか参照できないようにしておく、というのはよくあることだ。その状況で動作確認をしていると、毎朝実行するように設定したwp_schedule_event()が動かなかった。もしやと思って試してみると予約投稿にも失敗する。ローカル環境ではうまくいくのになぜかと思ってちょっと調べた。
指定の時間になったら実行する、というような処理はWordPressの擬似cronで行われる。このときWordPress自身が自分のURLを参照するため、アクセス制限があると解決できないということらしい。.htaccessに記述しているアクセス可能IPに社内のIPのほか、サーバ自身のIPを追加するとうまくいった。これまでも、テスト環境では予約投稿できないんだよなぁ…とずっと思っていたので、原因がわかってよかった。
-
カスタムヘッダー
TORIYAMA Yuko
カスタムヘッダーとは、ブログのヘッダー画像を差し替える機能である。あらかじめ用意された画像から選択したり、好きな画像をアップロードして設定することができる。以前からあった機能のようだが、配布テーマを作る上では推奨と知り使ってみた。WordPress3.0の場合は、after_setup_theme フックでカスタムヘッダーの登録を行う。
[PHP]function my_setup() {
add_custom_background();
define( ‘HEADER_TEXTCOLOR’, ’06C’ );
define( ‘HEADER_IMAGE’, ‘%s/images/headers/buna.jpg’ );
define( ‘HEADER_IMAGE_WIDTH’, apply_filters( ‘my_header_image_width’, 610 ) );
define( ‘HEADER_IMAGE_HEIGHT’, apply_filters( ‘my_header_image_height’, 200 ) );add_custom_image_header( ‘my_header_style’, ‘my_admin_header_style’ );
register_default_headers( array(
‘example’ => array(
‘url’ => ‘%s/images/headers/example.jpg’,
‘thumbnail_url’ => ‘%s/images/headers/example-thumbnail.jpg’,
‘description’ => ‘Eexample’
),
) );}
add_action( ‘after_setup_theme’, ‘my_setup’ );
[/PHP]
まずヘッダーのサイズやデフォルトの背景、文字色を指定しておく。そして、add_custom_image_header()で、ブログとダッシュボード用のコールバックをそれぞれ指定する。このコールバックでは、ヘッダーの文字色や背景色を再設定する。register_default_headers()では、あらかじめ添付しておく画像を何枚か配列で指定する。
add_custom_background()はブログ全体の背景色の設定だ。これも推奨されている。配布テーマを使う場合にこれだけでもユーザが設定できれば、そこそこ雰囲気が出せる。
-
WP-Furigana ふりがなを自動入力するプラグイン
TORIYAMA Yuko
投稿画面で、ふりがなを自動入力するプラグインを作成した。
個人ブログ「お菓子の虜」で、お菓子名のふりがなをカスタムフィールドに手入力する手間を、なんとか軽減できないかと思っていたのを実現したものだ。以前はお菓子データをAccessで管理していたため、ふりがなの機能が付いていたのだ。
さて今回のプラグインでは、投稿タイトルを入力しフォーカス移動した際にふりがなが空白であれば、自動的に設定するようにした。カスタムフィールドを使っているので、手修正も可能だ。すでに何かしら入力されている場合はなにもしない。
誰もが欲しい機能ではないものの、本人としてはまずまずの使い心地である。ふりがなを取得するには、Yahoo! JAPANが提供している「日本語形態素解析」というWeb APIを利用した。プラグインを使う際にYahoo! JAPANのアプリケーション IDを取得し、設定画面から登録する必要がある。
プラグインを初めて公開するということで、PoEditを使いながら翻訳処理もやってみた。
ダウンロード:WP-Furigana ふりがなを自動入力するプラグイン -
プラグインの管理画面をカスタマイズ
TORIYAMA Yuko
以前メモしたことのある、ダッシュボードにメニューを追加する方法の詳細。プラグインに設定画面を追加するには、admin_menuというアクションフックを利用する。add_options_page()でダッシュボードのサイドメニューに項目を追加し、コールバック関数で設定画面を表示する。
設定画面はパラメータを入力するためのフォームとなる。フォームのactionに自分自身のURLを設定しておく。submitされた際にはパラメータがPOSTされてくるので、その場合の処理を入れておく。受け取ったパラメータをupdate_option()で、保存すればよい。すでにパラメータが保存されている場合はget_option()で取得することができるので、それをフォーム内のvalueとして表示する。さらにplugin_action_linksというフィルタを利用すると、プラグインの管理に”設定”メニューを追加することができる。”設定”がクリックされた場合の処理は、上記のコールバック関数になる。こちらはあってもなくてもよいわりには苦戦した。
[sourcecode language=’php’]
add_action(‘admin_menu’, ‘add_config_page’);function add_config_page(){
add_options_page(‘MyPlugin’, ‘MyPlugin’, 10, basename(__FILE__), ‘config_page’);
add_filter( ‘plugin_action_links’, ‘filter_plugin_actions’, 10, 2 );
}function filter_plugin_actions( $links, $file ){
static $this_plugin;
if ( ! $this_plugin ) $this_plugin = plugin_basename(__FILE__);if ( $file == $this_plugin ){
$settings_link = ‘Settings‘;
array_unshift( $links, $settings_link );
}
return $links;
}function config_page(){
$my_param = ”;
if( isset( $_POST[‘submit’] ) && isset( $_POST[“my_param”] )){
$my_param = $_POST[“my_param”];
update_option( “my_param”, $my_param);
}
else{
$my_param = get_option(“my_param”);
}?>
My Plugin
管理メニューの追加 – WordPress Codex 日本語版
-
-
投稿編集の一覧をカスタマイズ
管理画面の投稿編集の一覧に表示されるのは、通常[タイトル][作成者][カテゴリー][タグ][コメント数][日付]となっている。ここに項目を追加することができる。
以下は、右端の列に添付画像の1枚目のサムネイルを表示している。[sourcecode language=’php’]
function my_post_column($columns) {
$columns[‘thumbnail’] = ‘添付画像’;
return $columns;
}function my_custom_column($column, $id){
if($column == ‘thumbnail’){
$attachments = get_children(array(‘post_parent’ => $id, ‘post_type’ => ‘attachment’, ‘post_mime_type’ => ‘image’, ‘orderby’ => ‘menu_order’, ‘showposts’ => ‘1’));
if (is_array($attachments) ){
foreach($attachments as $attachment){
$thumbnail = wp_get_attachment_thumb_url(intval($attachment->ID), “thumbnail”);
echo ‘‘;
}
}
}
}add_filter(‘manage_posts_columns’, ‘my_post_column’);
add_action(‘manage_posts_custom_column’, ‘my_custom_column’, 10, 2);[/sourcecode]
フォトログなどでは、こうしておくと便利だ。
-
リビジョン管理を無効にする
TORIYAMA Yuko
最近のWordPressに搭載されいているリビジョン管理は、編集履歴を残す機能である。CMSとして複数人数で利用している場合には便利なものの、個人ブログで必要にかられることはあまりない。編集履歴はMySQL上でsb_3_postsとして保存されるため、投稿IDがどんどん増えていくのも気になる。
このリビジョン管理を無効にすることができる。wp-config.phpに以下を記述しておくとよい。
[sourcecode language=’php’]
define(‘WP_POST_REVISIONS’, false);
[/sourcecode]記述する位置は、「// 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。」の直前あたりだ。第2引数がfalseの場合はリビジョンが無効となる。ここに数値を指定すると、履歴を残す世代を指定することになる。
