• 解決済 ikesu

    (@ikesu)


    投稿(single.php)のサイト名の変更については、前回のトピックで解決しましたが、下記のコードを特定の親カテゴリ(子カテゴリ含む)ときに有効化する方法が分かりませんので教えてください。

    特定カテゴリ(hoge)の時のタイトル
    カスタムフィールド | ◯◯ならサイト名

    特定のカテゴリを除いた時のタイトル
    カスタムフィールド |サイト名

    現在のコード

    function mypace_custom_title( $title ){
      if( is_singular() ){
         $post_id = get_the_ID();
         $my_title = get_post_meta( $post_id, 'st_title', true );
         if( $my_title ){
          $title['title'] = esc_html( $my_title );
         $title['site'] = '◯◯ならサイト名';
          return $title;
        }
      }
      return $title;
    }
    add_filter( 'document_title_parts', 'mypace_custom_title', 10, 2 );

    上記のコードがベースになっていなくても構いません。
    よろしくお願いします。

    • このトピックはikesuが9ヶ月前に変更しました。
    • このトピックはikesuが9ヶ月前に変更しました。
4件の返信を表示中 - 1 - 4件目 (全4件中)
  • ishitaka

    (@ishitaka)

    こんにちは

    in_category() で、現在の投稿が指定カテゴリーを含むかどうか判定できます。

    トピック投稿者 ikesu

    (@ikesu)

    返信ありがとうございます。

    お久しぶりです。
    4年ほど前に、ishitakaさんに教えていただいたコードにin_category()が含まれていましたので、それを参照に数日頑張ってみたのですが、コードの作成方法を理解しておらず、実現に至らなかったため、トピックを作成しました。

    何度もお願いすることになり恐縮ですが、具体的なコードを教えていただけませんでしょうか。

    よろしくお願いします。

    ishitaka

    (@ishitaka)

    こんな感じでしょうか?

    if ( in_category( 'hoge' ) ) {
    	$title['site'] = '◯◯ならサイト名';
    } else {
    	$title['site'] = 'サイト名';
    }
    
    トピック投稿者 ikesu

    (@ikesu)

    お返事ありがとうございます。

    親カテゴリを指定しても子カテゴリには反映しませんでしたので、すべての子カテゴリを指定する下記のコードで実現させることができました。

    function mypace_custom_title( $title ){
      if( is_singular() ){
         $post_id = get_the_ID();
         $my_title = get_post_meta( $post_id, 'カスタムフィールド', true );
      if( $my_title ){
         $title['title'] = esc_html( $my_title );
      if(in_category(array(1,hoge,))){
    	 $title['site'] = 'サイト名';
        } else {
    	$title['site'] = '◯◯ならサイト名';
        }
        return $title;
        }
      }
      return $title;
    }
    add_filter( 'document_title_parts', 'mypace_custom_title', 10, 2 ); 

    ありがとうございます。
    助かりました!

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「titleを変更するカテゴリーを絞りたい」には新たに返信することはできません。