按元值对自定义发布类型进行排序,但设置为0时不会显示

时间:2017-09-25 作者:lukgoh

我正在尝试按自定义元数据对帖子进行排序。自定义元是forum\\u order。当前仅当值为负或大于0时,才会显示帖子。我希望默认值为0,因此除非用户设置它,否则它将按字母顺序显示。

$forum_category_query = new WP_Query( 
    array( 
        \'post_type\' => \'forums\', 
        \'orderby\' => \'meta_value_num\', 
        \'meta_key\'  => \'forum_order\', 
        \'order\' => \'ASC\', 
        \'meta_query\'  => array( 
            array( 
                \'key\' => \'forum_type\', 
                \'value\' => \'category\'
            ) 
        ) 
    ) 
);

while ( $forum_category_query->have_posts() ) : $forum_category_query->the_post();
我花了几个小时在谷歌和这里搜索,但我太困惑了!

2 个回复
SO网友:lukgoh

已解决:

我在保存元数据的函数中有这个(像个白痴!!)

if ( !$value ) delete_post_meta( $post->ID, $key ); // Delete if blank
因此,如果设置为0,则不会保存元数据。

我将其更改为:

if ( !$value ) add_post_meta( $post->ID, $key, \'0\' ); // add 0 if blank
解决起来很简单。。。在几个小时的痛苦之后。

SO网友:mmm

尝试此操作以进行双重排序
打开forum_order 第一次和通过title 如果forum_order 值相同

$forum_category_query = new WP_Query( 
    array( 
        \'post_type\' => \'forums\',
        \'meta_key\'  => \'forum_order\', 
        "orderby" => [
            "meta_value_num" => "ASC",
            "title" => "ASC",
        ],
        \'meta_query\'  => array( 
            array( 
                \'key\' => \'forum_type\', 
                \'value\' => \'category\'
            ) 
        ) 
    ) 
);

结束

相关推荐