显示查询 meta_key_value 包括空值

show query meta_key_value including null value

我正在尝试在 WordPress 中执行一个按自定义字段的 meta_value_num 排序的简单查询,问题是并非所有输入都有一个值,所以它给了我一个空值,但它没有在查询中显示得很好,它只显示有价值的,我有这个代码

  <ul class="post">
                <?php $paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
                $args = array(
                    'post_type'   => 'post',
                    'paged'       => $paged,
                    'meta_key'    => 'votes_count', 
                    'orderby'     => 'meta_value_num', 
                    'order'       => 'DESC',
                    'post_status' => 'publish'
                ); 
                $the_query = new WP_Query( $args );
                if ( $the_query->have_posts() ) :
                    while ( $the_query->have_posts() ) : $the_query->the_post();
                        get_template_part( 'public/partials/template/loop' );
                    endwhile; ?> 
                    <li class="numeration">
                        <div class="paginavi">
                             <?php YESPLEASE_Add_Theme_Support::yesplease_pagination(); ?>  
                        </div>
                    </li>
                <?php endif;?>                  
            </ul>

它只显示有价值的内容,因为这正是您要求它执行的操作。

我能想到的就是让它成为管理面板中的必填字段,或者找到其他方法将其包含在 post 对象中,例如使用 ACF。

ACF 是 最强大的插件,主题是添加易于访问的自定义字段 post 类型,具有广泛且易于阅读的文档。通过使用 ACF,您可以在 post 编辑屏幕中将其设置为必需值,或者您可以将其默认为实际值,例如 0 而不是 NULL。

您可以使用 meta_query 试试下面的代码。

$args = array(
    'post_type'   => 'post',
    'paged'       => $paged,
    'meta_key'    => 'votes_count', 
    'orderby'     => 'meta_value_num', 
    'order'       => 'DESC',
    'post_status' => 'publish',
    'meta_query' => array(
        array(
            'key' => 'votes_count',
            'value'   => array(''),
            'compare' => 'NOT IN'
        )
    )
);