2017-02-27 98 views
-1

我想通过$ arg中的所有帖子运行查询,但它仅适用于11个帖子。我已经尝试了很多来自论坛的建议,但是我无法实现。'posts_per_page'=> -1不能正常工作

我需要做什么?

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; 
} 
+0

我认为你错误的参数变量类型''posts_per_page'=>'-1'//这个参数必须是int' - 参见https://codex.wordpress.org/Class_Reference/WP_Query#Pagination_Parameters – htmlbrewery

+0

没有文档说-1是一个选项?我尝试了一个像posts_per_page'=> 500的大数字。它也不起作用。 – LTech

+0

尝试使用''posts_per_page'=> -1'也可以删除'meta_key'和'orderby'这个参数。 – htmlbrewery

回答

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