ダッシュボード

の記事

  • WordPressのテーマでカスタムヘッダーのプレビューはいらなくなった

    WordPressのテーマを4.2対応していて気がついた。
    ダッシュボードの[外観]メニュー[ヘッダー]をクリックすると、以前はカスタムヘッダーの設定画面が表示されていた。今ではテーマカスタマイザーが表示されるようになっている。いつのころからか、カスタムヘッダーのプレビュー画面がいらなくなったのだろうか?

    (さらに…)

    WordPressのテーマでカスタムヘッダーのプレビューはいらなくなった
  • ログイン画面のロゴ

    ログイン画面に表示される「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時間遅れる

    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');

    を設定するとよいとの回答を得たので、仕込んでみた。
    今後、時間を扱うテーマやプラグインでは この設定が必要になるのだろうか。
    バージョンアップ時の対応しわすれでは?という気がするものの、解決したのでよいか。

  • 予約投稿に失敗する場合

    開発したサービスをサーバに設置してからリリース日までは、IPによるアクセス制限をかけて社内からしか参照できないようにしておく、というのはよくあることだ。その状況で動作確認をしていると、毎朝実行するように設定したwp_schedule_event()が動かなかった。もしやと思って試してみると予約投稿にも失敗する。ローカル環境ではうまくいくのになぜかと思ってちょっと調べた。
    指定の時間になったら実行する、というような処理はWordPressの擬似cronで行われる。このときWordPress自身が自分のURLを参照するため、アクセス制限があると解決できないということらしい。.htaccessに記述しているアクセス可能IPに社内のIPのほか、サーバ自身のIPを追加するとうまくいった。

    これまでも、テスト環境では予約投稿できないんだよなぁ…とずっと思っていたので、原因がわかってよかった。

  • カスタムヘッダー

    headerカスタムヘッダーとは、ブログのヘッダー画像を差し替える機能である。あらかじめ用意された画像から選択したり、好きな画像をアップロードして設定することができる。以前からあった機能のようだが、配布テーマを作る上では推奨と知り使ってみた。

    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 ふりがなを自動入力するプラグイン

    wp-furigana投稿画面で、ふりがなを自動入力するプラグインを作成した。
    個人ブログ「お菓子の虜」で、お菓子名のふりがなをカスタムフィールドに手入力する手間を、なんとか軽減できないかと思っていたのを実現したものだ。以前はお菓子データをAccessで管理していたため、ふりがなの機能が付いていたのだ。
    さて今回のプラグインでは、投稿タイトルを入力しフォーカス移動した際にふりがなが空白であれば、自動的に設定するようにした。カスタムフィールドを使っているので、手修正も可能だ。すでに何かしら入力されている場合はなにもしない。
    誰もが欲しい機能ではないものの、本人としてはまずまずの使い心地である。

    ふりがなを取得するには、Yahoo! JAPANが提供している「日本語形態素解析」というWeb APIを利用した。プラグインを使う際にYahoo! JAPANのアプリケーション IDを取得し、設定画面から登録する必要がある。

    プラグインを初めて公開するということで、PoEditを使いながら翻訳処理もやってみた。
    ダウンロード:WP-Furigana ふりがなを自動入力するプラグイン

  • プラグインの管理画面をカスタマイズ

    setting以前メモしたことのある、ダッシュボードにメニューを追加する方法の詳細。

    プラグインに設定画面を追加するには、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 ‘' .$id .'‘;
    }
    }
    }
    }

    add_filter(‘manage_posts_columns’, ‘my_post_column’);
    add_action(‘manage_posts_custom_column’, ‘my_custom_column’, 10, 2);

    [/sourcecode]

    フォトログなどでは、こうしておくと便利だ。

  • リビジョン管理を無効にする

    最近のWordPressに搭載されいているリビジョン管理は、編集履歴を残す機能である。CMSとして複数人数で利用している場合には便利なものの、個人ブログで必要にかられることはあまりない。編集履歴はMySQL上でsb_3_postsとして保存されるため、投稿IDがどんどん増えていくのも気になる。

    このリビジョン管理を無効にすることができる。wp-config.phpに以下を記述しておくとよい。

    [sourcecode language=’php’]
    define(‘WP_POST_REVISIONS’,  false);
    [/sourcecode]

    記述する位置は、「// 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。」の直前あたりだ。第2引数がfalseの場合はリビジョンが無効となる。ここに数値を指定すると、履歴を残す世代を指定することになる。