wordpress二次开发:文章分页函数wp_link_pages()实例详解

2013-11-30 18:54 阅读 2,556 次 评论关闭

有关wp_link_pages()文章分页函数的介绍:wordpress二次开发:文章分页函数wp_link_pages()

wp_link_pages()详解

分享一个比较少用大但是比较使用的wordpress文章内页分页函数wp_link_pages() 不是普通的文章的分页哦。

WordPress文章页面分页函数:wp_link_pages(),通过对该函数的深入了解,我们来完成对WordPress文章页面的分页。

对于一篇较为长的文章来说,单页阅读已经不再适用于她,不仅会令访客产生不适的感觉,对我们文章页面的排版也是很不友好。这时候我们急需要对文章进行分页,但WordPress默认的分页却不能令我们满意。

WordPress自身带有文章分页功能,可能该功能不被博主们常用,在默认的TinyMCE编辑器下给隐匿了。你可以尝试编辑文章时在HTML视图下插入短码<!--nextpage-->,看看你的主题有没有分页效果,没有也没关系,看了本文就知道了。

文章分页函数说明:

  1. <?php wp_link_pages( $args ); ?>

数组函数说明:

  1. <?php $args = array(
  2. 'before' => '<p>' . __('Pages:'),//分页导航前,可写文字,可设置样式
  3. 'after' => '</p>',//分页导航闭合
  4. 'link_before' => ,
  5. 'link_after' => ,
  6. 'next_or_number' => 'number',//下一页还是页码
  7. 'nextpagelink' => __('Next page'),//下一页链接
  8. 'previouspagelink' => __('Previous page'),//上一页链接
  9. 'pagelink' => '%',//页码链接
  10. 'more_file' => ,
  11. 'echo' => 1 ); ?>

如何实现文章分页?

文章分页的形式我们举例说明三种,具体样式不做说明,自己DIY。根据自己的需要选择使用,在主题single.php中找到以下代码,在此处代码的下面粘贴上你选择的文章分页形式。

  1. <?php the_content(); ?>

编辑文章时在HTML视图下插入以下文章分页段码即可实现文章分页。

  1. <!--nextpage-->

形式一:page 1 2 3

  1. <?php wp_link_pages('before=<div id="page-links>&after=</div>&next_or_number=number&pagelink=page %'); ?>

说明:页码通过before和after加载page-links的样式

形式二:上一页 下一页

  1. <?php wp_link_pages('before=<strong>&after=</strong>&next_or_number=next&previouspagelink=上一页&nextpagelink=下一页'); ?>

说明:通过上下页翻页,样式加粗

形式三:上一页 1 2 3 下一页

以下代码我进行了重新修订,加入了判断句,解决了文章没有分页时代码占位的情况。以上两组没做修改,请根据以下代码修改。

  1. <?php if ( $numpages > '1' ) {
  2. wp_link_pages('before=<strong>&after=</strong>&next_or_number=next&previouspagelink=上一页&nextpagelink=&nbsp');
  3. wp_link_pages('before=<span class="wp-pagenavi">&after=</span>&next_or_number=number');
  4. echo "&nbsp;";
  5. wp_link_pages('before=<strong>&after=</strong>&next_or_number=next&previouspagelink=&nbsp&nextpagelink=下一页');
  6. } ?>

说明:上下页翻页加粗,页码加载wp-pagenavi样式

后续:feed输出不全

在使用文章分页后会出现一个问题,就是feed输出不全,仅会输出文章页面第一页,这样会影响通过rss订阅者的阅读。解决方法如下:

找到“wp-includes”目录下的“query.php”,查找到以下的语句:

  1. if ( strpos( $content, '<!--nextpage-->' ) ) {

将其修改为:

  1. if ( strpos( $content, '<!--nextpage-->' ) && ( !is_feed() ) ) {

 

wp_link_pages()实例

可能一般人不太用这个函数,但是如果使用了的话并且需要加样式的时候你就会发现这货有多坑爹了,因为当前页码根本没有样式,如果给其它链接加上样式,那么当前页因为没有样式所有非常突兀,奈何wp_link_pages()这个函数又没有定义当前页样式,所以只能自码一个了。

function custom_wp_link_pages( $args = '' ) {
    $defaults = array(
        'before' => '<p id="post-pagination">' . __( 'Pages:' ), 
        'after' => '</p>',
        'text_before' => '',
        'text_after' => '',
        'next_or_number' => 'number', 
        'nextpagelink' => __( 'Next page' ),
        'previouspagelink' => __( 'Previous page' ),
        'pagelink' => '%',
        'echo' => 1
    );

    $r = wp_parse_args( $args, $defaults );
    $r = apply_filters( 'wp_link_pages_args', $r );
    extract( $r, EXTR_SKIP );

    global $page, $numpages, $multipage, $more, $pagenow;

    $output = '';
    if ( $multipage ) {
        if ( 'number' == $next_or_number ) {
            $output .= $before;
            for ( $i = 1; $i < ( $numpages + 1 ); $i = $i + 1 ) {
                $j = str_replace( '%', $i, $pagelink );
                $output .= ' ';
                if ( $i != $page || ( ( ! $more ) && ( $page == 1 ) ) )
                    $output .= _wp_link_page( $i );
                else
                    $output .= '<span>';

                $output .= $text_before . $j . $text_after;
                if ( $i != $page || ( ( ! $more ) && ( $page == 1 ) ) )
                    $output .= '</a>';
                else
                    $output .= '</span>';
            }
            $output .= $after;
        } else {
            if ( $more ) {
                $output .= $before;
                $i = $page - 1;
                if ( $i && $more ) {
                    $output .= _wp_link_page( $i );
                    $output .= $text_before . $previouspagelink . $text_after . '</a>';
                }
                $i = $page + 1;
                if ( $i <= $numpages && $more ) {
                    $output .= _wp_link_page( $i );
                    $output .= $text_before . $nextpagelink . $text_after . '</a>';
                }
                $output .= $after;
            }
        }
    }

    if ( $echo )
        echo $output;

    return $output;
}

在你需要使用的地方直接调用

<?php custom_wp_link_pages();?>

当然,分页的方法就是添加<!--nextpage-->标签

 

版权声明:本文著作权归原作者所有,欢迎分享本文,谢谢支持!
转载请注明:wordpress二次开发:文章分页函数wp_link_pages()实例详解 | 猎微网

评论已关闭!