在我开始之前,你的meta_query. 您不应该使用relation 对于单个内部meta_query 大堆
relation (string)-当存在多个内部meta\\u查询数组时,每个内部meta\\u查询数组之间的逻辑关系。可能的值为“AND”、“OR”。不要与单个内部meta\\U查询数组一起使用。
你的第一个问题似乎是正确的,我同意。如果第一个查询的帖子数量少于一定数量,那么第二个查询基本上是用来填充帖子的。有几种方法可以实现这一点
使用@G.M.in.所述的“占位符帖子”this post
利用第二个查询填写其余帖子
我不想触及@G.m.帖子或其实现,因为他已经做了,所以请随时查看该帖子
关于使用第二个查询获取帖子的第二个想法,您需要做一些规划。
这里要记住的要点是:
统计第一次查询中的帖子数量。如果少于预设金额,则计算第二次查询将检索的帖子数
使用meta_query 检索第二个查询中没有指定meta_value.
无需合并两个查询,只需根据需要分别处理即可。但这一切都取决于你和你想要实现的目标
以下是概念:(注意:所有未经测试)
您需要做的第一件事是获取第一次查询返回的帖子数量。这可以使用$found_posts. 在你的情况下
$stories->found_posts
 一旦有了它,就可以对照条件语句中的一个集值来检查它。假设需要显示10个帖子
$min_posts = 10;
if( $stories->found_posts < $min_posts ) {
   //get posts from the second query
}
 现在,您需要计算需要从第二个查询中获得的帖子数量。
$ppp = $min_posts - $stories->found_posts;
$ppp 将是将检索到并因此提供给
posts_per_page$arg1 = array(
    \'post_type\' => \'story\',
    \'post_status\' => \'publish\', 
    \'orderby\' => \'date\', 
    \'order\' => \'ASC\',
    \'posts_per_page\'  => $ppp,
    \'meta_query\' => array(
       array(
          \'key\' => \'business_name\',
          \'value\' => $_POST[\'business_name\'],
          \'compare\' => \'NOT LIKE\'
       ),
    ),
);
$stories2 = new WP_Query($arg1);
 现在可以合并(如果需要)并显示结果
$posts = array_merge($stories->posts, $stories2->posts);
 最终代码:(
如上所述,所有未经测试)$arg = array(
    \'post_type\' => \'story\',
    \'post_status\' => \'publish\', 
    \'orderby\' => \'date\', 
    \'order\' => \'ASC\',
    \'posts_per_page\'  => -1,
    \'meta_query\' => array(
       array(
          \'key\' => \'business_name\',
          \'value\' => $_POST[\'business_name\'],
          \'compare\' => \'LIKE\'
       ),
    ),
);
$stories = new WP_Query($arg);
$min_posts = 10;
if( $stories->found_posts < $min_posts ) {
    $ppp = $min_posts - $stories->found_posts; 
    $arg1 = array(
        \'post_type\' => \'story\',
        \'post_status\' => \'publish\', 
        \'orderby\' => \'date\', 
        \'order\' => \'ASC\',
        \'posts_per_page\'  => $ppp,
        \'meta_query\' => array(
           array(
              \'key\' => \'business_name\',
              \'value\' => $_POST[\'business_name\'],
              \'compare\' => \'NOT LIKE\'
           ),
        ),
    );
    $stories2 = new WP_Query($arg1);
    $posts = array_merge($stories->posts, $stories2->posts);
}else{
    $posts = $stories->posts;
}
foreach ( $posts as $post ) {
    echo $post->ID;
}