如何在WordPress简码中显示分页


how to show pagination in wordpress shortcode?

嗨,我正在为 WordPress wp_query工作,它对我来说很好。分页正在模板页面上工作,但是当我创建一个简码并尝试显示分页时,它不起作用,但相同的代码正在模板文件上工作这是我的查询

$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
$wp_query = new WP_Query();
$wp_query->query('cat=4&showposts=5'.'&paged='.$paged);

内容显示代码

<?php while ($wp_query->have_posts()) : $wp_query->the_post(); ?>
<?php the_title(); ?>

和最后的分页

<?php endwhile; ?>
<div class="twf_pagination">
<?php echo paginate_links( $args ); ?>
</div>

谁能告诉我我做错了什么?我该如何解决?谢谢

你在这里完全破坏了你的主要查询。您在此处遇到以下问题:

  • 不要使用变量 $wp_query 。这是主查询使用和设置的全局变量。而是使用像 $my_query 这样的变量。查看 codex,WP_Query了解如何构造正确的自定义查询

  • 我在任何地方都看不到您正在重置帖子数据。在分页功能后wp_reset_postdata()大量使用

  • 请记住,应返回短代码的输出,而不是回显。使用缓冲区保存输出并在末尾返回,或者将输出添加到变量并返回该变量。查看简码 API 并了解如何正确构建简码

  • 查看 codex,paginate_links()了解如何在自定义查询中正确使用 use 函数