在Array中使用自定义字段值查询帖子

时间:2013-12-26 09:38:41

标签: php arrays wordpress

我的自定义字段vardump()用于具有良好值(12)的帖子是:

 Custom_field = array(1) { [0]=> int(12) }

我的查询的参数是:

$artistArg = array(
        'numberposts' => -1,
        'category_name' => 'oeuvres',
        'meta_query' => array(
            array(
                'key' => 'Custom_field',
                'compare' => 'EXISTS',
                'value' => array(12,29,34)
            )
        )

    );

它不起作用...如果我从args中删除它返回所有帖子的值,但是当我传递它的值时它什么也没有返回,我试图将比较改为“=”或“IN”也..我想我在这里做错了...(我也尝试过“非阵列”自定义字段,一切正常......) 谢谢

编辑: 由于我现在没有找到解决方案,我只是这样做:

<?php
//Get the value
$authorId = get_the_ID();
//query the post with the good meta_key
$artistArg = array(
        'numberposts' => -1,
        'category_name' => 'oeuvres',
        'meta_query' => array(
            array(
                'key' => 'artiste'
            )
        )

    );
//In the query I just filter the results with the given array of the custom field...
$artDisplay = new WP_Query( $artistArg );

            // The Loop
            if ( $artDisplay->have_posts() ) {
                    echo '<h2>Art: </h2><ul id="discover">';
                while ( $artDisplay->have_posts() ) {
                    $artDisplay->the_post();
                    $artiste = get_field('artiste');
                    if ($artiste[0] == $authorId):
                    echo '<li>';
                    echo "<div class='thumbDiscover'>";
                    echo "<a href='".get_permalink()."'>";
                    the_post_thumbnail('thumb');
                    echo "</a>";
                    echo "</div><span>";
                    echo "<a href='".get_permalink()."'>";
                    the_title();
                    echo "</a>";
                    echo "</span>";

                    echo '</li>';
                    endif;
                }
                    echo '</ul>';
            } else {
                // no posts found
            }
    endif;
            ?>

所以它并不完美......如果有人有适当的解决方案, 谢谢

3 个答案:

答案 0 :(得分:0)

尝试直接在值

中传递数组
$artistArg = array(
        'numberposts' => -1,
        'category_name' => 'oeuvres',
        'meta_query' => array(
            array(
                'key' => 'Custom_field',
                'value' => array(12,29,34)
            )
        )

    );

答案 1 :(得分:0)

作为sated

  

value (string|array) - 自定义字段值(注意:数组支持是   限制为“IN”,“NOT IN”,“BETWEEN”或“NOT”的比较值   BETWEEN')(使用'EXISTS'或'NOT时,可省略此值   EXPTS在WordPress 3.5和更高版本中的比较

所以你可能不会使用'compare' => 'EXISTS'

答案 2 :(得分:0)

$artistArg = array(
    'numberposts' => -1,
    'meta_key' => 'Custom_field',
    'category_name' => 'oeuvres',
    'meta_query' => array(
        array(
            'key' => 'Custom_field',
              'compare'   => 'IN'
            'value' => array(12,29,34)
        )
    )

);

传递'meta_key'=&gt;数组see the stack over flow link中的'Custom_field'