web-dev-qa-db-ja.com

add_actionとwp_headはheadセッションに内容を表示しません

私は大きな問題を抱えています。 Wordpressのページではog metaタグを生成する関数を使っています。ヘッド部にメタを生成したものを「追加」したい。だから、私はこのコードを書く:

add_action('wp_head', '_set_meta_tag');
function _set_meta_tag()
{
    global $nome;
    global $descr;
    global $file;
    global $path_meta;

    $output = "";
    $output .= '<meta property="og:title" content="'.$nome.'" />';
    $output .= '<meta property="og:type" content="article" />';
    $output .= '<meta property="og:image" content="'; $output .= get_bloginfo('template_url'); $output .= '/includes/img/immagini_evento/'.$file.'" />';
    $output .= '<meta property="og:url" content="'.$path_meta.'" />';
    $output .= '<meta property="og:description" content="'.truncate(htmlentities($descr),200).'" />';
    $output .= '<meta property="og:site_name" content="'; $output .= get_bloginfo('name'); $output .='" />';

    echo $output;}

add_action('wp_head', '_set_meta_tag');$outputを表示しません。どうして?

私はまた単純な「こんにちは世界」を反映することを証明したが、何も起こらなかった!

2
apanzett

そのコードはwp_headフックが起動する前に実行されなければ何も起こらないでしょう、そしてmu-pluginファイルでテストされるときそれは動作します。

おそらくほとんどの場合、 get_header の後のテーマテンプレートファイル内から、この関数を手遅れにフックしようとしているのではないでしょうか。そのコードをテーマのfunctions.phpまたは(mu-)プラグインファイルに入れてください。少なくとも内容を反映している限りはうまくいきます。他のバグについては分析しませんでした。

2
s_ha_dum

私はこれと同じ問題を抱えていました。私は自分のフックを作ることで問題を解決しました。

これは私のheader.phpファイルにあります。私のフックはwp_head()の前に置かれています

<?php my_doc_head(); ?>
<?php wp_head(); ?>
</head>

このフックとフックに追加されたコールバック関数は私のfunction.phpで定義されています。

function my_doc_head() {
    do_action('my_doc_head');
}

add_action('my_doc_head','my_seo_meta');
function my_seo_meta() {
    global $wp_query;
    $postid = $wp_query->post->ID;
    //insert whatever code to build $output 
    echo $output;
    wp_reset_query();
}
0
Gigi Gerow