是否将具有特定元数据的帖子从搜索中排除?

时间:2019-04-12 作者:jockebq

我创建了如下searchfunction:

function search_data_fetch() {
    $search_query = new WP_Query( array( \'posts_per_page\' => -1, \'s\' => esc_attr( $_POST[\'keyword\'] ), \'post_type\' => \'visitor\' ) );
    if ( $search_query->have_posts() ) {
        while( $search_query->have_posts() ) {
          $search_query->the_post();
          ?>

              <div class="module">
                    <span class="infos-name"><?php the_title(); ?></span>
                    <span class="infos-nick"><?php echo the_content(); ?></span>
              </div>

        <?php
        }
        wp_reset_postdata();
    }
    else {
        ?>
              <div id="nothing_found">
                <p>Nothing found</p>
              </div>
    <?php
    }
  die();
}
add_action(\'wp_ajax_data_fetch\', \'search_data_fetch\');
add_action(\'wp_ajax_nopriv_data_fetch\', \'search_data_fetch\');
以及我使用自定义帖子类型搜索的帖子visitor 都有一个自定义元数据字段,称为visitor-hide 当设置为yes 我希望它在搜索中完全不可见。那么,如何排除包含元数据的帖子呢visitor-hide 设置为yes 从搜索结果中,同时显示具有此帖子类型的其他所有帖子。

非常感谢。

1 个回复
SO网友:nmr

您需要一个附加参数meta_queryWP_Query 参数。

$query_args = [
    \'posts_per_page\' => -1, 
    \'s\' => esc_attr( $_POST[\'keyword\'] ),
    \'post_type\'  => \'visitor\',

    \'meta_query\' => [
        \'key\'     => \'visitor-hide\',
        \'value\'   => \'yes\',
        \'compare\' => \'!=\',
    ]
]
或者在类似您的情况下(按单个自定义字段查询):

$query_args = [
    \'posts_per_page\' => -1, 
    \'s\' => esc_attr( $_POST[\'keyword\'] ),
    \'post_type\'  => \'visitor\',

    \'key\'     => \'visitor-hide\',
    \'value\'   => \'yes\',
    \'compare\' => \'!=\',
]
有关自定义字段参数的详细信息,请参见WP_Query here.

相关推荐

如何在PHP标记内使用带有do_Action函数的参数

我正在使用一个WordPress插件,它允许集成操作将其集成到一个主题中。使用GeneratePress的元素特性,我将动作添加为挂钩。目前我使用的代码是:<?php do_action(webcomic_integrate_landing_page); ?> 操作本身有一些布尔参数列在this website. 我最感兴趣的是webcomic_meta.如何将webcomic\\u元参数(设置为false)合并到PHP标记中以运行此操作?