有没有办法排除基于元值的帖子?

时间:2011-06-02 作者:Zach Shallbetter

我需要根据自定义字段类型排除帖子。这可能是一个“遗留”或“去润滑”等领域。我搜索了一个如何做到这一点的例子,但我没有找到任何值得一试的东西。任何帮助都将不胜感激。

<?php
            $software = array(\'post_type\' => \'software\', \'category_name\' => $model);
            query_posts( $software );
            get_template_part( \'loop\', \'software\' );
            wp_reset_query();
            ?>

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

我以前也遇到过同样的问题。我试着用meta_query 参数,但未成功。我尝试使用的代码如下所示:

$software = array(
    \'post_type\' => \'software\',
    \'meta_query\' => array(\'key\' => \'legacy\', \'value\' => 1, \'compare\' => \'!=\')
);
query_posts($software);
但问题是,这个查询还排除了没有该元键的帖子。

所以我不得不使用一个自定义查询,它可以获取所有帖子legacy 元键,然后排除它们:

global $wpdb;
$legacy = $wpdb->get_col("SELECT ID FROM $wpdb->postmeta WHERE meta_key=\'legacy\'");

$software = array(
    \'post_type\' => \'software\',
    \'post__not_in\' => $legacy
);
query_posts($software);
希望这能帮助你。

结束

相关推荐