我使用WP_query循环检索了首页的最新帖子,因为我发现这是最好的解决方案。但我想在首页点击显示帖子。
单个帖子查询的最佳方法是什么?
我在single.php中再次使用了wp_query(有更好的主意吗?)
$args = array('name' => $the_slug,
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => 1);
$the_query = new WP_Query( $args );
<?php while ( $the_query->have_posts() ) :?>
<?php $the_query->the_post(); ?>
<p><?php $content = get_the_content('Read more');
print $content; ?></p>
<?php endwhile; ?><!-- end of the loop -->
<!-- put pagination functions here -->
<?php wp_reset_postdata(); ?>
<?php else: ?>
<p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
<?php endif; ?>
问题是它总是检索到最新的帖子,即使我点击任何帖子ID。我该如何解决这个问题?
答案 0 :(得分:3)
我找到了解决方案。
创建此变量$id= get_the_ID();
并添加'p'=>$id to $args.
答案 1 :(得分:1)
不要运行自定义查询来代替主循环。您可以简单地执行以下操作,它更快,更可靠,更正确
<?php
// Start the Loop.
while ( have_posts() ) : the_post();
// YOUR LOOP ELEMENTS
endwhile;
?>
修改强>
上面的代码称为循环,默认循环是准确的。这不是查询。这个循环的作用是,它只返回主查询检索到的信息。主查询在每个加载的页面上运行。主查询特定于每个页面
有关详情,请阅读my post on WPSE有关此事的信息
答案 2 :(得分:0)
$my_query = new WP_Query( array(
'post_type' => 'your_post_type_here',
'p' => '$id'));// need to set the simple quote '$id'
if( $my_query->have_posts() ){
// start the loop
}else{
// no result message
}
不要忘记在'$ id'中添加简单的引号,因为我尝试不使用它并且在我的情况下不起作用。希望它对以后的人有所帮助!