如何显示未选中复选框的帖子

时间:2022-01-16 作者:Naren Verma

我有自定义的帖子类型,并创建了一个名为is_featured.我必须显示选中复选框的帖子,所以我使用了下面的代码,它正在工作

function isFeatured($atts){
global $post;
 $args =array(
      \'post_type\' => \'postname\',
      \'post_status\' => \'publish\',
      \'posts_per_page\' => 30,
      \'meta_key\' => \'isfeatured\',
      \'meta_value\' => 1,
      \'order\'      => \'DESC\',
      \'orderby\' => \'post_date\',
    );

$related = new WP_Query($args);
if( $related->have_posts() ) { 
$data = \'<ul>\';
 while( $related->have_posts() ) { 
        $related->the_post(); 
        $data.= \'<li></li>\';
                }
     $data .=\'</ul>\';
    return $data;
    wp_reset_postdata();
}

}
add_shortcode( \'is-featured\', \'isFeatured\');
现在,我的问题是,如何显示未选中复选框的帖子?

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

如何显示未选中复选框的帖子?

我不知道当复选框未选中(或者可能根本没有设置元)时,元值设置为什么,但您可以使用meta_query 用于搜索未设置meta(尚未添加到帖子)或值为空的帖子的参数,例如,在您的情况下,“;“空”;可能意味着元值是0 (零)或无(即空字符串)。

因此,在下面的示例中,我使用\'value\' => [ 0, \'\' ] 然后自动设置compareIN 因为我们正在传递一个值数组。

$args = array(
    // your other args here, but without the meta_key and meta_value

    \'meta_query\' => array(
        \'relation\' => \'OR\',
        // Search for posts where the meta does not exist.
        array(
            \'key\'     => \'isfeatured\',
            \'compare\' => \'NOT EXISTS\',
        ),
        // Search for posts where the meta value is empty.
        array(
            \'key\'   => \'isfeatured\',
            \'value\' => [ 0, \'\' ],
        ),
    ),
);
如果你想使用meta_query 要检索选中复选框(元值为1)的帖子,请执行以下操作:

$args = array(
    // your other args here, but without the meta_key and meta_value

    \'meta_query\' => array(
        // Search for posts where the meta value is exactly 1 (one).
        array(
            \'key\'   => \'isfeatured\',
            \'value\' => 1,
        ),
    ),
);
检查this 有关元查询参数的更多详细信息,请参阅WP_Query.

其他注意事项您的代码中有一个错误-您需要切换return $data;wp_reset_postdata();, i、 e.电话wp_reset_postdata() 第一

Shortcode应该总是返回一些东西,就像过滤器挂钩一样,如the_content, 所以我要补充return \'\'; 在快捷码函数的末尾。:)

众所周知,当网站变大时(许多帖子、用户、插件、选项、访问者等),像上面这样的元查询会导致性能问题,所以正如我在评论中所说的,你应该考虑使用分类法/术语来标记你想成为的帖子;特色产品;。

毕竟,分类法是用来将事物分组在一起的,分类法术语不必是诸如FeaturedFoo Bar 相反,他们可以01 表示布尔值。