Php 最佳实践?在查询中引用帖子
我尝试拉两个随机帖子,其中一个帖子的元值为1,另一个帖子的元值为2,并将它们排列成一个循环:121 下面的脚本运行良好。但是,我相信它可以更有效地执行。理论上,该函数还可以为args1a和args1b查询提取相同的post 是否有某种方法可以引用args1的第一个和第二个结果(如果我要做showposts=>2),然后在新查询中调用这些结果?这样我就可以避免对本质上相同的参数进行两个单独的查询Php 最佳实践?在查询中引用帖子,php,wordpress,Php,Wordpress,我尝试拉两个随机帖子,其中一个帖子的元值为1,另一个帖子的元值为2,并将它们排列成一个循环:121 下面的脚本运行良好。但是,我相信它可以更有效地执行。理论上,该函数还可以为args1a和args1b查询提取相同的post 是否有某种方法可以引用args1的第一个和第二个结果(如果我要做showposts=>2),然后在新查询中调用这些结果?这样我就可以避免对本质上相同的参数进行两个单独的查询 $args1a = array( 'meta_key' => 'key', 'm
$args1a = array(
'meta_key' => 'key',
'meta_value' => '1',
'orderby' => 'rand',
'showposts' => 1,
);
$args1b = array(
'meta_key' => 'key',
'meta_value' => '1',
'orderby' => 'rand',
'showposts' => 1,
);
$args2 = array(
'meta_key' => 'key',
'meta_value' => '2',
'orderby' => 'rand',
'showposts' => 1,
);
$args1a_query = new WP_Query( $args1a );
$args1b_query = new WP_Query( $args1b );
$args2_query = new WP_Query( $args2 );
$loop = new WP_Query();
$loop->posts = array_merge( $args1a_query->posts, $args2_query->posts, $args1b_query->posts);
$loop->post_count = count( $loop->posts );
if ($loop->have_posts()) :
while ($loop->have_posts()) : $loop->the_post();
编辑:这是使用ROunofF解决方案的最终工作代码(编辑了一些错误)
1-为了解决这个问题,您需要使用'showposts'=>2从“args1_查询”中获得2篇文章 2-然后用下面的代码替换数组_merge(注释中解释的步骤): 拼接方法允许用另一个数组替换数组的某些内容(提取)并返回提取的内容
3-盈利?太棒了,非常感谢!有空时,请解释一下此应用程序中的阵列拼接功能?另外,这两行中的args1和arg2应该是args1_query和args2_query,其余两个mainingpost变量不匹配。我更正了我的打字错误,很抱歉。拼接方法允许用另一个数组替换数组的内容,并提取替换的内容。
$args1a = array(
'meta_key' => 'key',
'meta_value' => '1',
'orderby' => 'rand',
'showposts' => 2,
);
$args2 = array(
'meta_key' => 'key',
'meta_value' => '2',
'orderby' => 'rand',
'showposts' => 1,
);
$args1_query = new WP_Query( $args1 );
$args2_query = new WP_Query( $args2 );
$loop = new WP_Query();
$remainingPosts = array_splice($args1_query->posts, 1, 1, $args2_query->posts);
$loop->posts = array_merge($args1_query->posts, $remainingPosts);
$loop->post_count = count( $loop->posts );
if ($loop->have_posts()) :
while ($loop->have_posts()) : $loop->the_post();
// Initially
// $args1_query->posts = [1a, 1b]
// $args2_query->posts = [2a]
$remainingPost = array_splice($args1_query->posts, 1, 1, $args2_query->posts);
// After splice (offset: 1, length: 1; so we replaced 1b by the content of args2_query_posts):
// $args1_query->posts = [1a, 2a]
// $remainingPost = [1b]
$loop->posts = array_merge($args1_query->posts, $remainingPosts);
// After merge
// $loop_posts = [1a, 2a, 1b]