是否可以通过WP_QUERY查询自定义元数据

时间:2012-10-04 作者:yoxalld

好的,我的问题有点复杂,所以我会试着给出一个一般性的解释,然后再深入细节。

我正在运行WordPress 3.4.2,我正在使用WCK帖子类型创建器和WCK自定义字段创建器创建我的自定义帖子类型和自定义字段。

我正在尝试从自定义帖子类型“business”中查询附加了自定义字段“special”的帖子。我的问题是,我想更具体一些,只获取特定类型的特殊(在自定义字段创建者插件中设置),但我不知道是否可以/如何使用WP\\u query的meta\\u query参数来实现这一点。

我现在拥有的内容将从post类型中提取post,但我必须使用get\\u post\\u meta()来查找自定义字段,并循环通过这些字段进行测试。以下是我现在拥有的:

<?php   
$args = array(
    \'post_type\' => \'business\',
    \'meta_query\'  => array(
                array(
                    \'key\' => \'specials\'
                )
            )

    );
$loop = new WP_Query( $args );

while ( $loop->have_posts() ) : $loop->the_post(); 

$specials = get_post_meta( $post->ID, \'specials\'); 

//Loop through array    of specials
foreach( $specials as $special){

    //Loop through each special
    foreach($special as $individual){

    //Check to see is there is a drink special
    if ($individual [\'type-of-special\'] == \'Drink\' ) { 
        //Do stuff          

    }//indivdual
    }//special
} //specials

endwhile; ?>
因此,我在这里所做的是拉动帖子,然后为每个帖子获取“specials”元数据,并在不同的数组中循环,以检查它是什么类型的特殊,然后显示内容,如果它是正确类型的特殊。有没有办法在我的WP\\u查询中更具体一些,以便我只返回特定类型的帖子?

我似乎遇到的问题是,我不知道如何深入挖掘多维数组,“specials”自定义字段必须使用WP\\u query的meta\\u query参数检查值。

如果我在foreach中打印$special($special作为$special),我会得到:

Array
(
    [0] => Array
        (
            [type-of-special] => Drink
            [name-of-special] => Pumpkin Latte
            [price] => 2.00
            [day-of-the-week] => Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday
        )
)
所以我不知道如何通过meta\\u查询访问[特殊类型]键来检查其值。

我知道这是很多信息,我真的很感谢任何反馈和帮助来解决这个问题。如果您需要更多信息或澄清,请让我知道。再次感谢!

2 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

通常,您只需指定meta\\u值,例如:

 $args = array(
     \'post_type\' => \'business\',
     \'meta_query\'  => array(
            array(
                \'key\' => \'specials\',
                \'value\' => \'these are not the specials you are looking for - Obi Wan Kenobi\'
            )
        )

);
然而,因为post meta实际上是一个数据结构,一个序列化的PHP数组/对象,所以这是不可能的。

您可以在此处阅读更多内容:

http://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_Parameters

SO网友:Sjaak Wish

    $args = array(
        \'post_type\' => "your_post_type",
        \'meta_key\' => \'name_of_the_meta_key\',
        \'meta_compare\' => \'=\', // see documentation for compare options
        \'meta_value \' => \'the_value_you_want to search\'
    );

    $posts = new WP_Query( $args );

https://developer.wordpress.org/reference/classes/wp_query/#custom-field-post-meta-parameters

如果需要,请搜索不为空的项目

    $args = array(
        \'post_type\' => "your_post_type",
        \'meta_key\' => \'name_of_the_meta_key\',
        \'meta_compare\' => \'!=\',
        \'meta_value \' => \'\'
    );

    $posts = new WP_Query( $args );

结束