首页 > 解决方案 > 获取简码中的当前用户 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');

标签: phpwordpress

解决方案


您需要在加载用户后检查用户。我会钩到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');

推荐阅读