
【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さんより、公開当時のコードに対していただいた補足。
@mypacecreator 最後に書いてあったすな。 if ($description != null && is_singular() ) { ?> にすると、詳細以外はデフォルトがでるようになるはずっす。
— まがぞん (@jim0912) May 12, 2011
@mypacecreator ついでに、 != null よりは、! isset( $custom_fields['description'] ) の方が、適切(Noticeエラーがでない)
— まがぞん (@jim0912) May 12, 2011
その節はありがとうございました。。。
参考サイト
続・WordPressのカスタムフィールドを簡単に使う | ネットショップ立ち上げ備忘録
こっちはもっと凝ってるやつ。アイデア次第でいろいろできるね。
WordPressでエントリーごとにkeywordsとdescriptionを自動で設置する方法 « Blog × Play Under World
コメント / トラックバック 7 件
[…] 参考リンク 初心者でもプラグインを使わずにtitle,meta keyword,descriptionを投稿ごとに変える WordPressで個別にdescriptions, keywordsを入れる方法 WordPress カスタムフィールドの使い方 カテゴリー: […]
[…] 初心者でもプラグインを使わずにtitle,meta keyword,descriptionを投稿ごとに変える[WordPress使えそうなスニペットシリーズ] 外部 […]
plug-inを使用せずにmeta descriptionの設定ができるところが良いです!
作成しているサイトのメインインデックスのmeta descriptionは「管理画面で設定したブログの説明文」を表示させたいのですが、最新の投稿で設定した文章が入ってしまいます。
メインインデックスはカテゴリ分けした2つのブログの最新記事を表示させるようなページにしています。
どこをどう変更すればよいでしょうか?
phpは、ほとんど分かりません。
恐縮ですがお願いします。
>うさこ様
お読みくださいましてありがとうございます。
そして、大変恐縮なのですが、お尋ねいただいております「メインインデックスのmeta description」に関しては、本記事では扱っていない内容のため、ここではお答えできません。
(本記事の内容は、あくまで「各投稿のmeta」を好きに決めるためのもので、アーカイブやインデックスページでも使うにはif文で条件分岐をしてあげる必要があります)
カスタマイズ上の疑問でしたら、WordPressフォーラムの方へお越しください。→http://ja.forums.wordpress.org/
私もよく回答しておりますので、お力になれるかもしれません。
[…] 【参考にした記事】 初心者でもプラグインを使わずにtitle,meta keyword,descriptionを投稿ごとに変える[WordPress使えそうなスニペットシリーズ] […]
初心者の私ですが
とても分かりやすくて参考にさせていただきました!
無事表示され満足にいく形になりました!
有難うございます
1点、titleですが、元々のtitleもソースにはきだされ
重複してしまうのですが
この元々のtitleをはきださないようにする方法はあるのでしょうか
初心者のコメントで申し訳ございません
>中山莉那さん
コメントありがとうございます。
カスタムフィールドで定義したタイトルと、元々のタイトルが両方吐き出されてしまうとのことですが、
このページで紹介している方法は古い方法(WordPress4.1未満対象)なので、現行のWordPressの仕様に沿ったテーマではそうなってしまうかもしれません。
WordPress4.1以降では、別の記事『WordPress4.4以降でカスタムフィールドを使い、投稿ごとにタイトルタグを自由に編集する方法(フィルターフック使用)』で記載されている方法を使用してください。
(もしくは拙作プラグイン mypace Custom Title Tagをご利用ください!)
コメントをどうぞ