サポート » 使い方全般 » 固定ページのmetaデータ(keywords、description)をページ毎に変更したい

  • 解決済 momo-sophia

    (@momo-sophia)


    使用テーマ:Twenty Elevenをカスタマイズ

    投稿ページについては、カテゴリ、タグに指定したワードがkeywordsに設定されますが、
    固定ページについても、カスタムフィールド等で可変にすることはできないでしょうか?

    header.phpで操作しているようです。現在のソースは以下の通り。
    ・is_single(投稿ページなら?)→カテゴリ、タグの値をセット
    ・else(固定ページなら?)→固定文言

9件の返信を表示中 - 1 - 9件目 (全9件中)
  • モデレーター gatespace

    (@gatespace)

    こんにちは。
    Metaタグを制御できるプラグインを使ってみてはどうでしょうか?

    日本の方が作られていて、ドキュメントがしっかりしているものだとWP SiteManagerがあります。
    他にも、同様のプラグインは多数あります。

    こんにちは

    あ”ー、4week 前なら、今更かもしれないですが、

    keywords、description だけであれば、

    CSSやjavascriptをシングルページで追加するコードですが、keyword や description用に書き換えていただくと使えると思います。

    functions.phpに

    <?php
    add_action("wp_head","my_embed_meta",'90');
    
    function my_embed_meta($content){
        global $post;
        $result = "";
        $css    = "";
    
        if ( is_single() || is_page() ){
    
                $css    .= get_post_meta($post->ID, 'css', true);
                if (!empty($css)) {
                $result .= '<style type="text/css" id="raindrops-embed-css">';
                $result .= "\n<!--/*<![CDATA[*/\n";
                $result .=  $css;
                $result .= "\n/*]]>*/-->\n";
                $result .= "</style>";
                }
                $javascript = get_post_meta($post->ID, 'javascript', true);
                if (!empty($javascript)) {
                $result .= '<script type="text/javascript">';
                $result .= "\n<!--/*<![CDATA[*/\n";
                $result .= $javascript;
                $result .= "\n/*]]>*/-->\n";
                $result .= "</script>";
                }
                $meta = get_post_meta($post->ID, 'meta', true);
                if (!empty($meta)) {
                $result .= $meta;
                }
        }
        echo $result;
    }
    ?>

    最新バージョンワードプレスのカスタムフィールドは、バグがありますので、以下を参照してください。
    http://ja.forums.wordpress.org/topic/11693?replies=4

    使い方としては、上の例だと、カスタムフィールド名を、css javascript,meta
    にすると対応する値がヘッダーに挿入されるというものです。

    トピック投稿者 momo-sophia

    (@momo-sophia)

    >gatespace様
    うまくいきそうです。
    header.phpで生成している場所は削除すればよいのでしょういか。
    metaタグが挿入される場所が異なるのが気になりますが、問題ないのですよね?
    (以前→<link rel=~>の前。プラグインによって挿入されるのは、<link rel=~>の後。)

    >nobita様
    うまくいきそうです。
    やはりmetaタグが挿入される場所が気になります。
    </head>の直前に挿入されました。
    他のmetaタグ(charset、http-equiv等)は、<head>の直後なのですが、気にしなくて大丈夫なのでしょうか?

    add_action("wp_head","my_embed_meta",'90');

    二番目の引数の値を、5とか10とか、変更すると、大雑把に位置を変更できます。

    html的には、キーワードや、概要文のメタタグの出現位置は、charsetなどとは異なり 厳密に決められているわけではないので、問題はないのではないかと思います。

    もし、気になるようでしたら、add_action()を削除して、

    header.phpの必要な位置に、

    <?php
    if( function_exists('my_embed_meta') ){
        my_embed_meta();
    }
    ?>

    と書いてもいいと思います。
    (試していないので、問題があったら知らせてください)

    トピック投稿者 momo-sophia

    (@momo-sophia)

    ご丁寧にありがとうございます。
    header.phpへの挿入で出来そうです。

    少しずれてしまいますが、現在

    ●is_single(投稿ページなら?)
    keywords→カテゴリ、タグの値をセット
    description→文章抜粋

    ●else(固定ページなら?)
    keywords→固定文言
    description→bloginfo(‘description’)

    となっているのを、固定ページについて、
    keywords→カスタムフィールドの値
    description→文章抜粋、但しトップページのみはbloginfo(‘description’)

    としたいのですが、header.phpにて「トップページなら」の制御は可能でしょうか?
    無理なら、descriptionもカスタムフィールドに保有しようと思います。

    is_home(), is_front_page() を調べてみてください

    トピック投稿者 momo-sophia

    (@momo-sophia)

    is_front_page() で実現できました!
    固定ページをトップにしているからですね?
    早いご返答、本当にありがとうございました。

    モデレーター gatespace

    (@gatespace)

    補足ですが、
    プラグインの場合も、nobitaさんが最初に投稿されたコードも
    wp_head というアクションフックを利用しています。
    つまり、 header.php の wp_head() の位置に出力されます。

    keywordsやdescriptionの順番は余り気にしなくても良いような気がしますが。

    トピック投稿者 momo-sophia

    (@momo-sophia)

    なるほど。
    カスタマイズしやすいように作られていますね。
    もっと詳しくなりたいです。

    gatespace様のブログ拝見しました。
    勉強になります!

9件の返信を表示中 - 1 - 9件目 (全9件中)
  • トピック「固定ページのmetaデータ(keywords、description)をページ毎に変更したい」には新たに返信することはできません。