插件中的当前用户返回空

时间:2015-07-06 作者:mousesports

我目前正在开发一个插件,并试图利用$current\\u user global。

class Something {
  public function __construct() {
    $this->get_user();
    var_dump( $this->user );
  }

 private function get_user() {
    require_once( ABSPATH . \'/wp-includes/pluggable.php\' );
    $this->user = wp_get_current_user();
  }
}
这实际上是可行的。然而,我需要调用pluggable。php文件,这应该不是必需的。我还尝试调用全局$current\\u用户变量,但无济于事:它总是返回NULL。。。当然,除非我导入可插拔的。php同样如此:

private function get_user() {
  require_once( ABSPATH . \'/wp-includes/pluggable.php\' );
  global $current_user;
  get_currentuserinfo();
  $this->user = $current_user;
}
这可能与以下内容重复:$current_user var returns NULL

我已经尝试了所有的解决方案,但仍然需要导入可插拔的。php无论如何。

似乎另一个线程的作者找到了一个没有共享的解决方案。

还有谁有过这个问题?谢谢

1 个回复
最合适的回答,由SO网友:fuxia 整理而成

等待操作plugins_loaded 在创建类实例之前。此时将加载可插入函数。从…起wp-settings.php:

/**
 * Fires once activated plugins have loaded.
 *
 * Pluggable functions are also available at this point in the loading order.
 *
 * @since 1.5.0
 */
do_action( \'plugins_loaded\' );
我甚至会等待wp_loaded 在大多数情况下。然后是全球WP_Roles 对象已设置,您知道主题和区域设置–您很可能不会因为缺少信息而再次遇到问题。

在加载插件的主文件时,不要只创建类实例。这总是太早了。通常,您希望首先检查请求,以排除代码减慢其他插件AJAX请求或WP的注释/XML RPC/提要处理。

因此,插件的主文件可能如下所示:

add_action( \'wp_loaded\', [ new Something, \'setup\' ] );

结束

相关推荐

未从短码调用接收属性的方法,一般OOP问题

方法OpenMods 您在下面看到的,应该是由fgetcsv 函数,并将其放入HTML表中。__construct 通常情况下,应该定义类的属性,并且shortcode 应该从短代码中获取两个属性,如果mods返回,应该调用类中的另一个函数。OpenMods 当它在类之外时,没有类属性调用,所以我很确定这不是问题的根源。我的问题很可能在于__construct 和shortcode; 然而,请不要忽视OpenMods,因为它可能包含导致问题的错误,我只是给出了我的估计,因为我不得不寻求帮助,所以我的估计值