What I want
当用户打开类别链接时,应自动显示第一个查询的帖子。
我的查询如下所示:
<?php global $query_string;
$posts = query_posts($query_string.\'&posts_per_page=1&order=ASC\'); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<?php get_template_part( \'content\', get_post_format() ); ?>
<?php endwhile; endif; ?>
<?php wp_reset_query(); ?>
The problem
类别URL显示第一个查询的内容,但显示的是错误的特征图像,该图像取自上次查询的帖子,意思是
order=DESC
已使用。
有没有办法解决这个问题?
Maybe important
通过反向拉伸将特征图像设置为全屏背景图像。使用js
wp_enqueue_script( \'backstretch\', get_bloginfo( \'stylesheet_directory\' ) . \'/js/jquery.backstretch.min.js\', array( \'jquery\' ), \'1.0.0\' );
wp_enqueue_script( \'backstretch-set\', get_bloginfo(\'stylesheet_directory\').\'/js/backstretch-set.js\' , array( \'jquery\', \'backstretch\' ), \'1.0.0\' );
wp_localize_script( \'backstretch-set\', \'BackStretchImg\', array( \'src\' => wp_get_attachment_url( get_post_thumbnail_id() ) ) );
最合适的回答,由SO网友:Pieter Goosen 整理而成
不使用query_posts
, 也不要用自定义查询替换主查询。这会导致比以前使用主查询解决一个问题更多的问题。我最近就这些问题发表了一篇完整的帖子,您可以查看here
根据您的查询,您只需要更改两件事posts_per_page
和order
要做到这一点,您只需使用pre_get_posts
在执行主查询之前更改查询变量。您可以专门针对具有conditional tag is_category()
要解决此问题,请返回类别页面上的默认循环。您只需要在类别上提供以下内容。php,仅此而已。
<?php
if (have_posts()) {
while (have_posts()) {
the_post();
get_template_part( \'content\', get_post_format() );
}
}
?>
在您的功能中。php,将此代码用于
pre_get_posts
更改每页的帖子数量以及它们在类别页面上的排序方式
function wpse_change_category( $query ) {
if ( !is_admin() && $query->is_category() && $query->is_main_query() ) {
$query->set( \'posts_per_page\', \'1\' );
$query->set( \'order\',\'ASC\' );
}
}
add_action( \'pre_get_posts\', \'wpse_change_category\' );