こんにちは、
add_action(アクションフィルタ)を使う場合は、以下のように記述します。
add_action('wp_head', 'myfunc');
function myfunc(){
$description = 'hello world';
echo printf( '<meta content="%1$s" name="description" />', $description );
}
functions.php で、自作テンプレート関数を作成し、テンプレート上に関数を記述する場合は、add_action()は必要ありません。
function myfunc(){
$description = 'hello world';
echo $description;
}
公式テーマの場合は、head要素内に、独自テンプレート関数を置く事は出来ませんので、header領域に、なんか追加する場合は、フィルタを使う方がお勧め
関連
http://tenman.info/labo/snip/archives/4529
個別投稿(ページ)で、カスタムフィールド、keyword,description がある場合は、meta要素を埋め込む例(get_the_generator_xhtmlは、wp_headに読み替えてください)
余談
ヘッダー要素内にタグを書けば、済むことなのに、なんで styleの埋め込みには、
wp_enqueue_style(),scriptなら、wp_enqueue_script() を使ってください みたいな
「超ー ウゼー」事が言われるのか?
ヘッダー要素内には、プラグイン等もスタイルを追加しますし、スクリプトも追加します。
直接書いてしまうと、「依存関係」がコントロールできなくなります。
プラグインのスタイルが、テーマのスタイルの下に書き込まれると、同じ指定がある場合には、プラグインのスタイルが有効になって、テーマのスタイルが崩れる原因になったり、
jQueryのコードを埋め込んだのに、その時点でjQueryが読み込まれずに、「なんか、エラーになっちゃうんですけどー」みたいなことが起きるために、
ここら辺をうまく、プラグイン、テーマ、コアでコラボするために、ちょっと面倒な仕組みがありますので、良く調べておくといいです。
nobitaさんご返答ありがとうございます。
headへの追加はフィルタを使わせていただきます。
関連事項まで答えていただきとても感謝しております。
勉強させていただきます。
しかし少々問題が起こりまして、noticeが出てきてしまいました。
is_single()の画面の時に、descriptionに投稿内容の一部を挿入しようとしているのですがうまく値が取れていないようです。エラーは
Notice:Undefined variable: post in....172
そのあたりの内容が下記です。
}else if(is_single()){
$single_p_cont = strip_tags($post->post_content);
$single_p_cont =mb_substr($single_p_cont, 0, 80)."...";
echo printf( '<meta content="%1$s" name="description" />', $single_p_cont );
}
$postの値が取得できていないということだと思うのですが、
どう書き換えたらよいのでしょうか。
ご指導よろしくお願いいたします。
ーー追記・訂正ーー
また、printfは 出力した文字列の長さを返し訂るように思われる
数字が、descriptionタグの後ろに出てきてしまうのですが、
echo だけでも構わないのでしょうか
よろしくお願いします。
globalキーワードは指定しましたか?
あと、sprintfを調べてみてください。
Daisuke Takahashiさん ご返答ありがとうございます。
globalで呼び出すことができました。
functions.phpでは必要なのですね。
sprintfで文字列が帰ってきました。ありがとうございます。
nobita様 Daisuke Takahashi様
ご指導ありがとうございます。
無事に解決いたしました。