wordpress 在wp_query中组合合并两个参数

ee7vknir  于 2023-11-17  发布在  WordPress
关注(0)|答案(2)|浏览(143)

我试图将合并和查询的职位。但条件的输出不正确。
条件一:检查所有类别中的所有帖子,使用Meta_key滑块。
条件二:查询所有category id = 32378的帖子,不管Meta_key是否存在。

// Query 1
            $args1 = array(
            'showposts' => theme_options('count_slider'),
            'meta_key'    => 'slider',
            'meta_value'  => true,
            );

    // Query 2
            $args2 = array(
              'showposts' => 5,
              'cat' => 32378,
            );

            // Combine the results
            $combined_args = array_merge($args1, $args2);

        $the_query = new WP_Query($combined_args);

字符串
我不知道为什么这段代码只显示所有的文章与Meta_key '滑块'(在只是类别32378).
我试图将合并和查询的职位。但条件的输出不正确。
我想要一个这样的结果:在类别ID 32378的所有职位,即。无论Meta_key存在与否+所有类别中的所有职位,有meta_key '滑块'与overal 7后的限制。

au9on6nz

au9on6nz1#

$args1 = array(
    'showposts' => 5,
    'cat' => 32378,
);

$args2 = array(
    'showposts' => 7, 
    'meta_query' => array(
        array(
            'key' => 'slider',
            'value' => true,
            'compare' => 'EXISTS',
        ),
    ),
);

$combined_args = array(
    'relation' => 'OR', 
    $args1,
    $args2,
);

$the_query = new WP_Query($combined_args);

字符串

yhived7q

yhived7q2#

简单地用array_merge合并两个参数数组所使用的逻辑并不像预期的那样工作。在WordPress查询中,你不能仅仅以这种方式组合合并条件。发生的情况是第二个数组覆盖了第一个数组的值,而不是创建一个逻辑OR条件。
您尝试实现的是一个更复杂的查询,无法直接使用标准WP_Query完成。相反,您需要使用自定义SQL查询或执行两个单独的查询并将结果合并合并。
下面是如何执行两个单独查询并将结果合并合并的示例:

// Query 1: Posts in all categories with meta_key 'slider'
$args1 = array(
    'showposts'   => theme_options('count_slider'),
    'meta_key'    => 'slider',
    'meta_value'  => true,
);

$query1 = new WP_Query($args1);
$posts1 = $query1->posts;

// Query 2: All posts in category 32378
$args2 = array(
    'showposts' => 5,
    'cat'       => 32378,
);

$query2 = new WP_Query($args2);
$posts2 = $query2->posts;

// Combine the results
$combined_posts = array_merge($posts1, $posts2);

// Limit the results to 7 posts
$combined_posts = array_slice($combined_posts, 0, 7);

// Now you can iterate over $combined_posts and output your posts

字符串
请注意,这种方法不是最佳的,特别是如果你有很多文章,因为它会给数据库带来更多的负载。此外,如果文章同时满足两个条件,它们可能会出现两次。解决方案是检查文章ID并删除重复的文章。
如果性能是一个问题,自定义SQL查询将是更有效的途径,但这更复杂,需要深入了解WordPress的数据库结构。

相关问题