Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 最佳实践?在查询中引用帖子_Php_Wordpress - Fatal编程技术网

Php 最佳实践?在查询中引用帖子

Php 最佳实践?在查询中引用帖子,php,wordpress,Php,Wordpress,我尝试拉两个随机帖子,其中一个帖子的元值为1,另一个帖子的元值为2,并将它们排列成一个循环:121 下面的脚本运行良好。但是,我相信它可以更有效地执行。理论上,该函数还可以为args1a和args1b查询提取相同的post 是否有某种方法可以引用args1的第一个和第二个结果(如果我要做showposts=>2),然后在新查询中调用这些结果?这样我就可以避免对本质上相同的参数进行两个单独的查询 $args1a = array( 'meta_key' => 'key', 'm

我尝试拉两个随机帖子,其中一个帖子的元值为1,另一个帖子的元值为2,并将它们排列成一个循环:121

下面的脚本运行良好。但是,我相信它可以更有效地执行。理论上,该函数还可以为args1a和args1b查询提取相同的post

是否有某种方法可以引用args1的第一个和第二个结果(如果我要做showposts=>2),然后在新查询中调用这些结果?这样我就可以避免对本质上相同的参数进行两个单独的查询

$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]