这是个人喜好,但我真的不喜欢使用$wp_query
使事情复杂化。有两种方法可以解决此问题,一种是使用temp变量$wp_query
第二,更改变量的名称并修复分页,这也是我推荐的个人偏好
METHOD 1
正如我所说,您可以为
$wp_query
并取消设置
<?php
// get all post types
$args = array (
\'post_type\' => \'post\',
\'post_status\' => \'publish\',
\'pagination\' => true,
\'paged\' => (get_query_var(\'paged\') ? get_query_var(\'paged\') : 1),
\'posts_per_page\' => 20,
\'order\' => \'ASC\',
\'orderby\' => \'date\',
);
$temp = $wp_query;
$wp_query = null;
$wp_query = new WP_Query();
$wp_query->query( $args );
<--- YOUR LOOP ETC--->
$wp_query = null;
$wp_query = $temp; // Reset
METHOD 2
这是我喜欢的方法。为变量指定唯一的名称,例如,
$my_query
和中的正确分页
next_posts_link
. 这就是您的自定义查询现在的外观。(
Note 无需滥用php标记。如果您不是从php切换到html,也不是从visa切换到html,那么您不必像以前那样打开和关闭每个元素的php标记。检查下面的我的代码)
<?php
// get all post types
$args = array (
\'post_type\' => \'post\',
\'post_status\' => \'publish\',
\'pagination\' => true,
\'paged\' => (get_query_var(\'paged\') ? get_query_var(\'paged\') : 1),
\'posts_per_page\' => 20,
\'order\' => \'ASC\',
\'orderby\' => \'date\',
);
$my_query = new WP_Query($args);
if ($my_query->have_posts()):
while($my_query->have_posts()): $my_query->the_post() ?>
<---YOUR LOOP ETC--->
好的,这会弄乱分页。要解决此问题,您需要设置
$max_pages
中的参数
next_posts_link
, 所以你的
next_posts_link
看起来像这样
<?php previous_posts_link(\'<i class="fa fa-arrow-left"></i> <span class="text">Previous page</span>\', $my_query->max_num_pages); ?>
这将解决分页问题