f
wordpress非插件实现说说、微博、微语功能
wordpress非插件实现说说、微博、微语功能
二呆 6年前 (2018-10-27) wordpress教程  #wordpress# 
浏览:6959

由于网站使用自己的微博主题,主页应该具备可以显示发表短微博的页面,不然就和微博的初衷有所偏差,所以偶尔兴起经过百度一番,将网站主页修改成了说说、微博的形式,下面就描述一下使用方法。

1、在主题目录下的functions.php中添加如下代码,之后在wordpress后台会出现发表说说、编辑说说等链接菜单。

  1. add_action('init', 'tle_shuoshuo_init');
  2. function tle_shuoshuo_init() {
  3.     $labels = array( 'name' => '说说', 'singular_name' => '说说', 'add_new' => '发表说说', 'add_new_item' => '发表说说', 'edit_item' => '编辑说说', 'new_item' => '新说说', 'view_item' => '查看说说', 'search_items' => '搜索说说', 'not_found' => '暂无说说', 'not_found_in_trash' => '没有已遗弃的说说', 'parent_item_colon' => , 'menu_name' => '说说' );
  4.     $args = array( 'labels' => $labels, 'public' => true, 'publicly_queryable' => true, 'show_ui' => true, 'show_in_menu' => true, 'query_var' => true, 'rewrite' => true, 'capability_type' => 'post', 'has_archive' => true, 'hierarchical' => false, 'menu_position' => null, 'supports' => array('title','editor','author') );
  5.     register_post_type('shuoshuo',$args);
  6. }

2、在主题目录建立页面模板(文件名任意,如:shuoshuo.php),并在其中添加如下代码(因为说说的样式可以自定义,所以这里只写出关键代码,仅供参考。)

  1. <ul>
  2.     <?php
  3.     query_posts("post_type=shuoshuo&post_status=publish&posts_per_page=-1");
  4.     if (have_posts()) : while (have_posts()) : the_post();
  5.     ?>
  6.     <li>
  7.         <span class="shuoshuo_author_img">
  8.             <img src="https://secure.gravatar.com/avatar/e323a171045f40fede8cafc7cb303d7d?s=50&r=g&d=mm" class="avatar avatar-48" width="48" height="48">
  9.         </span>
  10.         <a href="javascript:void(0)">
  11.             <p></p>
  12.             <p><?php the_content(); ?></p>
  13.             <p></p>
  14.             <p><i class="fa fa-clock-o"></i>
  15.                 <?php the_time('Y年n月j日G:i'); ?>
  16.             </p>
  17.         </a>
  18.     </li>
  19.     <?php
  20.     endwhile;
  21.     endif;
  22.     ?>
  23. </ul>

但是如果想对说说进行分页的话,可以使用如下关键代码:

  1. <?php
  2. $temi=0;
  3. query_posts("post_type=shuoshuo&post_status=publish&posts_per_page=-1");
  4. if (have_posts()) : while (have_posts()) : the_post();
  5.     $shuoshuo[$temi]["post_date"]=timeago( get_gmt_from_date($post->post_date) );
  6.     $shuoshuo[$temi]["post_content"]=$post->post_content;
  7.     $shuoshuo[$temi]["post_author"]=$post->post_author;
  8.     $shuoshuo[$temi]["guid"]=$post->guid;
  9.     $temi++;
  10. endwhile;
  11. endif;
  12. $page_now = isset($_GET['page_now']) ? intval($_GET['page_now']) : 1;
  13. if($page_now<1){
  14.     $page_now=1;
  15. }
  16. $page_rec=1;
  17. $totalrec=count($shuoshuo);
  18. $page=ceil($totalrec/$page_rec);
  19. if($page_now>$page){
  20.     $page_now=$page;
  21. }
  22. if($page_now<=1){
  23.     $before_page=1;
  24.     if($page>1){
  25.         $after_page=$page_now+1;
  26.     }else{
  27.         $after_page=1;
  28.     }
  29. }else{
  30.     $before_page=$page_now-1;
  31.     if($page_now<$page){
  32.         $after_page=$page_now+1;
  33.     }else{
  34.         $after_page=$page;
  35.     }
  36. }
  37. $i=($page_now-1)*$page_rec<0?0:($page_now-1)*$page_rec;
  38. $start=($page_now-1)*$page_rec;
  39. $shuoshuo = array_slice($shuoshuo,$start,$page_rec);
  40. if(count($shuoshuo)>0){
  41.     global $wpdb;
  42.     ?>
  43.     <ul>
  44.         <?php
  45.         foreach($shuoshuo as $value){
  46.             $authorRow = $wpdb->get_row("SELECT display_name FROM ".$wpdb->prefix."users WHERE ID = ".$post->post_author);
  47.         ?>
  48.         <li class="tleajaxpage">
  49.             <div>
  50.               <a href="<?php if( !is_author()){echo get_author_posts_url( get_the_author_meta( 'ID' ) );} ?>">
  51.                 <img src=""/><!--头像这里可以使用Gravatar或其他方式-->
  52.               </a>
  53.             </div>
  54.             <div>
  55.                 <small><?=$value["post_date"];?></small>
  56.                 <div>
  57.                     <small>
  58.                         <?php
  59.                         if( !post_password_required() ){
  60.                             echo '<a href="'.$value["guid"].'">'.tle_strimwidth(strip_tags(apply_filters('the_content', $value["post_content"])), 0, 140, '…').'</a>';
  61.                         }else{
  62.                             echo '密码保护文章,暂无摘要!';
  63.                         }
  64.                         ?>
  65.                     </small>
  66.                 </div>
  67.             </div>
  68.         </li>
  69.         <?php
  70.         }
  71.         ?>
  72.     </ul>
  73.     <ul>
  74.       <?php if($page_now!=1){?>
  75.         <li><a href="?page_now=1">首页</a></li>
  76.       <?php }?>
  77.       <?php if($page_now>1){?>
  78.         <li><a href="?page_now=<?=$before_page;?>">&laquo; 上一页</a></li>
  79.       <?php }?>
  80.       <?php if($page_now<$page){?>
  81.         <li><a href="?page_now=<?=$after_page;?>">下一页 &raquo;</a></li>
  82.       <?php }?>
  83.       <?php if($page_now!=$page){?>
  84.         <li><a href="?page_now=<?=$page;?>">尾页</a></li>
  85.       <?php }?>
  86.     </ul>
  87. <?php
  88. }else{
  89.     include get_stylesheet_directory()."/404.php";
  90. }
  91. ?>

3、在wordpress后台新建页面(如:shuoshuo.php),并指定页面模板为以上所创建的说说模板,再指定个别名(如:t)。

/tmp/php1c7yOV

通过以上步骤即可实现wordpress非插件的说说、微博、微语功能,以下步骤为细节方面的步骤:

4、如果你的文章页面内存在面包屑导航的话,相信在说说内页不会显示分类名称,所以就需要做一下判断,目前为了方便我只是利用$_SERVER['REQUEST_URI']判断地址栏是否存在shuoshuo这个别名再进行显示不同内容而实现的。

5、最后如果想把说说页面变成网站首页,只需使用wordpress自带的系统设置即可(后台->设置->阅读->指定主页的页面)。

/tmp/phpWr0gkg

推荐阅读
  • 以下仅供学习使用以及纪念之用,已过时,将不再继续鼓捣,请知悉。因能力有限,将它们弄出来后修改时都得调试半天,日后随缘上香。任何事物的成长都需要沉淀,不然就会成以下这些一样的结果。继续在另一个条漫长的转型不归路上走着…走着……以下仍然可以站内搜索相关简介:001、DNSP...
  • 插件截图:插件简介:TleUCenterForWordpress是一个用户中心插件,放置于前台网页的左下角,供用户登陆/管理只用,使用邮箱验证码登陆,登陆之后在使用TleWeiboForWordPressV2.0微博主题的情况下,可以显示微博列表、文章列表、评论列表,也可...
  • 插件截图:插件介绍:TleLiveCtrlForWordpress是一个基于Kplayer的直播遥控器插件,也可以叫做KplayerForWordPress插件,支持多平台直播推流,进行积分点播、查询、跳过等功能,支持Payjs微信、支付宝支付,是一个可以24小时直播推流的...
  • 主题截图:主题简介:一款Wordpress版本的TleWeiboForWordPress电脑/手机版微博主题使用方法:将本主题里的所有文件放在您网站目录的wp-content/themes内,注意文件夹名字必须为TleWeibo或TleWeiboWap。...
  • 插件简介:即时聊天插件为WordPress站长及用户提供即时聊天功能,前台环信即时聊天需要配合个人中心插件,暂不支持手机端。在支持手机端的路上,因为万恶的360网站卫士最近访问困难,导致停留了N久,最后啥也没动,就升级至V1.0.10了,不过仅仅支持了简单的手机端版本。使...

o p
Ú
>