如何在Pluggable.php中使用我的插件文件中的函数

时间:2020-10-04 作者:chris

我正在创建一个插件,需要使用get\\u user\\u by()和wp\\u check\\u password()以及wordpress pluggable中提供的一些很酷的函数。但是它总是抛出一个未定义的函数错误。

但是如果我像这样直接在插件文件中包含该文件

include (ABSPATH . \'wp_includes/pluggable.php\')
我将能够在我的插件中使用这些函数,但我读到直接包含这些文件并不好,所以我想知道最好的方法来避免冲突。我也尝试过创建这样的函数

add_action(\'plugins_loaded\', \'show\');
function show() {
$user = get_user_by(\'ID\', 1);
return $user;
}
但这并不奏效。

1 个回复
SO网友:Rup

不,您不应该明确要求使用pluggables。插件中的php。它们的全部要点是,它们可以被插件覆盖,如果您在一个确实想覆盖的插件之前加载它们,那么这将失败。加载顺序为(参见wp-settings.php):

加载活动插件require pluggable.php

  • do_action( \'plugins_loaded\' );
  • 因此,从plugins\\u加载操作开始,就可以使用可插入功能。这将涵盖您可能要使用的几乎所有WordPress挂钩:

    如果你想让你的插件在加载时使用一个可插入的功能,那么把逻辑放在一个插件加载的处理程序中,否则把逻辑放在相应的操作处理程序或过滤器中,它就会正常工作。

    不管怎样,你的例子对我来说很有用。我放弃了this script 进入我的mu插件文件夹(在插件之前加载),然后

    我没有从get_user_by 调用您的版本没有任何可观察的内容,因此我添加了error_log() 呼叫

    error_log( print_r( $user, true ) );
    
    我确实看到我的用户1正确地登录到我的服务器错误日志