始终显示下一个/上一个文本(按钮)

时间:2016-06-30 作者:pulla

正如您看到的分页。没有“pre”按钮或文本。因为没有以前的帖子。()http://prntscr.com/bmuui2 )

但是,我想显示按钮(上一个/下一个),即使没有(上一个/下一个)帖子。

因为设计平衡。

我想一直这样表演。()http://prntscr.com/bmutmv )

我使用此代码并参考此codex(https://codex.wordpress.org/Function_Reference/paginate_links )

<?php
global $wp_query;
$big = 999999999; // need an unlikely integer

echo paginate_links( array(
\'base\' => str_replace( $big, \'%#%\', esc_url( get_pagenum_link( $big ) ) ),
\'format\' => \'?paged=%#%\',
\'current\' => max( 1, get_query_var(\'paged\') ),
\'total\' => $wp_query->max_num_pages
) );
?>
我尝试添加更多数组值。但似乎没办法做到。

非常感谢。

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

我毫不怀疑,上面的Suyash Jain的解决方案是一个很好的解决方案,甚至可能是最优的解决方案,而且作为一个程序,它肯定比我将要提出的更优雅。

然而,让我印象深刻的是,有一种非常简单的方法可以在“paginate\\u links”生成的链接之前和之后添加所需的元素:

<?php

global $wp_query;
$big = 999999999; // need an unlikely integer

$html = paginate_links( array(
    \'base\' => str_replace( $big, \'%#%\', esc_url( get_pagenum_link( $big ) ) ),
    //recommended for pretty permalinks, but you could use \'format\' => \'?paged=%#%\', if you prefer
    \'format\' => \'/page/%#%\',
    \'current\' => max( 1, get_query_var(\'paged\') ),
    \'total\' => $wp_query->max_num_pages
) );

//set your additional decorative elements

//mimics the default for paginate_links()
$pretext = \'&laquo; Previous\';
$posttext = \'Next &raquo\'; 

//assuming this set of links goes at bottom of page
$pre_deco = \'<div id="bottom-deco-pre-link" class="deco-links">\' . $pretext . \'</div>\';
$post_deco = \'<div id="bottom-deco-post-link" class="deco-links">\' . $posttext . \'</div>\';

 //key variable 
$paged = get_query_var( \'paged\' ) ? absint( get_query_var( \'paged\' ) ) : 1;

//add decorative non-link to first page
if ( 1 === $paged) {

  $html = $pre_deco . $html;

}

//add decorative non-link to last page    
if ( $wp_query->max_num_pages ==  $paged   ) {

  $html = $html . $post_deco; 

}

//may be helpful to create a larger containing div so...
echo \'<div id="pagination-bottom" class="expanded-pagination">\';

echo $html;

echo \'</div>\';


?>
然后,您将复制(并修改)“真实”分页链接的CSS样式,并可能添加您自己的颜色编码,进一步表明“deco”链接实际上已经失效。

SO网友:Suyash Jain

我通过以下代码实现了它。

function wpbeginner_numeric_posts_nav() {
    echo \'<br>\';

    if( is_singular() )
        return;

    global $wp_query;

    /** Stop execution if there\'s only 1 page */
    if( $wp_query->max_num_pages <= 1 )
        return;

    $paged = get_query_var( \'paged\' ) ? absint( get_query_var( \'paged\' ) ) : 1;
    $max   = intval( $wp_query->max_num_pages );

    /** Add current page to the array */
    if ( $paged >= 1 )
        $links[] = $paged;

    /** Add the pages around the current page to the array */
    if ( $paged >= 3 ) {
        $links[] = $paged - 1;
        $links[] = $paged - 2;
    }

    if ( ( $paged + 2 ) <= $max ) {
        $links[] = $paged + 2;
        $links[] = $paged + 1;
    }

    echo \'<div class="navigation"><ul>\' . "\\n";

    /** Previous Post Link */
    if ( get_previous_posts_link() ) {
        printf( \'<li>%s</li>\' . "\\n", get_previous_posts_link() );
    }else{
        echo \'<li>&laquo; Previous Page </li>&nbsp; \';
    }
    /** Link to first page, plus ellipses if necessary */
    if ( ! in_array( 1, $links ) ) {
        $class = 1 == $paged ? \' class="active"\' : \'\';

        printf( \'<li%s><a href="%s">%s</a></li>\' . "\\n", $class, esc_url( get_pagenum_link( 1 ) ), \'1\' );

        if ( ! in_array( 2, $links ) )
            echo \'<li>…</li>\';
    }

    /** Link to current page, plus 2 pages in either direction if necessary */
    sort( $links );
    foreach ( (array) $links as $link ) {
        $class = $paged == $link ? \' class="active"\' : \'\';
        printf( \'<li%s><a href="%s">%s</a></li>\' . "\\n", $class, esc_url( get_pagenum_link( $link ) ), $link );
    }

    /** Link to last page, plus ellipses if necessary */
    if ( ! in_array( $max, $links ) ) {
        if ( ! in_array( $max - 1, $links ) )
            echo \'<li>…</li>\' . "\\n";

        $class = $paged == $max ? \' class="active"\' : \'\';
        printf( \'<li%s><a href="%s">%s</a></li>\' . "\\n", $class, esc_url( get_pagenum_link( $max ) ), $max );
    }

    /** Next Post Link */
    if ( get_next_posts_link() )
        printf( \'<li>%s</li>\' . "\\n", get_next_posts_link() );

    echo \'</ul></div>\' . "\\n";

}
在此函数中,以下条件将根据您的要求更改行为。若我们删除else条件,则“上一步”按钮将隐藏在第一页上。

我只对上一个按钮进行了测试,但对下一个按钮也将以同样的方式进行测试。

if ( get_previous_posts_link() ) {
            printf( \'<li>%s</li>\' . "\\n", get_previous_posts_link() );
        }else{
            echo \'<li>&laquo; Previous Page </li>&nbsp; \';
        }
在循环之后调用函数wpNeighter\\u numeric\\u posts\\u nav()。

相关推荐

change pagination url

目前,我的分页页面URL为:http://www.example.com/category_name/page/2但我需要将此URL结构更改为:http://www.example.com/category_name/?page=2等有什么解决方案吗?