どもです。
TRPGがやりたい餅。です。
久しぶりですがWordPressの話題をば。
SEO対策プラグインとして名高いHeadSpace2。
こちらは記事毎にキーワードとディスクリプションを設定することができるプラグインです。
ただしこれ、テンプレートの方に記載が有る場合は、入力したものはその後ろに入る仕様です。
それは困るので、入力があるときはその内容だけを、入力がないときは指定の文言を出力するようにしたいと思います。
①一般的な方法 -管理画面から-
まずは、HeadSpace2の基本から。
管理画面の 設定 > HeadSpace で、編集画面を開きます。
で、表示させたい項目をクリックし、内容を入力します。
こちらで文言を入力した場合、自動的に記事毎に記載があればそちらを、なければこちらで入力した内容が出力されます。
なお、デフォルトではキーワードの項目がないので、ぶっちゃけ不要ですが表示させたい場合は上メニューの「ページモジュール」をクリック。
「Keywords」をドロップして、緑のエリアに持ってきます。
なお、デフォルト設定は「タグを使用する」「最大文字数0」になっているので、クリックして編集しておくと良いでしょう。
ちなみに、この画面で使えるタグは以下のものです。
現在の管理画面では一部未翻訳のところがあるので、Google先生に翻訳して貰いました。
%%date%% | 記事/ページの日付と入れ替える |
---|---|
%%title%% | 記事/ページのタイトルと入れ替える |
%%sitename%% | サイトの名前 |
%%excerpt%% | (それが存在しない場合は、自動生成された)ポスト/ページの抜粋に置き換え |
%%excerpt_only%% | (自動生成せずに)ポスト/ページの抜粋に置き換え |
%%tag%% | 現在のタグ/タグに置き換え |
%%category%% | ポストのカテゴリに置き換え(カンマ区切り) |
%%category_description%% | カテゴリーdescription(説明文)と入れ替える |
%%tag_description%% | タグの記述に置き換え |
%%term_description%% | タームの説明に置き換え |
%%term_title%% | タームの名前に置き換え |
%%modified%% | 記事/ページの修正された時間と入れ替える |
%%id%% | 記事/ページのIDと入れ替える |
%%name%% | 記事/ページの著者のニックネームと入れ替える |
%%userid%% | 記事/ページの著者のユーザーidと入れ替える |
%%searchphrase%% | 検索ワードと入れ替える |
%%currenttime%% | 現在の時刻と入れ替える |
%%currentdate%% | 現在の日付と入れ替える |
%%currentmonth%% | 現在の月に置き換え |
%%currentyear%% | 現在の年に置き換え |
%%page%% | ページ番号と入れ替える(page 2 of 3) |
%%pagetotal%% | 現在のページの合計に置き換え |
%%pagenumber%% | 現在のページ番号に置き換え |
%%caption%% | 添付ファイルのキャプション |
しかしこの編集機能、ひとつ重大な問題がありまして。
カスタム投稿タイプが複数ある場合、投稿タイプごとに表示を分けることができないのです。
しかも、「カスタム投稿タイプ名」を出力するタグもありません。
というわけで、複数のカスタム投稿に対応するためにはテンプレートに直書きするしかないのです。
たぶん。
②カスタム投稿タイプが複数ある場合 -テンプレートを-
さて、ここからが本番。
カスタム投稿が複数ある場合、Headspace2が用意してくれる編集画面では足りません。
しかし、テンプレートに直書きすると、投稿画面で設定した文言だけが上手く出てくれません。
そこで、Headspace2の記載がある場合とない場合で、ifをかけます。
<?php $_headspace_metakey = post_custom("_headspace_metakey"); if ( empty( $_headspace_metakey ) ): ?><meta name="keywords" content="none"><?php endif; ?>
<?php $_headspace_description = post_custom("_headspace_description"); if ( empty( $_headspace_description ) ): ?><meta name="description" content="none"><?php endif; ?>
これで、キーワード、ディスクリプションがない場合のみ、metaタグが表示されるようになります。
content="none"の中身を適当に調整して、完了です(゚∀゚)