我在钻研老问题,因为没有解决办法。How to limit page pagination
我正在寻找一种方法来限制主页和类别(archive.php)上的页面。我有大约20万个帖子,分为大约50个类别。如果我保留默认分页,主页有20k页。然后,大多数类别有超过5k页。这将发送一些很长很长的循环。。。每增加一篇帖子(200篇/天),谷歌就会重新开始,等等。。。当我只想谷歌搜索最近的帖子时(这是一个新闻网站)
我所需要的就是让访问者浏览每个类别的前10页。
有什么好方法可以做到这一点吗?
我尝试过这里描述的不同的事情,但没有成功。Limit number of pages in pagination
// this didn\'t work (beyond page 10 "next page" take us back to page 1)
function wpcodex_filter_main_search_post_limits( $limit, $query ) {
return \'LIMIT 0, 100\';
}
add_filter( \'post_limits\', \'wpcodex_filter_main_search_post_limits\', 10, 2 );
删除第10页上的页面链接对我来说很有用,即使你可以手动进入第11页并查看第11页的帖子。。。我只想在谷歌上找不到链接。
不能删除旧帖子,也不能运行双重查询。
谢谢你的帮助
SO网友:Antony Gibbs
我很幸运,主题使用了它自己的功能,所以很容易重写。受worpdress native get\\u的启发,\\u posts\\u导航(wp includes/link template.php)下面是我最终使用的:
function my_get_the_posts_navigation( $args = array() ) {
$limit = 5;
$navigation = \'\';
// Don\'t print empty markup if there\'s only one page.
if ( $GLOBALS[\'wp_query\']->max_num_pages > 1 ) {
$args = wp_parse_args( $args, array(
\'prev_text\' => __( \'Older posts\' ),
\'next_text\' => __( \'Newer posts\' ),
\'screen_reader_text\' => __( \'Posts navigation\' ),
) );
$next_link = get_previous_posts_link( $args[\'next_text\'] );
$p = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
if ($p < $limit) {
$prev_link = get_next_posts_link( $args[\'prev_text\'] );
} else {
$prev_link = false;
}
if ( $prev_link ) {
$navigation .= \'<div class="nav-previous">\' . $prev_link . \'</div>\';
}
if ( $next_link ) {
$navigation .= \'<div class="nav-next">\' . $next_link . \'</div>\';
}
$navigation = _navigation_markup( $navigation, \'posts-navigation\', $args[\'screen_reader_text\'] );
}
return $navigation;
}
function my_the_posts_navigation( $args = array() ) {
echo my_get_the_posts_navigation( $args );
}
// now override the theme pagination function
if ( ! function_exists( \'cactus_paging_nav\' ) ) :
function cactus_paging_nav() {
my_the_posts_navigation();
}
endif;