如何从自定义帖子类型(“视频”)或循环中的帖子类别(“视频”)查询所有帖子?
我已经使用下面的代码创建了一个查询,将自定义帖子类型中的帖子与普通帖子组合在一起,但我很难用自定义帖子类型和帖子类别实现同样的效果。
<?php $args = array_merge( $wp_query->query, array( \'post_type\' => array( \'post\', \'videos\', ) ) ); query_posts( $args ); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
任何帮助都将不胜感激!
我的幻灯片是这样的:
if($query->have_posts()){
while ( $query->have_posts() ) {
$query->the_post();
$carousel_slide = \'<li>
<a href="<?php the_permalink(); ?>">
<div class="tile-image"><?php the_post_thumbnail(\'tile-small-thumb\'); ?></div>
<div class="tile-up-arrow"></div>
<div class="videoslider">Video</div>
<div class="tile-post-title">
<h5><?php the_titlesmall(\'\', \'...\', true, 55); ?></h5>
</div>
<div class="hover-display" ></div>
</a>
</li>\';
$found_posts[] = $post->ID;
$slides[] = $carousel_slide;
}
wp_reset_postdata();
}
首先,我得到Parse error: syntax error, unexpected T_STRING
在…上<?php the_post_thumbnail(\'tile-small-thumb\'); ?>
和aParse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING
在…上<h5><?php the_titlesmall(\'\', \'...\', true, 55); ?></h5>
. 删除这些链接会很好地加载页面,但不会将链接呈现为链接,而是呈现为<?php the_permalink(); ?>
.
如果我只是做错了,请让我知道,我会继续并结束这个问题。
再次感谢您抽出时间。
最合适的回答,由SO网友:Derk-Jan 整理而成
Must have both
以下参数数组搜索post类型slug
videos
和类别slug
video
. 它不通过设置使用分页
posts_per_page
到-1,只返回已发布的帖子。
$args = array(
\'post_type\' => \'videos\',
\'category_name\' => \'video\',
\'posts_per_page\' => -1,
\'post_status\' => \'publish\'
);
Either this or that
如果您试图显示具有post类型或类别slug的post,请使用两个查询,因为它们不能通过参数数组的任何方式组合。
$args = array(
\'post_type\' => \'videos\',
\'posts_per_page\' => -1,
\'post_status\' => \'publish\'
);
$args = array(
\'category_name\' => \'video\',
\'posts_per_page\' => -1,
\'post_status\' => \'publish\'
);
但是,我注意到您正在使用
query_posts()
. 如果您试图更改主循环,请不要。请使用
pre_get_posts
改为挂钩。如果要查询辅助循环,请使用
WP_Query
相反
With WP_Query
function create_slide() {
return \'<li>
<a href="\'. esc_attr( esc_url( get_the_permalink() ) ) .\'">
<div class="tile-image">\' . get_the_post_thumbnail(\'tile-small-thumb\') . \'</div>
<div class="tile-up-arrow"></div>
<div class="videoslider">Video</div>
<div class="tile-post-title">
<h5>\' . get_the_title() . \'</h5>
</div>
<div class="hover-display"></div>
</a>
</li>\';
}
$slides = array();
$displayed = array();
$args = array(
\'post_type\' => \'videos\',
\'posts_per_page\' => -1,
\'post_status\' => \'publish\'
);
$query = new WP_Query( $args );
while ( $query->have_posts() ) : $query->the_post();
$displayed[] = get_the_ID();
$slides[] = create_slide();
endwhile;
$args = array(
\'category_name\' => \'video\',
\'posts_per_page\' => -1,
\'post_status\' => \'publish\',
\'post__not_in\' => $displayed,
);
$query = new WP_Query( $args );
while ( $query->have_posts() ) : $query->the_post();
$displayed[] = get_the_ID();
$slides[] = create_slide();
endwhile;
wp_reset_postdata();
echo implode(\'\', $slides);
SO网友:Tom J Nowell
要执行OR而不是AND,您需要自定义逻辑,这会很麻烦,但不必要!
不要试图获取帖子和类别,你应该进行两次单独的查询来获取你想要的内容,所以抓取所有视频帖子,将它们放入一个数组中,然后抓取视频类别中的所有帖子,将它们添加到同一个数组中,然后打印出你得到的内容。
有点像把桔子放进购物车,然后把香蕉放进去,而不是没完没了地寻找一个既有桔子又有香蕉的盒子
$slides = array();
$found_posts = array();
// get the video posts
$query = new WP_Query(
array(
\'post_type\' => \'videos\',
\'posts_per_page\' => -1
)
);
if($query->have_posts()){
while ( $query->have_posts() ) {
$query->the_post();
$carousel_slide = \'put your slide content here, so probably an <li> element or something?\';
$found_posts[] = $post->ID;
$slides[] = $carousel_slide;
}
wp_reset_postdata();
}
// get the video category
$query = new WP_Query(
array(
\'category_name\' => \'video\',
\'posts_per_page\' => -1
\'post__not_in\' => $found_posts
)
);
if($query->have_posts()){
while ( $query->have_posts() ) {
$query->the_post();
$carousel_slide = \'put your slide content here, so probably an <li> element or something?\';
$slides[] = $carousel_slide;
}
wp_reset_postdata();
}
// we should now have all our slides in the $slides array so lets print them out
echo implode(\'\',$slides);
您需要修改显示两次的此行:
$carousel_slide = \'put your slide content here, so probably an <li> element or something?\';
因此,它包含了帖子的幻灯片html,所以我想它可能是一个li元素,一些用于获取特色图像的调用,等等,但这超出了这个问题的范围(这是关于查询,而不是如何设置JCarousel幻灯片和特色图像)。