Order by empty custom field

时间:2018-06-04 作者:Display Name

我按自定义字段排序帖子faq-order. 这对我来说很有用:

$faqArgs = array(
    \'post_type\' => \'faq\',
    \'meta_key\' => \'faq-order\',
    \'order\' => \'ASC\',
    \'orderby\' => \'meta_value_num\',
);

$faq = new WP_Query($faqArgs);
但如果这些字段faq-order 为空。我怎样才能修复它?如果该字段为空,如何使用默认值(例如0)?

1 个回复
SO网友:Krzysiek Dróżdż

有两种解决方案:

1。确保所有帖子都设置了该字段

您可以轻松做到这一点-只需使用save_post 钩住并将其设置为默认值。(您还应该为尚未设置该字段的现有帖子添加默认值。)

2。使用稍加修改的查询

$faqArgs = array(
    \'post_type\' => \'faq\',
    \'meta_key\' => \'faq-order\',
    \'order\' => \'ASC\',
    \'orderby\' => \'meta_value_num\',
    \'meta_query\' => array(
        \'relation\' => \'OR\',
        array(
            \'key\' => \'faq-order\', 
            \'value\' => \'bug #23268\', 
            \'compare\' => \'NOT EXISTS\'
        )
    )
);
$faq = new WP_Query($faqArgs);

结束

相关推荐

为什么WP_QUERY不显示预期数据?

我有一个帖子过期的网站。目前我手动执行此操作,但我更喜欢自动执行此操作。几个月来,我一直在努力解决这个问题,我想我终于用wp\\u query()找到了解决方案,但它并没有显示预期的结果,而是显示了最近发布的10篇文章。这是当前代码:function expire_posts() { $post_id = get_the_ID(); $getdate = get_post_meta($post_id, \'Expiry Date\', true); $exp