给WordPress后台小工具增加一个随机文章

文章目录[隐藏]

修改模板functions.php 文件

注意: PHP 5.2+才支持,看看你的Php版本是否支持。

如果你的 WordPress 中插件已经十几个了,不希望增加太多的插件造成网页负担,所以就在主题的 functions.php 文件中增加了一个函数类来完成这个任务。

将下面的代码直接,或定制化修改后放入主题的 functions.php 文件中即可。没有functions.php文件的话在主题更目录下创建一个。这样在WordPress 后台中的“小工具”里就会增加一个“随机文章”的可用小工具,将其添加到边栏中作为微件显示出来。
效果如下:

random-posts-cnzhx

  1. //随机文章小工具   
  2. class RandomPostWidget extends WP_Widget   
  3. {   
  4.     function RandomPostWidget()   
  5.     {   
  6.         parent::WP_Widget('bd_random_post_widget', '随机文章', array('description' =>  '我的随机文章小工具') );   
  7.     }   
  8.  
  9.     function widget($args, $instance)   
  10.     {   
  11.         extract( $args );   
  12.  
  13.         $title = apply_filters('widget_title',empty($instance['title']) ? '随机文章' :    
  14. $instance['title'], $instance, $this->id_base);   
  15.         if ( empty( $instance['number'] ) || ! $number = absint( $instance['number'] ) )   
  16.         {   
  17.             $number = 10;   
  18.         }   
  19.  
  20.         $r = new WP_Query(array('posts_per_page' => $number, 'no_found_rows' => true,    
  21. 'post_status' => 'publish', 'ignore_sticky_posts' => true, 'orderby' =>'rand'));   
  22.         if ($r->have_posts())   
  23.         {   
  24.             echo "\n";   
  25.             echo $before_widget;   
  26.             if ( $title ) echo $before_title . $title . $after_title;   
  27.             ?>   
  28. <ul class="line">   
  29. <?php  while ($r->have_posts()) : $r->the_post(); ?>   
  30. <li><a href="<?php the_permalink() ?>" title="<?php echo esc_attr(get_the_title() ? get_the_title() : get_the_ID()); ?>"><?php if ( get_the_title() ) the_title(); else the_ID(); ?></a></li>   
  31. <?php endwhile; ?>   
  32. </ul><?php   
  33.             echo $after_widget;   
  34.             wp_reset_postdata();   
  35.         }   
  36.     }   
  37.  
  38.     function update($new_instance, $old_instance)   
  39.     {   
  40.         $instance = $old_instance;   
  41.         $instance['title'] = strip_tags($new_instance['title']);   
  42.         $instance['number'] = (int) $new_instance['number'];   
  43.         return $instance;   
  44.     }   
  45.  
  46.     function form($instance)   
  47.     {   
  48.         $title = isset($instance['title']) ? esc_attr($instance['title']) : '';   
  49.         $number = isset($instance['number']) ? absint($instance['number']) : 10;?>   
  50.         <p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label>   
  51.         <input id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo $title; ?>" /></p>   
  52.  
  53.         <p><label for="<?php echo $this->get_field_id('number'); ?>"><?php _e('Number of posts to    
  54. show:'); ?></label>   
  55.         <input id="<?php echo $this->get_field_id('number'); ?>" name="<?php echo $this->get_field_name('number'); ?>" type="text" value="<?php echo $number; ?>" size="3" /></p>   
  56. <?php   
  57.     }   
  58.  
  59. }   
  60. add_action('widgets_init', create_function('', 'return register_widget("RandomPostWidget");'));  
  61. ?>

带有缩略图的随机文

如果你想自己实现带有缩略图的随机文章功能,建议你阅读wordpressWordPress 开发带缩略图随机文章小工具


发布日期:

所属分类: Wordpress 综合 标签: