Query Posts by Custom Field

时间:2015-08-01 作者:Jonathan

我希望通过我在页面上创建的自定义字段查询我的帖子。但自定义字段是一个值数组。所以自定义字段“country”可以如下所示

country => usa,africa,united kingdom,poland
让我困惑的是如何使用自定义字段来查询帖子,该字段是一个用分隔的数组\',\'?

我在这里尝试了很多解决方案,但都没有成功。

如有任何建议,将不胜感激!

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

您可以使用WP Query 具有meta_query 参数如下。

$args = array (
    \'post_type\'              => array( \'post\' ),  // YOUR POST TYPE
    \'meta_query\'             => array(
        array(
            \'key\'       => \'country\',  
            \'value\'     => $your_country,  // THE COUNTRY TO SEARCH
            \'compare\'   => \'LIKE\',  // TO SEARCH THIS COUNTRY IN YOUR COMMA SEPERATED STRING
            \'type\'      => \'CHAR\',
        ),
    ),
);

// The Query
$query = new WP_Query( $args );
我已经测试了这个查询。工作完美。希望这对你也有用。

Edit:

对于多个国家,您可以使用以下方法。

$countries_to_search = \'usa,africa,poland\'; // YOUR COMMA SEPARATED STRING
$countries = explode( \',\', $countries_to_search ); // CONVERT INTO ARRAY OF COUNTRIES
$meta_array = array();
$meta_array[\'relation\'] = \'AND\';  // DECLARE RELATION --> YOU CAN USE \'OR\' AS WELL  

foreach($countries as $country){  // CREATE QUERY FOR EACH COUNTRY IN ARRAY

    $meta_array[] =  array(
        \'key\'       => \'country\',  
        \'value\'     => $country,  // THE COUNTRY TO SEARCH
        \'compare\'   => \'LIKE\',  // TO SEARCH THIS COUNTRY IN YOUR COMMA SEPERATED STRING
        \'type\'      => \'CHAR\',
    );

}

$args = array (
        \'post_type\'     => array( \'post\' ),  // YOUR POST TYPE
        \'meta_query\'    => $meta_array,  // ARRAY CONTAINING META QUERY
        );

// The Query
$query = new WP_Query( $args );

结束

相关推荐

未维护PRE_GET_POSTS中的查询变量更改

我正在创建一个插件,添加一个自定义提要。我正在使用pre_get_posts 过滤器以更改posts_per_page 将var查询到-1(以获取自定义帖子类型的所有项目)。但是,如果我将$wp_query 在渲染函数中,posts_per_page 保持默认值。我也测试了改变posts_per_rss 到-1,我确实看到了在查询中所做的更改(当然,它对生成的帖子没有任何影响)。我还尝试将主题更改为默认主题并进行测试,但结果相同。谁能解释一下为什么我不能改变posts_per_page 查询变量?defi