分页帖子-如何使用数字和下一个/上一个链接?

时间:2011-12-24 作者:AndrettiMilas

我希望wp\\u link\\u页面(多页帖子)显示页码,在这些数字之前显示单词“previous”,在这些数字之后显示“next”。看起来是这样的:

Prev 1, 2, 3, 4 Next

我试图在没有插件的情况下完成这项工作。这是我迄今为止尝试过的,但它不起作用,它只显示数字。

<?php wp_link_pages(array(
    \'before\' => \'<span style="clear:both; display:block">Pages\', 
    \'after\'  => \'</span>\',
    \'next_or_number\'=>\'number\',
    \'previouspagelink\' => \'previous\',
    \'nextpagelink\'=> \'Next\'
)); ?>

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

您正在使用的函数,wp_link_pages­Codex, 没有默认情况下要查找的功能。

但是,您可以通过使用回调函数轻松地对其进行扩展,该回调函数在函数参数上注册为过滤器:

add_filter(\'wp_link_pages_args\', \'wp_link_pages_args_prevnext_add\');
然后,过滤器将动态修改该函数中使用的参数,并将缺失的链接注入prevnext 在编号链接列表的左侧和右侧输出的参数(next_or_number\' => \'number\'):

/**
 * Add prev and next links to a numbered page link list
 */
function wp_link_pages_args_prevnext_add($args)
{
    global $page, $numpages, $more, $pagenow;

    if ($args[\'next_or_number\'] !== \'next_and_number\') 
        return $args; # exit early

    $args[\'next_or_number\'] = \'number\'; # keep numbering for the main part
    if (!$more)
        return $args; # exit early

    if ($page - 1) # there is a previous page
        $args[\'before\'] .= _wp_link_page($page-1)
            . $args[\'link_before\']. $args[\'previouspagelink\'] . $args[\'link_after\'] . \'</a>\'
        ;

    if ($page < $numpages) # there is a next page
        $args[\'after\'] = _wp_link_page($page+1)
            . $args[\'link_before\'] . \' \' . $args[\'nextpagelink\'] . $args[\'link_after\'] . \'</a>\'
            . $args[\'after\']
        ;

    return $args;
}
用法:

wp_link_pages(array(
    \'before\' => \'<p>\' . __(\'Pages:\'),
    \'after\' => \'</p>\',
    \'next_or_number\' => \'next_and_number\', # activate parameter overloading
    \'nextpagelink\' => __(\'Next\'),
    \'previouspagelink\' => __(\'Previous\'),
    \'pagelink\' => \'%\',
    \'echo\' => 1 )
);
如果你的主题总是使用上一个和下一个链接,那么你可以稍微更改一下函数,使其成为默认行为number (默认设置)已使用,因此您需要在主题中写得更少。

这是一个稍微不同的实现suggested by Velvet Blues.

SO网友:Velvet Blues

这个wp_link_pages() 函数仅显示文本或数字,不能同时显示两者。如果查看函数的代码,您将看到没有通过传递参数使其行为不同的选项。

也就是说,在没有插件的情况下,有三种方法可以做到这一点:

在主题函数中创建自己的函数。php文件。Works, but then you\'d have a new function.wp_link_pages(). Very inefficient hack.Preferred Method. 见下文wp_link_pages_args 过滤并在函数中添加函数。php文件,其中添加了一个新选项“next\\u and\\u number”。

WordPress Hack: Display Number & Next/Previous Links with wp_link_pages()

SO网友:Tareq

试试这个,你可以对它进行更多的定制。但它应该按照您的要求执行:-)

function tp_link_pages() {
    global $page, $numpages;

    echo paginate_links( array(
        \'format\' => get_permalink() . \'%#%/\',
        \'current\' => $page,
        \'total\' => $numpages
    ) );
}

SO网友:Mat_

我不明白有什么问题。。。你有什么错误吗?

这应该可以:

<?php $args = array(
    \'before\'           => \'<span style="clear:both; display:block">Pages\',
    \'after\'            => \'</span>\',
    \'nextpagelink\'     => __(\'Next\'),
    \'previouspagelink\' => __(\'Previous\')
); 

wp_link_pages($args);
?> 
您不需要添加next\\u或\\u number,因为number已经是默认值。

SO网友:Caio Alves

这个代码在帖子的循环中?编码对我来说没问题。以下是关于如何使用的Codex示例:

<?php

wp_link_pages(array(
    \'before\' => \'<p>\' . __(\'Pages:\'),
    \'after\' => \'</p>\',
    \'next_or_number\' => \'number\',
    \'nextpagelink\' => __(\'Next page\'),
    \'previouspagelink\' => __(\'Previous page\'),
    \'pagelink\' => \'%\',
    \'echo\' => 1 )
);

?>

SO网友:kaiser

答案不同,但它是受启发的@荒野无灯 他决定删除他的答案。Imho这是最好的,也是最简单、最灵活的解决方案:

解决方案取决于paginate_links(). 唯一要知道的是base 将是从一开始的URl,附加%_%, 然后将替换为format. 所以只要我们使用get_permalink().\'%_%\';, 我们知道,无论如何,我们都会留在目前的岗位上。在…内format, 这个# 被页码替换:

function wpse37256_paginate_paged()
{
    if ( ! $paginate_links = paginate_links( array(
         \'type\'      => \'array\'

        ,\'total\'     => $GLOBALS[\'numpages\']
        ,\'mid_size\'  => 1
        ,\'end_size\'  => 1

        #,\'prev_next\' => false
        ,\'prev_text\' => \'&laquo; \'.__( \'Prev\', \'your_textdomain\' )
        ,\'next_text\' => __( \'Next\', \'your_textdomain\' ).\' &raquo;\'

        ,\'base\'      => get_permalink().\'%_%\'
        ,\'format\'    => user_trailingslashit( \'%#%\' )

        ,\'current\'   => $GLOBALS[\'page\']
    ) ) )
        return;

    echo "<div class=\'pagination-container\'>{$paginate_links}</div>";
}

结束

相关推荐

Nested Pagination

wordpress可以这样做吗?比如,[A] 【B】【C】。。。[十] 【Y】[Z]。。。。。。标题以“z”开头的帖子。。。。。。。1 2 3 4下一步>>有人能告诉我如何实现这种分页的正确方向吗?这是一种以帖子标题为基础的A-Z分页。例如pageZ 有大于10的条目,也要分页。