1

有谁知道为什么 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

谢谢。

4

2 回答 2

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' => '&raquo;',
    'prev_text' => '&laquo;'
    );

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;
}
于 2012-12-13T08:58:15.493 回答
0

为了解决这个问题,我所做的是打开 wp-includes/link-template.php 并注释掉第 1389 行,将其替换为以下内容:

//$home_root = preg_quote( trailingslashit( $home_root ), '|' );
$home_root = preg_quote( $home_root, '|' );

(使用的 Wordpress 版本是 3.3.1)

于 2013-02-26T23:08:10.427 回答