web-dev-qa-db-ja.com

Wp_titleフィルタを使ってタイトルを設定する

私は非常に単純なことをしたいのですが、私はWordPressのどこでこれを実行する必要があるのか​​見つけて行き詰まっています。

私のWordPressサイトの誰かがブログ投稿ページにアクセスしたとき、私はブログ投稿のタイトルをそのページのタイトルに置き換えたいと思います。

私はwp_titleフィルタフックでこれができると思いますか?

私は次のようなことについて考えました: -

add_filter('wp_title', 'filter_pagetitle');

function filter_pagetitle($title) {
 $the_post_id    = get_the_ID();
 $the_post_data  = get_post($the_post_id);
 $title = $the_post_data->post_title;

 return $title;
}

しかし、これをどこに置くかについては少し迷っています。これをloop-single.phpにして単一ページにのみ適用する必要があると思いましたが、これは関数内である必要があることもわかりました。私のテーマ内のPHP?

どんな助けでも感謝されるでしょう:-)

リッチ

2
Richard Bagshaw

Wp_title()は通常あなたのテーマのheader.phpファイルから呼ばれるので、それはあなたのWordPressの各ページで実行されます(通常フロントエンド)。そのため、テーマのfunctions.phpファイルにfilterフックとfunctionを置き、タイトルを変更する前にそれがブログ投稿かどうかを確認してください。このようなもの:

add_filter('wp_title', 'filter_pagetitle');
function filter_pagetitle($title) {
    //check if its a blog post
    if (!is_single())
        return $title;

    //if you get here then its a blog post so change the title
    global $wp_query;
    if (isset($wp_query->post->post_title)){
        return $wp_query->post->post_title;
    }

    //if wordpress can't find the title return the default
    return $title;
}
3
Bainternet