日星网 windows 中文论坛

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 372|回复: 0

wordpress后台首页添加挂件的方法

[复制链接]
发表于 2014-9-19 02:02:12 | 显示全部楼层 |阅读模式
今天开始研究如何调整网站的wp后台页面,初步认知了wordpress后台首页如何添加新的挂件,并且删除掉不需要的默认模块。

其实在多数情况下,当我们登陆wordpress的后台时会显示一些插件、博客消息、评论、订阅等信息模块。多数情况下我们并不需要看到这些信息,而且在读取这些信息时会减慢后台的运行速度。因此我们可以通过自定义后台挂件删除一些不需要的模块,添加一些自定义内容的属性到后台首页中来。

一、移除不需要的挂件

将下面的代码插入到当前模板根目录的function.php文件的最下面,可以移除插件、链接、官方公告等信息。


  1. function remove_dashboard_widgets(){
  2.   global$wp_meta_boxes;
  3.   unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_plugins']);
  4.   unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']);
  5.   unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_incoming_links']);
  6.   unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']);
  7. }
复制代码


add_action('wp_dashboard_setup', 'remove_dashboard_widgets');
如果需要移除其他模块,可以使用unset($wp_meta_boxes['dashboard']['normal']['core']['需要移除的模块id']); 函数中标红的部分就是你需要移除模块的id。

使用add_action(‘wp_dashboard_setup’, ‘remove_dashboard_widgets’);执行挂在动作,将通过调用回调函数remove_dashboard_widgets移除不必要的模块



二、增加自定义挂件

移除掉不必要的挂件后,我们也可以添加自己需要的挂件。具体挂件需要挂载什么内容,可以按照自己的需求进行开发。下面代码演示一个基本的加载文本公告的一个挂件方式。

挂载自定义控件主要使用wp_add_dashboard_widget函数。该函数的使用方法为:

  1. wp_add_dashboard_widget(
  2. $widget_id,//挂件的ID
  3. $widget_name, //显示名称
  4. $callback, //内容回调函数
  5. $control_callback//控制函数回调
  6. )
复制代码

通过函数的说明,应该可以很清楚的了解这个函数的具体使用方法了,下面给出一个完整的实例演示代码,该示例可以实现后台挂载一个简单的文本输出挂件。代码如下:


  1. // 设置挂载空间中的输出内容

  2. function example_dashboard_widget_function() {
  3.     // Display whatever it is you want to show
  4.     echo "演示的内容";
  5. }

  6. // 添加挂件

  7. function example_add_dashboard_widgets() {
  8.     wp_add_dashboard_widget('example_dashboard_widget', '示例挂件', 'example_dashboard_widget_function');   
  9. }

  10. add_action('wp_dashboard_setup', 'example_add_dashboard_widgets' ); // 挂载example_dashboard_widget
复制代码



为了进一步的开拓思维,给出一个更加复杂的代码示例。显示今年的文章数与评论数功能,代码如下:


  1. if (is_admin()){
  2.     $this_year = date(Y);
  3.     $next_year = $this_year + 1;

  4.     function ty_dashboard_widget() {
  5.         $posts = ty_posts_counter();
  6.         $comments = ty_comments_counter();
  7.         echo <<<TYDW
  8. <p id="ty_dashboard_widget" style="font-family: 'Microsoft YaHei', STHeiti, sans-serif; font-size: 14px;">
  9.     <strong>今年发表文章:</strong>{$posts['publish']}篇公开文章,{$posts['private']}篇私人文章。<br />
  10.     <strong>今年收到留言:</strong>{$comments['comment']}条留言,{$comments['ping']}条Pingback/Trackback。
  11. </p>
  12. TYDW;
  13.     }

  14.     function ty_posts_counter() {
  15.         global $table_prefix, $wpdb, $this_year, $next_year;
  16.         $query = "SELECT COUNT( * ) as ty_posts
  17.                 FROM `{$table_prefix}posts`
  18.                 WHERE post_date >= '{$this_year}-01-01'
  19.                 AND post_date < '{$next_year}-01-01'
  20.                 AND post_type = 'post'
  21.                 AND post_status = 'publish'";
  22.         $posts['publish'] = $wpdb->get_results($query);
  23.         $posts['publish'] = $posts['publish'][0]->ty_posts;

  24.         $query = "SELECT COUNT( * ) as ty_private_posts
  25.                 FROM `{$table_prefix}posts`
  26.                 WHERE post_date >= '{$this_year}-01-01'
  27.                 AND post_date < '{$next_year}-01-01'
  28.                 AND post_type = 'post'
  29.                 AND post_status = 'private'";
  30.         $posts['private'] = $wpdb->get_results($query);
  31.         $posts['private'] = $posts['private'][0]->ty_private_posts;
  32.         return $posts;
  33.     }

  34.     function ty_comments_counter() {
  35.         global $table_prefix, $wpdb, $this_year, $next_year;
  36.         $query = "SELECT COUNT( * ) as comment_count
  37.                 FROM `wp_comments`
  38.                 WHERE comment_date >= '{$this_year}-01-01'
  39.                 AND comment_date < '{$next_year}-01-01'
  40.                 AND comment_type = ''
  41.                 AND comment_approved =1";
  42.         $comments['comment'] = $wpdb->get_results($query);
  43.         $comments['comment'] = $comments['comment'][0]->comment_count;

  44.         $query = "SELECT COUNT( * ) as ping_count
  45.                 FROM `wp_comments`
  46.                 WHERE comment_date >= '{$this_year}-01-01'
  47.                 AND comment_date < '{$next_year}-01-01'
  48.                 AND comment_type != ''
  49.                 AND comment_approved =1";
  50.         $comments['ping'] = $wpdb->get_results($query);
  51.         $comments['ping'] = $comments['ping'][0]->ping_count;

  52.         return $comments;
  53.     }

  54.     function ty_dashboard_widget_setup() {
  55.         wp_add_dashboard_widget( 'ty_dashboard_widget', '今年信息', 'ty_dashboard_widget' );
  56.     }

  57.     add_action('wp_dashboard_setup', 'ty_dashboard_widget_setup');
  58. }
复制代码
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

手机版|小黑屋|日星网 ( 黑ICP备07001742号 )

GMT, 2018-11-19 07:01 AM , Processed in 0.017648 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表