将文本帖子与媒体库中的图像交替使用的查询

时间:2017-09-05 作者:Tasti

我正在尝试创建一个自定义页面模板,其中显示:

粘帖

带有“文本”类别的随机帖子

  • 媒体库中的随机附件(未附加到帖子),类别为“照片”

    带有“文本”类别的随机帖子

  • 。。。等等,直到没有更多的文本帖子。此时,页面应以随机顺序显示照片,直到没有更多照片为止。

    有几件事:我正在使用一个插件(“媒体库类别”),它允许我为媒体库中的项目分配类别。此页面上的所有帖子都设置在jquery滑块内。

    以下代码基于此处概述的解决方案:Custom query - alternate posts by category. 如果我尝试返回帖子中的图像(我首先以这种方式进行了测试),它将非常有效,但它无法从媒体库中成功检索到未附加到帖子的附件。

    <?php
    $sticky_post = get_option( \'sticky_posts\' );
    
    $args1 = array(
        \'post_type\' => \'post\',
        \'orderby\' => \'rand\',
        \'category_name\' => \'text\',
        \'post_status\' => \'published\',
        \'post__not_in\' => $sticky_post,
        \'posts_per_page\' => -1,
        \'fields\' => \'ids\'
    );
    $query1 = get_posts( $args1 );
    
    $new_posts_array1 = [];
    
    if( $query1 ) {
        $counter1 = 0;
    
        foreach ( $query1 as $post ) {
            $new_posts_array1[$counter1++ * 2] = $post;
        }
        unset( $post );
    }
    
    $args2 = array(
        \'post_type\' => \'attachment\',
        \'category_name\' => \'photo\',
        \'orderby\' => \'rand\',
        \'post_status\' => \'any\',
        \'post__not_in\' => $sticky_post,
        \'posts_per_page\' => -1,
        \'fields\' => \'ids\'
    );
    $query2 = get_posts( $args2 );
    
    $new_posts_array2 = [];
    
    if( $query2 ) {
        $counter2 = 0;
    
        foreach ( $query2 as $post ) {
            $new_posts_array2[($counter2++ * 2) + 1] = $post;
        }
        unset( $post );
    }
    
    
    $new_posts_array = $new_posts_array1 + $new_posts_array2;
    ksort( $new_posts_array );
    $q = array_merge( $sticky_post, $new_posts_array );
    ?>
    <div id="content-slider" class="royalSlider contentSlider">
    <?php $args = array(
    \'post_type\' => array(\'attachment\', \'post\'),
    \'posts_per_page\'        => -1,
    \'post__in\'              => $q,
    \'ignore_sticky_posts\'   => 1,
    \'orderby\'               => \'post__in\',
    );
    $query = new WP_Query( $args );
    
    if ( $query->have_posts() ) {
    while ( $query->have_posts() ) {
        $query->the_post();
        the_content();
    }
    wp_reset_postdata();
    }?>
    </div><!-- close royalSlider-->
    
    我知道使用\\u content()不会显示这些附件图像,但当我对合并查询执行var\\u转储时,它只显示文本帖子,因此我知道问题不仅在于显示图像,而且在于array\\u merge本身。

    媒体库附件是否可以使用这种方法?如果没有,是否有其他方法来实现相同的目标?

    谢谢你的建议。

    1 个回复
    SO网友:Tasti

    我想出来了。这是一系列愚蠢的错误,真的$args1应为“post\\u status”=>“publish”,[未“published”]$$查询的参数应包括“post\\u status”=>数组(“publish”、“inherit”)。

    结束

    相关推荐