カスタムフィールドに表示されないメタ情報の作り方

WordPress では投稿/ページにちょっとした情報(メタ情報)を付加するときにカスタムフィールドを使います。wpxtreme でも各投稿の最後に表示されている「動作確認バージョン」「参照」などの情報はカスタムフィールドを利用しています。
色んなプラグインを使っていると、このカスタムフィールドに勝手に情報を付け足すヤツがいることに気づきます。例えば Twitter Tools は「aktt_notify_twitter」「aktt_tweeted」なんてのを追加しています。あの、追加するのはいいんだけど、そんなのが目につくとウザいんですけど。
実は WordPress には、投稿/ページの編集画面でメタ情報をカスタムフィールド欄に表示させない方法があります。とても簡単なので覚えておきましょう。

メタ情報をカスタムフィールド欄に表示させないようにするには

カスタムフィールドの[名前]の1文字目を '_' アンダースコア(アンダーバー)にします。

そんだけです。コーダーなアナタは add_post_meta($post_id, '_my_meta_key', $meta_value) のように書きましょう。これで秘密の情報をクライアントから隠すことができます。プラグインを作成する方は、こういった細かいところまで気を配りましょう。でなければ配布なんかするなっつー、ね。
ちなみに Tweet Tools は「_aktt_hash_meta」というメタキーも使用してるので、この仕様はご存知らしいです。当該の投稿を Tweet したかどうか明示するためにあえて非表示にしていないのかも!でもそれなら、わざわざ投稿/ページ画面に Tweet Tools のメタボックスを配置してるんだから、そこで非表示メタ値の情報を read only なテキストで見せればいいじゃないか中途半端な仕事しやがって、ですね。

WordPress が使っている非表示メタ値

WordPress 自身もこの仕様をうまく利用しています。以下にその非表示メタ情報をいくつか挙げておくぜ。

  • _wp_page_template ページ:ページテンプレートのファイル名
  • _wp_attached_file メディア:ファイル名
  • _wp_attachment_metadata メディア:画像のサイズなど
  • _wp_attachment_image_alt メディア:画像の alt(代替テキスト)値
  • _wp_old_slug 投稿/ページ:スラッグを変更したときの、変更前のスラッグ
    これのおかげで、スラッグを変更しても以前のスラッグを使用した URL でアクセスできます。
  • _wp_trash_meta_status 投稿/ページ/添付/コメント:ゴミ箱へ移動した時のステータス
  • _wp_trash_meta_time 投稿/ページ/添付/コメント:ゴミ箱へ移動した時の時間
  • _edit_lock 投稿/ページ:編集ロックした時間
    「この記事は他のユーザーが編集中ですよ」の排他制御に使われます。
  • _edit_last 投稿/ページ:最後に編集したユーザーの ID

WordPress の秘密を知ったアナタはますます WordPress に愛着が湧いてきたことでしょう。もっと知りたくなったら、ソースやデータベースを覗いてみてください。一日中見てても飽きませんよ。それで興奮してきたら立派な変態 WPist です。やったね!

動作確認バージョン
  • WordPress 2.9.1

5 Comments