按多个定制字段和按日期排序的WordPress查询

时间:2012-02-23 作者:Uffo

下面是我的问题:

$args = array( 
    \'post_type\' => \'Event\',
    \'posts_per_page\' => 1000,
    \'meta_key\' => \'event_informations_show_on_the_homepage\',
    \'meta_value\' => \'Show on the homepage\',
    \'meta_compare\' => \'==\',
    \'meta_key\' => \'event_informations_date\',
    \'orderby\' => \'meta_value_num\',
    \'order\' => \'ASC\'
);

$loop = new WP_Query( $args );
我想选择所有有自定义字段的帖子event_informations_show_on_the_homepage 和自定义字段的值event_informations_show_on_the_homepage 和按日期排序自定义字段,该字段存储为时间戳,并调用event_informations_date.

我做错了什么?

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

@Uffo我想说您的参数是错误的,应该是这样的:

$args = array(
    \'post_type\' => \'Event\',
    \'posts_per_page\' => 1000,
    \'meta_query\'=> array(
        array(
            \'key\'=>\'event_informations_show_on_the_homepage\',
            \'value\'=> \'Show on the homepage\',
            \'compare\' => \'==\'
        )
    ),
    \'meta_key\'=>\'event_informations_date\',
    \'orderby\'=>\'meta_value_num\', 
    \'order\'=>\'ASC\'
);
按照您的方式,它只是最后一个meta\\u键,将用于过滤查询和排序。我不能百分之百确定这种方法是否有效,但请尝试一下。

希望我能帮上忙。

因此,我认为您需要通过SQL语句过滤组,使其按您想要的方式工作,类似这样的内容:

$args = array(
    \'post_type\' => \'Event\',
    \'posts_per_page\' => 1000,
    \'meta_query\'=> array(
        \'relation\' => \'OR\',
        array(
            \'key\'=>\'event_informations_show_on_the_homepage\',
            \'value\'=> \'Show on the homepage\',
            \'compare\' => \'==\'
        ),
        array(
            \'key\'=>\'event_informations_date\',
        )
    ),
    \'orderby\'=>\'meta_value_num\', 
    \'order\'=>\'ASC\'
);

add_filter(\'posts_orderby\', \'edit_posts_orderby\');

function edit_posts_orderby($orderby_statement) {
    $orderby_statement = "mt1.meta_value+0 ASC";
    return $orderby_statement;
}

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post