' posts_per_page' => -1不工作

时间:2017-02-27 09:07:28

标签: php wordpress

我想通过$ arg中的所有帖子运行查询,但它只适用于11个帖子。我已经在论坛上尝试了很多建议,但我无法让它发挥作用。

我需要做什么?

function test_update_random_number()
{
    global $post;
    $args    = array (
        'orderby'        => 'meta_value LIKE "%Yes%" rand',
        'order'          => 'DESC',
        'meta_key'       => 'feature_in_search',
        'post_type'      => 'therapist',
        'post_status'    => 'publish',
        'posts_per_page' => '-1'
    );
    $myposts = new WP_Query( $args );
    if ( $myposts->have_posts() ) :
        while ( $myposts->have_posts() ) : $myposts->the_post();

            $value = get_field( "feature_in_search", $post_id );
            if ( strpos( $value, 'es' ) !== false ) {
                $random_value = rand( 1, 100 );
                update_field( "field_58aebd8e060c0", $random_value, $post_id );
            } else {
                $random_value2 = rand( 100, 600 );
                update_field( "field_58aebd8e060c0", $random_value2, $post_id );
            }
        endwhile;
        wp_reset_postdata();
    endif;
}

1 个答案:

答案 0 :(得分:2)

您的问题不在于posts_per_page参数,而在于orderby参数。

你有'orderby' => 'meta_value LIKE "%Yes%" rand',,这没什么意义。此外,如果您想要随机订购,订购ASCDESC也没有意义......:)

显然,您希望过滤具有值为“是”的meta_field“feature_in_search”的所有帖子,并随机排序。所以你应该这样做:

$args    = [
    'meta_key'       => 'feature_in_search',
    'meta_value'     => 'Yes',
    'post_type'      => 'therapist',
    'post_status'    => 'publish',
    'posts_per_page' => -1,
    'orderby'        => 'rand'
];

如果您真的想要搜索包含“是”的内容(并使用“LIKE”搜索),则需要构建一个合适的meta query