时间:2024-04-02
作为一名WordPress插件开发者,在实际开发过程中,遇到了一些添加消息提醒到后台菜单的需求,例如主题插件升级或待审核评论提醒,但是WordPress并没有提供这样的接口。在网上研究了很久,发现实现这个功能有不止一种方法。
这种方法非常灵活,可以在开发WordPress主题时,添加提醒消息到已有的菜单项目上。
add_filter('add_menu_classes','show_pending_number'); function show_pending_number($menu){ $type = "animals"; $status = "pending"; $num_posts = wp_count_posts($type,'readable'); $pending_count = 0; if(!empty($num_posts->$status)) $pending_count=$num_posts->$status; //需要添加提醒的菜单项目 if($type=='post'){ $menu_str = 'edit.php'; //支持自定义文章类型 }else{ $menu_str = 'edit.php?post_type='.$type; } //遍历菜单,找到需要添加的菜单项目,添加提醒 foreach($menu as $menu_key => $menu_data){ if($menu_str != $menu_data[2]) continue; $menu[$menu_key][0] .= "<span class='update-plugins count-$pending_count'><span class='plugin-count'>".number_format_i18n($pending_count).'</span></span>'; } return $menu; }
这种实现方法是通过直接添加提醒消息字符串到菜单名称标签后面的方法实现的,比较直接,适合需要添加提醒消息到新创建菜单的时候使用。
add_menu_page('AnsPress','AnsPress'.$counts['total'],'delete_pages','anspress',array($this,'dashboard_page'),ANSPRESS_URL.'/assets/answer.png',$pos);
这种方法和上面 AnsPress 的方法类似,也是直接把提醒消息添加到了菜单名称标签后面。
if(apply_filters('woocommerce_include_processing_order_count_in_menu',true)&¤t_user_can('manage_woocommerce')&&($order_count=wc_processing_order_count())){ foreach($submenu['woocommerce'] as $key => $menu_item){ if(0 === strpos($menu_item[0],_x('Orders','Admin menu name','woocommerce'))){ $submenu['woocommerce'][$key][0] .= ''.number_format_i18n($order_count).''; break; } } }
通过上面的代码示例,我们可以发现,添加提醒消息的方法非常简单,只需要获取一个数量,然后加上一些显示起泡效果的前端代码,最后添加到菜单里面即可。掌握了这个方法,我们还可以添加其他类型的提醒,例如待处理用户提交的信息的提醒。
Copyright © 2019-2024 thinkphp.xyz