web-dev-qa-db-ja.com

Header.phpで指定された<title>タグを上書きする方法はありますか?

まず、これはSEOの質問でもなく、サイト全体でタイトルタグを変更することに関する質問でもありません。あなたが私の質問をグーグルするならば、これらはあなたが見るすべての答えです。

それで、私たち自身のテーマを持ち、header.phpを完全にコントロールすることができます。タイトルの設定方法はわかっています。現在それはこのように見えます:

<head>
    <title><?php wp_title(' | ', true, 'right'); bloginfo('name'); ?></title>
etc...

いや、問題はこれです。ほとんどのページで 欲しい /のようにタイトルを表示します。ある特定のカスタム投稿タイプ(およびその関連テンプレート)について、CPTのタイトルが一般公開されるべきではないことを認識しただけです。管理者専用です。奇妙な、しかしそこに行きます。テンプレートのH1、コンテンツなどのどこにも表示されません。

しかし、それはタイトルに現れています。

理想的には、テンプレートの中からheader.phpのタイトルを上書きして、この特定のページのセットに対してだけ別のタイトルを指定する方法が欲しいです。それは可能ですか?

3
hawbsl

まず、<title>を次のように変更しましょう。

<title><?php wp_title(' | ', true, 'right'); ?></title>

その中のタイトル文字列に追加することはそれほど将来的ではないので、代わりにタイトルを変更するためにフィルタを使うのが最善です。それでは、代わりにad(functions.php)を見てみましょう。

add_filter('wp_title', 'my_custom_title');
function my_custom_title( $title )
{
    // Return my custom title
    return sprintf("%s %s", $title, get_bloginfo('name'));
}

それからあなたがしたいことをするためにこの便利な小さなタイトルフィルタを拡張しましょう:

add_filter('wp_title', 'my_custom_title');
function my_custom_title( $title )
{
    if( is_singular("your_post_type"))
    {
        return ""; // Return empty
    }
    // Return my custom title
    return sprintf("%s %s", $title, get_bloginfo('name'));
}
4
Shawn Wernig

あなたはタイトルを除外したいかもしれません。

add_filter( 'wp_title', 'wpse179527_wp_title' );
function wpse179527_wp_title( $title ) {
  global $post;
  if ( is_single() && 'custom-post' == get_post_type( $post ) )
    return '';
  return $title;
}
2