登录的用户 id 没有进入 wordpress cron 作业

Posted

技术标签:

【中文标题】登录的用户 id 没有进入 wordpress cron 作业【英文标题】:logged in user id not getting in wordpress cron job 【发布时间】:2018-07-09 13:47:25 【问题描述】:

每当我尝试在 wordpress cron 作业中获取当前用户 ID 时,它都会返回 0。有什么方法可以在 wordpress cron 作业中获取当前登录的用户 ID。

这里是示例代码。

add_filter( 'cron_schedules', 'isa_add_every_three_minutes' );
function isa_add_every_three_minutes( $schedules ) 
    $schedules['every_three_minutes'] = array(
        'interval'  => 180,
        'display'   => __( 'Every 3 Minutes', 'textdomain' )
);
    return $schedules;


// Schedule an action if it's not already scheduled
if ( ! wp_next_scheduled( 'isa_add_every_three_minutes' ) ) 
    wp_schedule_event( time(), 'every_three_minutes', 'isa_add_every_three_minutes' );


// Hook into that action that'll fire every three minutes
add_action( 'isa_add_every_three_minutes', 'every_three_minutes_event_func');
function every_three_minutes_event_func() 
    $user_id = get_current_user_id();
    $user_points = get_user_meta( $user_id, 'remaing_points', true);
    // send mail
    //wp_mail();


方法#1

$user_id = get_current_user_id();

方法#2

$current_user = wp_get_current_user();
$current_user->ID;

我已经尝试了这两种方法来获取用户 ID,但没有运气。

【问题讨论】:

你能试试这个吗 - global $current_user; $current_user->ID 。希望这应该可行。 @PreP 感谢您的回复,但这并不奏效。 Cron 是由系统运行的,所以它没有登录用户.. @TurtleTread 所以这意味着没有办法在 wp cron 作业中获取用户 ID?或者有什么替代解决方案? 【参考方案1】:

如果您通过运行 wp-cron.php 手动调用 cron,则没有用户。

如果您依赖 WordPress 的 cron 来触发用户操作请求,如果用户已登录,您可能会获得一个非零用户 ID。如果用户是访客/未登录用户,您将获得用户 id 为 0。

【讨论】:

以上是关于登录的用户 id 没有进入 wordpress cron 作业的主要内容,如果未能解决你的问题,请参考以下文章

Wordpress设置必须登录才能查看内容

如果管理员登录,则在 WordPress 中加载不同的样式表

Wordpress登录页面重定向到普通用户的Woocommerce我的帐户页面

wordpress后台登陆地址,怎么进入WordPress后台

如何从 FTP 创建新的 wordpress 管理员用户

用户登录时,Wordpress Webview 不显示下拉列表中的值?