为了达到更好的体验效果,请使用Chrome、Firefox等现代浏览器浏览本站!

让WordPress站点具有猜你喜欢功能

wordpress 助推站长 6392℃ 1评论

在很多WordPress等博客主题中都具有猜你喜欢小工具,不仅可以增强用户粘度,还可以增加一些老文章出现的几率,不至于让一些优秀的老文章沉下去。而且还有一个更重要的作用,那就是当搜索引擎来爬你的文章的时候,每次都会有变化,同时还能增加网站文章内链。
关于如何在wordpress添加猜你喜欢,有很多这样的插件,但是我们都知道使用过多的插件可不是一件好事情,因为许多插件可能不兼容,并且使用过多的插件很可能会增加服务器负载,把网站加载速度脱下来,这样就会对你网站的用户体验有很大的影响。所以可不可以让我们不再主题模板中添加而是自定义一些这样的小工具呢,这样我们就可以自由地拖放,想放哪就放哪,这样就可以和其他小工具和谐地相处了,不用去修改模板文件。

想看效果就可以看我博客的右侧【猜你喜欢】栏目就是随机生成的。

废话不说了,以下为创建方法。添加以下代码:

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

在WordPress后台外观>编辑>function.php,将上面代码添加到主题的function.php中最后的?>之前,保存修改好的代码就行了。

转载请注明:众推不靠谱 » 让WordPress站点具有猜你喜欢功能

喜欢 (1)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(1)个小伙伴在吐槽
  1. 关于以上代码的注释:
    //parent::直接使用父类中的方法
    //$name 这个小工具的名称,
    //$widget_ops 可以给小工具进行描述等等。
    //$control_ops 可以对小工具进行简单的样式定义等等。
    //__construct() 是构造函数,你也可以用 Radom_Posts() 代替以使程序能支持 PHP4。
    //widget() 是小工具功能实现并且用于输出的方法,这里写上我们获得随机文章的代码,并且 echo 出用于前台显示。
    //update() 是我们拖放小工具到边栏时设置的数据更新,比如我们的 WordPress 近期文章小工具,会要我们输入“标题”和“显示文章数”,我们输入后保存即可,这个函数就是用来更新数据的
    //form() 这是用于在后台拖动到边栏中时显示的样式,我们可以定义“标题”和“显示文章数”等,这里我们根据需要而定,可以让小工具更灵活。
    //mywidget_register_widgets() 函数是在这个 Radom_Posts 类之外的,mywidget_register_widgets() 函数中利用register_widget() 函数将 Radom_Posts 类注册成为小工具。
    //最后就是用添加动作 add_action() 函数将mywidget_register_widgets() 函数加到WordPress 的 widgets_init 钩子中去。大功告成,如果你的主题支持小工具,你去后台小工具就会发现左边多了一个叫 Radom_Posts 的上工具,可以拖放使用。
    
    zoo2015-07-13 17:27 回复