纯代码给WordPress文章添加分页和阅读全文

创客云

文章分页的功能大多数的 WordPress 主题都有,但是很少有“阅读全文”的功能,如果只是分页 1 到 3 页倒是无所谓,但是如果分成很多页的话,为了提高用户体验,个人认为很有必要在文章分页码旁边增加一个【阅读全文】的按钮,相关教程网上也有,这里分享我的改良版。

添加函数

复制下方代码到主题的 functions.php 文件里面:

  1. function io_link_pages() {  
  2.     global $wp_query, $numpages; 
  3.     if(isset( $wp_query->query_vars[ 'view' ] ) && $wp_query->query_vars[ 'view' ] === 'all'){ 
  4.         echo '<div class="page-nav text-center my-3"><a href="' . get_permalink() . '"><span class="all">分页阅读</span></a></div>';
  5.     } elseif ( 1 < $numpages ) {
  6.         wp_link_pages(array('before' => '<div class="page-nav text-center my-3">', 'after' => '', 'next_or_number' => 'next', 'previouspagelink' => '<span><i class="iconfont icon-arrow-l"></i></span>', 'nextpagelink' => "")); 
  7.         wp_link_pages(array('before' => '', 'after' => '', 'next_or_number' => 'number', 'link_before' =>'<span>', 'link_after'=>'</span>')); 
  8.         wp_link_pages(array('before' => '', 'after' => '', 'next_or_number' => 'next', 'previouspagelink' => '', 'nextpagelink' => ' <span><i class="iconfont icon-arrow-r"></i></span>')); 
  9.         echo ' <a href="' . get_pagenum_link( 1 ) . ( preg_match( '/\?/', get_pagenum_link( 1 ) ) ? '&' : '?' ) . 'view=all' . '"><span class="all">阅读全文</span></a></div>';
  10.     }
  11. }
  12. add_filter( 'query_vars',  'wp_link_pages_all_parameter_queryvars'  );
  13. add_action( 'the_post',  'wp_link_pages_all_the_post'  , 0 );
  14. function wp_link_pages_all_parameter_queryvars( $queryvars ) {
  15.     $queryvars[] = 'view';
  16.     return( $queryvars );
  17. }
  18. function wp_link_pages_all_the_post( $post ) {
  19.     global $pages, $multipage, $wp_query;
  20.     if ( isset( $wp_query->query_vars[ 'view' ] ) && ( 'all' === $wp_query->query_vars[ 'view' ] ) ) {
  21.         $multipage = true;
  22.         $post->post_content = str_replace( '<!--nextpage-->', '', $post->post_content );
  23.         $pages = array( $post->post_content );
  24.     }
  25. }

到文章模板 single.php 文件的the_content()下方添加下面的代码调用就可以了。

  1. <?php io_link_pages() ?>
本文来源一为忆,经授权后由CityMall发布,观点不代表创客云的立场,转载请联系原作者。
云模板

发表评论