我正在尝试创建一个自定义页面模板,其中显示:
粘帖
带有“文本”类别的随机帖子
媒体库中的随机附件(未附加到帖子),类别为“照片”带有“文本”类别的随机帖子
。。。等等,直到没有更多的文本帖子。此时,页面应以随机顺序显示照片,直到没有更多照片为止。
有几件事:我正在使用一个插件(“媒体库类别”),它允许我为媒体库中的项目分配类别。此页面上的所有帖子都设置在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本身。
媒体库附件是否可以使用这种方法?如果没有,是否有其他方法来实现相同的目标?
谢谢你的建议。