【2014.10.31】
公開から3年半たった今でも、かなりこの記事のニーズが高いようなので、イマイチなコードを書き直しました。
【2015.10.12】
公開から4年たちまして、WordPress4.1からはtitle要素はfunctions.phpで定義する方法が推奨と変わりました。
詳しくはこちら→『WordPress4.4以降でカスタムフィールドを使い、投稿ごとにタイトルタグを自由に編集する方法(フィルターフック使用)』
投稿ごとにタイトルタグやmeta description,keywordを変更できる、言わずと知れたAll in One SEO Packプラグイン。
しかし個人的に、他のプラグインと干渉しそうであんまり使いたくないと思っております。
そこで、プラグインを使わずにカスタムフィールドで上記項目を設定できるようなコードを書きました。
仕様はこんな感じ
my_keyword
- カスタムフィールドでの設定があればその文字列をそのまま利用
- 何も設定しないとき→ テーマに記載のデフォルトキーワードを表示
my_description
- カスタムフィールドでの設定があればその文字列をそのまま利用
- 何も設定しないとき→ 管理画面で設定したブログの説明文*
my_title
- カスタムフィールドでの設定があればその文字列をそのまま利用
- 何も設定しないとき→ “投稿orページのタイトル|管理画面で設定したブログのタイトル*”
※ブログの説明文=管理画面の「設定>一般>キャッチフレーズ」で入力したもの
※ブログのタイトル=管理画面の「設定>一般>サイトのタイトル」で入力したもの
コピペで使えるコード
以下のタグを、header.phpの<head></head>内に貼りましょう。
軽く説明すると、指定したカスタムフィールドのキーの値があればそれを出力し、なければelse以下を出力するっていうコードです。
↓こっちはこの記事公開当初に書いてた古いコード。
うーん。。。とりあえず今回(2014.10.31)は
- フィールド名にプレフィックス付与(下記参照)
- 出力(echo)時、最低限のセキュリティに配慮(サニタイズ用のコードで囲みました。誤ったHTMLタグとかスクリプトとかをフィールドに放り込まれても表示が崩れたりスクリプトを実行されたりしないように。)
- カスタムフィールドの出力部分をシンプルに(WordPress3.5以上用の書き方)
の部分を修正しました。
投稿画面では・・・
カスタムフィールドの項目で、先程コードに書いた my_description/my_keywords/my_title 3つのキーを使います。
【2014.10.31】
フィールド名は、以前は「description/keywords/title」という、普通の単語で書いていましたが、他のプラグインや他人の書いたコードと干渉しやすかったりするので、「my_」というプレフィックスを付けています。(←コレ大事!自分の好きな文字列を一般名詞の頭につけて、できるだけユニークな名前になるようにしましょう。)
こんな感じで入力して、エントリー公開。
自分で使うならこれで充分だし、どっかへ納品するならCustom Field GUI Utility 3プラグインあたり併用するとステキかも。
【2014.10.31】
上記プラグインは2013年から更新されてないので、今だと国産プラグインならSmart Custom Fieldsをおすすめしておきます。
投稿のソースを確認してみよう!
ブラウザでソース確認して、さっき入力したとおりに表示できていれば大成功!
念のため、アーカイブページやカスタムフィールドを設定していない投稿で、デフォルトのものが正しく表示されているか確認してください。
あと、if(is_category())なり、if(is_single())なんかと組み合わせていくとよりいい感じになるかと思います。
追記
いつもいつもお世話になりっぱなしの@jim0912さんより、公開当時のコードに対していただいた補足。
その節はありがとうございました。。。
参考サイト
続・WordPressのカスタムフィールドを簡単に使う | ネットショップ立ち上げ備忘録
こっちはもっと凝ってるやつ。アイデア次第でいろいろできるね。
WordPressでエントリーごとにkeywordsとdescriptionを自動で設置する方法 « Blog × Play Under World