这是我的存档模板-page-archive.php
, 我正在使用asa模板显示我的所有帖子/食谱
所以如果你用的是Page (post of the page
type) 具有自定义/特定Page Template, 那你应该create a secondary query and loop 用于检索和显示您的食谱/帖子。
但即使使用默认的归档模板,如archive.php
文件,您应该not使用query_posts()
在模板中!
原因如下:(我添加了粗体和斜体格式)
此功能将completely override the main query and isn’t
intended for use by plugins or themes. 它修改主查询的过于简单的方法可能会有问题,应该尽可能避免。在大多数情况下,有更好、性能更好的选项来修改主查询,例如通过‘pre_get_posts’内的操作WP_Query.
应该注意的是,使用它来替换页面上的主查询可能会增加页面加载时间,在最坏的情况下,所需工作量会增加一倍以上。该函数虽然易于使用,但以后也容易出现混淆和问题。有关详细信息,请参阅下面有关注意事项的说明。
-请参见https://developer.wordpress.org/reference/functions/query_posts/ 上述注意事项和其他细节。
下面是如何转换query_posts()
使用辅助查询的代码/WP_Query
而是循环:
更换<?php query_posts(\'post_type=post&post_status=publish&posts_per_page=24&paged=\'. get_query_var(\'paged\')); ?>
使用此选项:
<?php
// you could also do $query = new WP_Query( \'your args here\' ), but I thought
// using array is better or more readable :)
$query = new WP_Query( array(
\'post_type\' => \'post\',
\'post_status\' => \'publish\',
\'posts_per_page\' => 24,
\'paged\' => get_query_var( \'paged\' ),
) );
?>
更换
have_posts()
具有
$query->have_posts()
,
and 这个
the_post()
具有
$query->the_post()
. 一、 e.使用
$query
上面创建的变量。
最后,更换wp_reset_query()
具有wp_reset_postdata()
.
Now, as for displaying only a few posts on the first page, i.e. different than your posts_per_page
value..
正确的解决方案是
use an offset
, 像这样:
将上述步骤1中的代码段替换为以下代码段,或使用以下代码段代替该代码段:
<?php
// Define the number of posts per page.
$per_page = 12; // for the 1st page
$per_page2 = 24; // for page 2, 3, etc.
// Get the current page number.
$paged = max( 1, get_query_var( \'paged\' ) );
// This is used as the posts_per_page value.
$per_page3 = ( $paged > 1 ) ? $per_page2 : $per_page;
// Calculate the offset.
$offset = ( $paged - 1 ) * $per_page2;
$diff = $per_page2 - $per_page;
$minus = ( $paged > 1 ) ? $diff : 0;
$query = new WP_Query( array(
\'post_type\' => \'post\',
\'post_status\' => \'publish\',
\'posts_per_page\' => $per_page3,
\'offset\' => $offset - $minus,
) );
// Recalculate the total number of pages.
$query->max_num_pages = ceil(
( $query->found_posts + $diff ) /
max( $per_page, $per_page2 )
);
?>
更换
<?php numeric_posts_nav(); ?>
具有
<?php numeric_posts_nav( $query ); ?>
.
编辑分页功能-更换此部件(第775-787行here):
function numeric_posts_nav() {
if( is_singular() )
return;
global $wp_query;
/** Stop execution if there\'s only 1 page */
if( $wp_query->max_num_pages <= 1 )
return;
$paged = get_query_var( \'paged\' ) ? absint( get_query_var( \'paged\' ) ) : 1;
$max = intval( $wp_query->max_num_pages );
使用此选项:
function numeric_posts_nav( WP_Query $query = null ) {
global $wp_query;
if ( ! $query ) {
$query =& $wp_query;
}
if( $query->is_singular() || $query->max_num_pages <= 1 ) {
return;
}
$paged = get_query_var( \'paged\' ) ? absint( get_query_var( \'paged\' ) ) : 1;
$max = intval( $query->max_num_pages );
就这些,现在检查一下它是否适合您!:)