こんにちは。
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
にすると対応する値がヘッダーに挿入されるというものです。
>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();
}
?>
と書いてもいいと思います。
(試していないので、問題があったら知らせてください)
ご丁寧にありがとうございます。
header.phpへの挿入で出来そうです。
少しずれてしまいますが、現在
●is_single(投稿ページなら?)
keywords→カテゴリ、タグの値をセット
description→文章抜粋
●else(固定ページなら?)
keywords→固定文言
description→bloginfo(‘description’)
となっているのを、固定ページについて、
keywords→カスタムフィールドの値
description→文章抜粋、但しトップページのみはbloginfo(‘description’)
としたいのですが、header.phpにて「トップページなら」の制御は可能でしょうか?
無理なら、descriptionもカスタムフィールドに保有しようと思います。
is_home(), is_front_page() を調べてみてください
is_front_page() で実現できました!
固定ページをトップにしているからですね?
早いご返答、本当にありがとうございました。
補足ですが、
プラグインの場合も、nobitaさんが最初に投稿されたコードも
wp_head というアクションフックを利用しています。
つまり、 header.php の wp_head() の位置に出力されます。
keywordsやdescriptionの順番は余り気にしなくても良いような気がしますが。
なるほど。
カスタマイズしやすいように作られていますね。
もっと詳しくなりたいです。
gatespace様のブログ拝見しました。
勉強になります!