php - 获取简码中的当前用户 ID 返回永远 0
问题描述
我正在尝试自定义放入自定义插件中的简码,但我无法获取用户 ID,它总是返回 0。
用 current_user_can 理解角色也可能没问题,但任何信息总是空的。
这里的代码:
add_action( 'plugins_loaded', 'check_current_user' );
function check_current_user() {
// Your CODE with user data
global $current_user;
$current_user = wp_get_current_user();
return $current_user->ID;
}
function appp_hide_content_shortcode( $atts, $content = '' ) {
if( class_exists('AppPresser') && AppPresser::is_app() )
return check_current_user();
else
return $content;
}
add_shortcode('appp_hide_content', 'appp_hide_content_shortcode');
解决方案
您需要在加载用户后检查用户。我会钩到init
。您不能在不延迟执行的情况下直接在插件中调用可插入函数。解决问题的更简单方法是将短代码包含在主题的 functions.php 中,而不是插件中。但下面会执行。
add_action( 'init', 'check_current_user' , 999);
function check_current_user() {
// This returns current user id
return get_current_user_id();
}
function appp_hide_content_shortcode( $atts, $content = '' ) {
if( class_exists('AppPresser') && AppPresser::is_app() ){
// This is only returning an integer here.
return check_current_user();
} else {
return $content;
}
}
add_shortcode('appp_hide_content', 'appp_hide_content_shortcode');