默认设置下的POSTS_PER_PAGE覆盖

时间:2016-04-23 作者:Steve

我正在运行一些实际主题之外的模板文件,并在此模板上显示一些帖子。一切都很好,但几天前(可能是更新到4.5版),WordPress的默认设置开始覆盖我的posts_per_page=-1 我不知道为什么会这样。(未安装新插件)

<?php
    // Include WordPress
    define(\'WP_USE_THEMES\', false);
    require(\'./../wp-blog-header.php\');
    query_posts(\'tag=tagname&posts_per_page=-1\');
    ?>
<?php while (have_posts()): the_post(); ?>
    <section class="in_tab">
        <figure class="tab_fig">
            <?php the_post_thumbnail(\'thumbnail\'); ?>
        </figure>
        <h2><?php the_title(); ?></h2>
        <a class="insidelink" target="_blank" href="<?php the_permalink(); ?>" >Weiter...</a>
   </section>
<?php endwhile; ?>

2 个回复
最合适的回答,由SO网友:Steve 整理而成

我发现了问题。如果有人遇到类似的问题,这里有一个解决方案。

我的函数中有一个过滤器。php限制了在几个自定义分类法上显示的帖子,默认值是在else语句中设置的

// Customizing posts per page on zitate archive 

function limit_posts_per_archive_page() {
if ( is_post_type_archive( \'zitate-sprueche\' ) || is_tax(\'zitate-kats\') ||   is_post_type_archive(\'daten\') || is_tax(\'daten-kats\')) {
    $limit = 27;
}
else if (is_post_type_archive( \'videos\' ) || is_tax(\'videos-kats\') || is_post_type_archive( \'whitepaper\' ) || is_tax(\'whitepaper-kats\')) {
    $limit = 9;
}
else 
    $limit = get_option(\'posts_per_page\');

set_query_var(\'posts_per_archive_page\', $limit);
}
add_filter(\'pre_get_posts\', \'limit_posts_per_archive_page\');
我将else改为

else {
// do nothing :)
}
现在一切正常

SO网友:kitchin

关于我对Steve回答的评论,另请参见Override the default number of posts to show for a single loop? Steve回答的“方法”版本是:

function limit_posts_per_archive_page( $query ) {
  if ( $query->is_post_type_archive( \'zitate-sprueche\' ) || $query->is_tax(\'zitate-kats\') || $query->is_post_type_archive(\'daten\') || $query->is_tax(\'daten-kats\')) {
    $limit = 27;
  } else 
    $limit = get_option(\'posts_per_page\');
  }
  $query->set( \'posts_per_archive_page\', $limit );
}
add_action( \'pre_get_posts\', \'limit_posts_per_archive_page\' );
类似的代码适用于我。

相关推荐