如何使用META_QUERY检查元字段是否设置了某些内容?

时间:2015-12-16 作者:AJD

(Wordpress 4.3.1)

我正在运行一个自定义循环,只想包含将文件上载到自定义字段的帖子:audio\\u file。

我在网络上尝试了许多解决方案,但迄今为止没有任何效果。

我可以使用meta\\u query检查键是否有值吗?

以下是我当前的尝试:

 global $post;      

 $args = array(
    \'post_type\'      => array (
                        \'podcast\',
                        \'event\',
                        ),
    \'posts_per_page\' => 10,
    \'post_status\'    => \'publish\',     
    \'paged\'          => get_query_var( \'paged\' ),
    \'meta_query\'     => array (
                            \'key\' => \'audio_file\',
                            \'value\' => \'\' ,
                            \'compare\' => \'!=\',
                            //\'type\'    => \'date\',
                             ),
    );

    global $wp_query;

    $wp_query = new WP_Query( $args );

    if ( have_posts() ) { while ( have_posts() ) { the_post(); 
此处的预期结果是显示“audio\\u file”不为空的帖子。

谢谢(Wordpress 4.3.1)

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

我想出来了,meta\\u查询必须是一个数组within 用于使用“关系”进行高级查询的数组。

meta_query => array (
    array (
        //\'relation\' => \'OR\',
        \'key\' => \'audio_file\', //The field to check.
        \'value\' => \'\', //The value of the field.
        \'compare\' => \'!=\', //Conditional statement used on the value.
    ),  
),
条件“!=”如果文件已上载,“不等于”(null)则返回true。

SO网友:s_ha_dum

我可以使用meta\\u query检查键是否有值吗?

有价值吗?Use EXISTS

\'meta_query\'     => array (
                        \'key\' => \'audio_file\',
                        \'value\' => \'\' ,
                        \'compare\' => \'EXISTS\',
                        \'type\'    => \'date\',
                         ),
);
我不知道为什么你上传的文件会是date 尽管如此,请键入。我想会的binary 或者也许char

SO网友:Timo L

这可能对某人有所帮助。这将查找元值(如果存在且不为空)。

\'meta_query\' => [
    \'relation\' => \'AND\',
    [
        \'key\'     => \'your_key\',
        \'compare\' => \'EXISTS\',
    ],
    // Don\'t want empty values
    [
        \'key\'     => \'your_key\',
        \'value\'   => \'\',
        \'compare\' => \'!=\',
    ],
],

SO网友:Showhan Ahmed

看来type

此代码现在不起作用。

\'meta_query\' => array(
    \'relation\' => \'AND\',
    array(
        \'key\'     => \'meta_key\',
        \'value\'   => \'\',
        \'compare\' => \'!=\',
    ),
),
这个有效。

\'meta_query\' => array(
    \'relation\' => \'AND\',
    array(
        \'key\'     => \'meta_key\',
        \'value\'   => \'\',
        \'compare\' => \'!=\',
        \'type\' => \'NUMERIC\'
    ),
),
唯一的区别是type

相关推荐