有谁知道为什么 Wordpress Multisite 的 WP-PAGINATE 插件在页码和上一个/下一个箭头的链接中重复一个站点的主页 url?该页面是默认帖子页面,不使用自定义帖子。该插件的所有分页链接都生成 404。我尝试更新永久链接。
以下是它提供的 URL 示例: http ://www.site.com/a_site_name/a_site_name/page/2
应该是: http ://www.site.com/a_site_name/page/2
谢谢。
有谁知道为什么 Wordpress Multisite 的 WP-PAGINATE 插件在页码和上一个/下一个箭头的链接中重复一个站点的主页 url?该页面是默认帖子页面,不使用自定义帖子。该插件的所有分页链接都生成 404。我尝试更新永久链接。
以下是它提供的 URL 示例: http ://www.site.com/a_site_name/a_site_name/page/2
应该是: http ://www.site.com/a_site_name/page/2
谢谢。
我知道这篇文章有点旧......但是如果它对某人有所帮助,那就太好了。我尝试使用 WP Paginate 插件,但它并没有为我做杰克,所以我选择了这个替代方案,它为我解决了所有问题。
HTML/PHP:
<?php
//Fix homepage pagination
if ( get_query_var('paged') ) { $paged = get_query_var('paged'); } else if ( get_query_var('page') ) {$paged = get_query_var('page'); } else {$paged = 1; }
$temp = $wp_query; // re-sets query
$wp_query = null; // re-sets query
$args = array( 'post_type' => array('assignment', 'student-post'), 'orderby' => 'date', 'order' => 'DESC','posts_per_page' => 15, 'paged' => $paged);
$wp_query = new WP_Query();
$wp_query->query( $args );
while ($wp_query->have_posts()) : $wp_query->the_post();
?>
这允许做几件事。一种是检查您是在主页、页面还是单身,然后告诉 $paged 变量如何依次做出反应。它还允许您使用自定义帖子类型查询您的分页。此外,通过不使用 query_post,您可以避免使用它时有时会遇到的一些非常时髦的东西。
在你的functions.php里面
function paginate() {
global $wp_query, $wp_rewrite;
$wp_query->query_vars['paged'] > 1 ? $current = $wp_query->query_vars['paged'] : $current = 1;
$pagination = array(
'base' => @add_query_arg('page','%#%'),
'format' => '',
'total' => $wp_query->max_num_pages,
'current' => $current,
'show_all' => true,
'type' => 'list',
'next_text' => '»',
'prev_text' => '«'
);
if( $wp_rewrite->using_permalinks() )
if ( is_home() ) {
//fixes index.php weird error on how it displays the pagination URL which causes errors only on index.php
$pagination['base'] = user_trailingslashit( trailingslashit( remove_query_arg( 's', get_pagenum_link( 1 ) ) ) . '?page=%#%/', 'paged' );
} else {
$pagination['base'] = user_trailingslashit( trailingslashit( remove_query_arg( 's', get_pagenum_link( 1 ) ) ) . 'page/%#%/', 'paged' );
}
if( !empty($wp_query->query_vars['s']) )
$pagination['add_args'] = array( 's' => get_query_var( 's' ) );
echo paginate_links( $pagination );
}
这最初来自http://bavotasan.com/2011/simple-pagination-for-wordpress/我稍微修改它以使分页在主页上工作。
这又做了几件事。它对您的页面进行分页,每个页面都有自己的链接(我觉得这很好),它还重写了 URL 以允许漂亮的永久链接。出于某种原因,wordpress 在 index.php 上提供了 404 页面,所以我更改了 'page/%#%/', 'paged' ); 到 '?page=%#%/', 'paged' ); 并将其包装在 is_home() 的条件中。这解决了我的分页和漂亮的永久链接问题。
可选的分页样式
ul.page-numbers {
margin: 20px 0 10px;
width: 100%;
padding: 0;
font-size: 12px;
line-height: normal;
clear: both;
float: left;
}
ul.page-numbers li {
float: left;
}
ul.page-numbers a,
ul.page-numbers span {
border-radius: 3px;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
background: -webkit-gradient(linear, left top, left bottom, from(#E4E3E3), to(#FFFFFF));
background: -moz-linear-gradient(top, #E4E3E3, #FFFFFF);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#E4E3E3', endColorstr='#FFFFFF');
padding: 3px 4px 2px 4px;
margin: 2px;
text-decoration: none;
border: 1px solid #ccc;
color: #666;
}
ul.page-numbers a:hover,
ul.page-numbers span.current {
border: 1px solid #666;
color: #444;
}
为了解决这个问题,我所做的是打开 wp-includes/link-template.php 并注释掉第 1389 行,将其替换为以下内容:
//$home_root = preg_quote( trailingslashit( $home_root ), '|' );
$home_root = preg_quote( $home_root, '|' );
(使用的 Wordpress 版本是 3.3.1)