今天登陆后台检查网站的时候,突然发现了WPJAM BASIC插件的一处报错“if($unread_count = $wpjam_topic_messages[‘unread_count’]){”,刚开始以为是WPJAM BASIC插件和其他插件冲突引起的问题,但是通过再次的设置并没有得到有效的解决,网上搜了一下,看到论坛上也有遇到相同的问题,简单记录一下WPJAM BASIC插件报错提示:if($unread_count = $wpjam_topic_messages[‘unread_count’]的解决方法。
1、找到插件的”wpjam-basic/include/topic.php“文件,找到如下代码(大概在第83行到112行):
add_filter('wpjam_pages', 'wpjam_topic_admin_pages');
add_filter('wpjam_network_pages', 'wpjam_topic_admin_pages');
function wpjam_topic_admin_pages($wpjam_pages){
$subs = array();
$menu_title = 'WP问题';
if(wpjam_topic_get_weixin_user()){
$wpjam_topic_messages = wpjam_get_topic_messages();
if($unread_count = $wpjam_topic_messages['unread_count']){
$menu_title .= '<span class="update-plugins count-'.$unread_count.'"><span class="plugin-count">'.$unread_count.'</span></span>';
}
$subs['wpjam-topics'] = array('menu_title'=> '所有问答', 'function'=>'wpjam_topics_page', 'capability' => 'read');
$subs['wpjam-topic'] = array('menu_title'=> '我要提问', 'function'=>'wpjam_topic_edit_page','capability' => 'read');
$subs['wpjam-topic-user'] = array('menu_title'=> '个人资料', 'function'=>'wpjam_topic_user_page','capability' => 'read');
if(isset($_GET['page']) && ($_GET['page'] == 'wpjam-topic-messages')){
$subs['wpjam-topic-messages'] = array('menu_title'=> '消息提醒', 'function'=>'wpjam_topic_messages_page','capability' => 'read');
}
}
$wpjam_pages['wpjam-topics'] = array(
'menu_title' => $menu_title,
'icon' => 'dashicons-wordpress',
'subs' => $subs,
'capability' => 'read'
);
return $wpjam_pages;
}
2、将上面的所有代码注释掉或删除掉即可,上面的代码应该是将“WP问题”这个按钮添加到后台左侧导航的意思,只要将该函数删除即不会在左侧添加按钮了,也不影响插件的其他正常运行。为了插件的安全起见,我没有直接删除代码,而是选择注释。注释后的效果如下图所示:
我看到其他的Wordpress相关的论坛里,有人担心这个“WP问题”会不安全、会窃取自己网站数据的,这个可以完全放心的,作者没必要怎么干。一来WPJAM BASIC是提交到了wordpress插件官方的,如果有这些不安全的因素Wordpress也不会通过,而且七牛云的官方插件推荐里,也有WPJAM BASIC;二来看插件的代码就知道,这个“WP问题”只是通过API的方式调用作者服务器的数据而已。所以,如果是基于这种安全考虑的,就太小看我爱水煮鱼了。
另外,如果启用了WPJAM BASIC插件里面的“文章目录”功能,而刚好网站又设置了全站链接都是新窗口打开的话,那么将会导致点击文章目录的链接时也是新窗口打开,这样不利于用户体验也看着很别扭。解决办法是,在“文章目录”的设置项里,找到“JavaScript 代码”,在第二行添加如下代码:
jQuery("#toc a").attr("target","_self"); //设置不在新窗口打开。
修改后的完整代码如下:
jQuery(document).ready(function(){
jQuery("#toc a").attr("target","_self"); //设置不在新窗口打开。
jQuery('#toc span').on('click',function(){
if(jQuery('#toc span').html() == '[显示]'){
jQuery('#toc span').html('[隐藏]');
}else{
jQuery('#toc span').html('[显示]');
}
jQuery('#toc ul').toggle();
jQuery('#toc small').toggle();
});
});
这样,就算你的网站设置了全站所有链接都是新窗口打开的,点击文章目录的时候也不会采用新窗口。