サポート » プラグイン » Advanced Custom Fieldsの条件分岐で記事一覧に表示しない

  • Advanced Custom Fieldsにて「表示、非表示」のラジオボタンを作成し、以下のように「非表示にチェックが入っている記事は記事一覧に表示しない」と条件分岐しているのですが、これでは「表示はされないけど記事は存在する」と判断されているのか、指定の表示件数を越えるとページャーが表示されて空の一覧ページが生成されてしまいます。

    カスタムフィールドの設定==
    フィールド名 : list
    display : 表示する
    hidden : 表示しない
    ====================

    <?php if( get_field('list') == "display"): ?>
    記事タイトル
    <?php endif; ?>

    記事そのものは非公開とせず、一覧のみ表示しないようにするにはどのように記述すれば良いでしょうか?

    どうぞよろしくお願いいたします。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • こんにちは

    検索条件 (クエリ) はどのようなコードでしょうか?メインクエリでしょうか?
    検索条件で表示する投稿を指定 (meta_query パラメータ) するのでは問題があるのでしょうか?

    トピック投稿者 qawp

    (@qawp)

    ishitakaさんいつもありがとうございます。

    通常のメインクエリでパラメーターの設定などはございません。

    <?php if(have_posts()):while(have_posts()):the_post(); ?>

    > 投稿を指定 (meta_query パラメータ) するのでは問題があるのでしょうか?

    問題ございません。
    以下を参考に試してみたのですが、どうもうまくいかず…。

    https://meshikui.com/2019/09/25/2133/

    どうぞよろしくお願いいたします。

    メインクエリであれば pre_get_posts フックで下記のようにするのはどうでしょうか。

    function my_pre_get_posts( $query ) {
    	if ( ! is_admin() && $query->is_main_query() ) {
    		$query->set( 'meta_query', array( array(
    			'key'     => 'list',
    			'value'   => 'display',
    			'compare' => '=',
    		) ) );
    	}
    }
    add_action( 'pre_get_posts', 'my_pre_get_posts' );

    訂正です。

    記事そのものは非公開とせず、一覧のみ表示しないようにするにはどのように記述すれば良いでしょうか?

    というのを見過ごしていました。

    function my_pre_get_posts( $query ) {
    	if ( ! is_admin() && $query->is_main_query() ) {
    		if ( is_archive() ) {
    				$query->set( 'meta_query', array( array(
    					'key'     => 'list',
    					'value'   => 'display',
    					'compare' => '=',
    				) ) );
    		}
    	}
    }
    add_action( 'pre_get_posts', 'my_pre_get_posts' );

    ですね。m(__)m

    トピック投稿者 qawp

    (@qawp)

    ishitakaさんありがとうございます。
    試してみます。
    取り急ぎお礼まで。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「Advanced Custom Fieldsの条件分岐で記事一覧に表示しない」には新たに返信することはできません。