如何解决WordPress插件中如何使用与当前用户相关的函数时出错的问题

我热爱春天,因为春天充满了生机,充满了新的希望!

问题描述

当你在插件中使用与当前用户相关的函数/判断条件,诸如:

1
2
is_user_logged_in()
wp_get_current_user()

is_user_logged_in() wp_get_current_user()

之类的时候,你会发现类似以下错误:

Fatal error: Call to undefined function is_user_logged_in()

或者:

Fatal error:Call to undefined function wp_get_current_user() ......

初步的想,你会觉得:is_user_logged_in() 和 wp_get_current_user()出错的根本原因应该是一致的,的确是这样,那我们就拿前者说事儿,自觉忽略后者。

原因

为什么会这样呢?在Wordpress.org官方的is_user_logged_in()函数的说明页面,没有说明这个判断函数不能在插件中使用,但的确是不能使用的。只有一句描述:

This Conditional Tag checks if the current visitor is logged in. This is a boolean function, meaning it returns either TRUE or FALSE.

没有任何notice 啊、tip啊之类的。只是在该页面(http://codex.wordpress.org/Function_Reference/is_user_logged_in)的最后的related中,有一个:

Article: Introduction to WordPress conditional functions (这是个链接)

点击那个链接进去,是Wordpress的条件标签(Conditional Tags)综合说明页面,在这个页面上,有这么一句话:

The Conditional Tags can be used in your Template files to change what content is displayed and how that content is displayed on a particular page depending on what conditions that page matches.

可用于你的模板文件以怎么着,没说插件的事儿。这是原因吗,不是根本原因!不是的,根本原因是判断用户是在init这个action之后,而如果你的插件用的是plugins_loaded这个action,那么,它至少会比init早三个action载入,所以,在挂在这个Hook上的函数中就无法判断/获取当前用户信息了,这应该是根本原因了,解决这个问题的最简单的方法其实很简单的,如下。

解决

1
2
3
4
5
6
7
8
9
10
//如果不存在这个 is_user_logged_in 函数,就引入pluggable.php文件

if(!function_exists('is_user_logged_in'))   
require (ABSPATH . WPINC . '/pluggable.php');  

//下面你就可以正常使用 is_user_logged_in() 函数啦

if(is_user_logged_in()) {

}

//如果不存在这个 is_user_logged_in 函数,就引入pluggable.php文件 if(!function_exists('is_user_logged_in')) require (ABSPATH . WPINC . '/pluggable.php'); //下面你就可以正常使用 is_user_logged_in() 函数啦 if(is_user_logged_in()) { }

参考上面的样例,修改你的插件代码即可。

原创文章,仅发布在索凌网络和WP大学,谢绝转载,如果真憋不住想转载,请保留这段话和本文链接,否则,嘿嘿,你知道的!

到此这篇关于如何解决WordPress插件中如何使用与当前用户相关的函数时出错的问题就介绍到这了。其实如果我们足够勇敢,东京真的不远,只要你有破釜沉舟的勇气。更多相关如何解决WordPress插件中如何使用与当前用户相关的函数时出错的问题内容请查看相关栏目,小编编辑不易,再次感谢大家的支持!

您可能有感兴趣的文章
WordPress站点Gravatar头像前后台不显示的如何解决办法

WordPress做公司官网好吗?会不会显得档次很低?

WordPress主题需要支持https吗?WordPress站点如何如何实现https?

WordPress站点的页面/标签/分类URL地址如何添加.html?

WordPress站点更换了域名后数据库应该如何操作替换新旧域名?