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

品味人生 • 发布于 2019-02-01 21:37:02

这个家伙很害羞,不想介绍自己!

今天开始研究如何调整网站的wp后台页面,初步认知了wordpress后台首页如何添加新的挂件,并且删除掉不需要的默认模块。

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

一、移除不需要的挂件

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

function remove_dashboard_widgets(){
global$wp_meta_boxes;
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_plugins']);
unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']);
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_incoming_links']);
unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']);
}

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函数。该函数的使用方法为:

wp_add_dashboard_widget(
$widget_id,//挂件的ID
$widget_name, //显示名称
$callback, //内容回调函数
$control_callback//控制函数回调
)

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


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

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

// 添加挂件

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


add_action('wp_dashboard_setup', 'example_add_dashboard_widgets' ); // 挂载example_dashboard_widget


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


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

function ty_dashboard_widget() {
$posts = ty_posts_counter();
$comments = ty_comments_counter();
echo <<


今年发表文章:{$posts['publish']}篇公开文章,{$posts['private']}篇私人文章。

今年收到留言:{$comments['comment']}条留言,{$comments['ping']}条Pingback/Trackback。


TYDW;
}

function ty_posts_counter() {
global $table_prefix, $wpdb, $this_year, $next_year;
$query = "SELECT COUNT( * ) as ty_posts
FROM `{$table_prefix}posts`
WHERE post_date >= '{$this_year}-01-01'
AND post_date < '{$next_year}-01-01'
AND post_type = 'post'
AND post_status = 'publish'";
$posts['publish'] = $wpdb->get_results($query);
$posts['publish'] = $posts['publish'][0]->ty_posts;

$query = "SELECT COUNT( * ) as ty_private_posts
FROM `{$table_prefix}posts`
WHERE post_date >= '{$this_year}-01-01'
AND post_date < '{$next_year}-01-01'
AND post_type = 'post'
AND post_status = 'private'";
$posts['private'] = $wpdb->get_results($query);
$posts['private'] = $posts['private'][0]->ty_private_posts;
return $posts;
}

function ty_comments_counter() {
global $table_prefix, $wpdb, $this_year, $next_year;
$query = "SELECT COUNT( * ) as comment_count
FROM `wp_comments`
WHERE comment_date >= '{$this_year}-01-01'
AND comment_date < '{$next_year}-01-01'
AND comment_type = ''
AND comment_approved =1";
$comments['comment'] = $wpdb->get_results($query);
$comments['comment'] = $comments['comment'][0]->comment_count;

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

return $comments;
}

function ty_dashboard_widget_setup() {
wp_add_dashboard_widget( 'ty_dashboard_widget', '今年信息', 'ty_dashboard_widget' );
}

add_action('wp_dashboard_setup', 'ty_dashboard_widget_setup');
}