同乐儿

  1. 首页
  2. wordpress教程
wordpress非插件实现说说、微博、微语功能
发布 | 2个月前 (10-27) | 阅读数:227 | 评论数:0 | 来源:同乐儿

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

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="http://www.zswu.net/zb_users/upload/p.jpg" 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


如果觉得该作者的文章对你有帮助,请随意打赏给他。您的支持将鼓励作者继续创作!
打赏
X
打赏本文作者方式

微信扫一扫可留言


继续浏览有关 wordpress,wordpress教程 的文章

分享至:




评论
  • 117 评论
  • 129 粉丝
  • 131 文章
  • 最新评论
    二呆说:看见岛有了点信号,我用的时候就是看对应网...
    123123123说:我试过了,没改成功,不着急用,看了qur...
    二呆说:6.0应该也行,时间太长忘记了,好像6....
    123123123说:能不能适配下emlog6.0
    二呆说:啥意思,背景就是简单的网页背景图片。。。
    随机热门
    标签
    wordpress (81) wordpress优化 (26) wordpress主题 (24) 原创 (23) wordpress插件 (21) wordpress教程 (18) wordpress seo (17) Typecho (14) Typecho插件 (11) 博客主题 (8) emlog插件 (6) wordpress维护 (6) emlog (6) CMS主题 (5) 企业主题 (4) DNSPod for emlog (3) 淘宝客主题 (3) 修订版本 (3) 自动保存 (3) 移动适配 (3)