サポート » 使い方全般 » カスタム投稿でのカスタムフィールドをタイトルに表示

  • 解決済 suzuki_macboy

    (@suzuki_macboy)


    お世話になります。

    カスタム投稿(Custom Post Type UI)でデフォルトのタイトルを表示しないように設定し、
    カスタムフィールド(Advanced Custom Fields)を使い項目を入力して公開した場合、
    デフォルトのタイトルが非表示で空欄なので、投稿一覧ページにはタイトルが「自動下書き」になっている状況です。

    これを、カスタムフィールドで作成したタイトル項目を投稿一覧ページのタイトルに設定したいです。

    どなたか、コードのご教授願います。

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • 通常タイトルが空白の場合はフロントエンドでは空白になり、管理画面上でも「自動下書き」ではなく「タイトルなし」になりますが、save_postなどの使い方によっては「自動下書き」になる場合もあるので、どこかの記述方法に問題があると思います。

    とりあえずは、これでどうでしょう?ヘッダーのタイトルタグは適当に直してください。

    function my_title( $title ) {
    global $post;
    	if( ! is_admin() && get_post_type() === '投稿タイプ' ) {
    		$meta = get_post_meta( $post->ID, 'カスタムフィールド', true );
    		$title = str_replace( $title, $meta, $title );
    	}
    	return $title;
    }
    add_filter( 'the_title', 'my_title' );
    
    function my_header_title( $title ) {
    global $post;
    	if( get_post_type() === '投稿タイプ' ) {
    		$meta = get_post_meta( $post->ID, 'カスタムフィールド', true );
    		$site_name = get_bloginfo( 'name' );
    		return  $meta.' - '.$site_name;
    	}
    }
    add_filter( 'pre_get_document_title', 'my_header_title' );
    • この返信は4年、 6ヶ月前にmanboが編集しました。
    • この返信は4年、 6ヶ月前にmanboが編集しました。
    トピック投稿者 suzuki_macboy

    (@suzuki_macboy)

    manbo 様

    回答ありがとうございます。

    fuction.phpに記述してみたのですが反映されず、「自動下書き」のままでした。

    また、下記のものも試してみましたが

    「自動下書きat〇〇〇〇〇」というように表示がされました。

    あとは自動下書きだけ取れればいいのですが

    function my_auto_title($title_message){
     
        global $post;
     
        /* ポストタイプがカスタムかどうかチェック */
        if( $post->post_type == 'lessons' ){
            $lesson_place = get_post_custom_values('lesson_place');
            if( $lesson_place  ){
                $title_message = $title_message . ' at ';
                $title_message = $title_message . $lesson_place[0];
            }
     
        }
     
        return $title_message;
     
    }
     
    add_filter('single_post_title', 'my_auto_title');
    add_filter('the_title', 'my_auto_title');

    だったらこうではないですか?

    function my_auto_title($title_message){
     
        global $post;
     
        /* ポストタイプがカスタムかどうかチェック */
        if( $post->post_type == 'lessons' ){
            $lesson_place = get_post_custom_values('lesson_place');
            if( $lesson_place  ){
                //$title_message = $title_message . ' at ';
                //$title_message = $title_message . $lesson_place[0];
                  $title_message = ' at ' . $lesson_place[0];
            }
     
        }
     
        return $title_message;
     
    }
     
    add_filter('single_post_title', 'my_auto_title');
    add_filter('the_title', 'my_auto_title');

    こんな方法だとどうですか?

    function my_update_post_title( $data ) {
    	if( $data['post_type'] === 'lessons' && $data['post_title'] === '自動下書き' );
    		$data['post_title'] = get_post_custom_values( 'lesson_place' )[0]. ' at ';
    	return $data;
    }
    add_filter( 'wp_insert_post_data', 'my_update_post_title' );
    トピック投稿者 suzuki_macboy

    (@suzuki_macboy)

    manbo 様

    上記の方法で表示がうまくいきました。

    お手数をおかけして申し訳ありませんでした。

    ありがとうございました!

    上記とはどれのことでしょうか?
    あと、解決したなら解決済みにしてください。

    トピック投稿者 suzuki_macboy

    (@suzuki_macboy)

    manbo 様

    申し訳ありません。
    コチラです。

    function my_auto_title($title_message){
     
        global $post;
     
        /* ポストタイプがカスタムかどうかチェック */
        if( $post->post_type == 'lessons' ){
            $lesson_place = get_post_custom_values('lesson_place');
            if( $lesson_place  ){
                //$title_message = $title_message . ' at ';
                //$title_message = $title_message . $lesson_place[0];
                  $title_message = ' at ' . $lesson_place[0];
            }
     
        }
     
        return $title_message;
     
    }
     
    add_filter('single_post_title', 'my_auto_title');
    add_filter('the_title', 'my_auto_title');
7件の返信を表示中 - 1 - 7件目 (全7件中)
  • トピック「カスタム投稿でのカスタムフィールドをタイトルに表示」には新たに返信することはできません。