我在头版上只显示带有特色图片的帖子。我的问题是,每次加载下一个页面时,我都会收到相同的结果,也就是得到重复的结果。我正在使用按自定义字段排序。欢迎任何可能导致此问题的指示/想法。下面是我的主循环
// Layout
if(is_category())
{
$post_layout = blt_get_option(\'category_post_layout\', \'normal\');
}
elseif(is_author())
{
$post_layout = blt_get_option(\'author_post_layout\', \'normal\');
}
elseif(is_archive())
{
$post_layout = blt_get_option(\'archive_post_layout\', \'normal\');
}
else
{
$post_layout = blt_get_option(\'home_post_layout\', \'normal\');
}
$i = 1;
if(have_posts()){
while(have_posts()){
the_post();
get_template_part( \'inc/template-parts/content\', $post_layout );
// Ad spot #4
if($ad_spot_between_posts = blt_get_option(\'spot_between_posts\', \'none\') != \'none\'){
$ad_posts_frequency = blt_get_option(\'spot_between_posts_frequency\', 3);
// take into account ad frequency
if(($i % (int) $ad_posts_frequency) == 0){
blt_get_ad_spot( \'spot_between_posts\' );
}
}
$i++;
}
}else{
$has_posts = false;
}
这是我的索引:
<?php get_header(); ?>
<div id="site-content" class="clearfix">
<?php
// Front Page - Top of container
if(is_front_page() and is_active_sidebar(\'front-top_of_container\')){
dynamic_sidebar(\'front-top_of_container\');
}
?>
<div id="site-content-column"><?php
if(is_archive()){
blt_get_title();
}
if(have_posts()){
echo \'<div class="row">\';
include(get_template_directory().\'/loop.php\');
echo \'</div>\';
// Previous/next page navigation.
if(!blt_get_option(\'enable_infinite_scrolling\')){
the_posts_pagination(array(
\'prev_text\' => \'<i class="fa fa-chevron-left"></i>\',
\'next_text\' => \'<i class="fa fa-chevron-right"></i>\',
\'before_page_number\' => \'<span class="meta-nav screen-reader-text">\' . __( \'Page\', \'blue\' ) . \' </span>\',
));
}
}else{
get_template_part( \'inc/template-parts/content\', \'none\' );
} ?>
</div><?php
#
# SIDEBAR
# ========================================================================================
# Load the sidebar if needed
# ========================================================================================
#
if(in_array(blt_get_option(\'sidebar_layout\', \'right\'), array(\'left\', \'right\'), true)){
get_sidebar();
} ?>
</div>
<?php get_footer(); ?>
编辑:无限滚动功能
function blt_infinitepaginate(){
$has_posts = true;
$type = isset($_POST[\'type\']) ? $_POST[\'type\'] : false;
$loopFile = $_POST[\'loop_file\'];
$paged = $_POST[\'page_no\'];
$posts_per_page = get_option(\'posts_per_page\');
$post_id = isset($_POST[\'post_id\']) ? $_POST[\'post_id\'] : false;
# Load the posts
if($post_id){
include(get_template_directory().\'/loop-hottest.php\');
}else{
query_posts( array( \'paged\' => $paged+1, \'post_status\' => \'publish\', \'post__not_in\' => get_option(\'sticky_posts\') ) );
include(get_template_directory().\'/loop.php\');
}
if(!$has_posts){
return false;
}
exit;
}
function blt_change_main_loop( $query ) {
if ( is_admin() || ! $query->is_main_query() )
return;
if ( is_home() and isset($_GET[\'page\'])) {
$query->set( \'posts_per_page\', $_GET[\'page\'] * get_option(\'posts_per_page\') );
return;
}
}
add_action( \'pre_get_posts\', \'blt_change_main_loop\', 1 );
}
最合适的回答,由SO网友:Pieter Goosen 整理而成
很难用你问题中的大量上下文来正确回答你的问题,但我将尝试使用你的previous question
在模板上有更多的上下文,如果我读对了,这就在您的索引上了。php,我仍然相信并坚持我的观点pre_get_posts
是你的答案。按如下方式解决此问题(仅当这不是静态首页时,因为以下内容不起作用)
删除自定义查询。返回默认设置,在那里您可以正常获得所有帖子
下一步,使用pre_get_posts
将主页上的主查询更改为仅显示带有缩略图的帖子。这将解决分页问题
在函数中添加以下内容。php:(至少需要php 5.3)
add_action( \'pre_get_posts\', function ( $q )
{
if ( $q->is_home() // Target the home page only
&& $q->is_main_query() // Target only the main query
) {
$meta_query = array(
array(
\'key\' => \'_thumbnail_id\'
)
);
$q->set( \'meta_query\', $meta_query );
}
});
如果这不能解决您的问题,那么您确实需要发布更多的上下文。
编辑我不打算详细介绍query_posts
这到底有多糟糕,我在之前回答你之前的问题时已经谈到了这一点。由于您很可能没有编写该代码,因此我会就此联系开发人员。
无论如何,要通过无限滚动快速解决您的问题,您需要将以下内容添加到query_posts
参数
\'meta_query\' => array( array( \'key\' => \'_thumbnail_id\' ) ),
请注意,我宁愿重写完整的无限滚动函数
WP_Query
如前一个问题所述