【问题标题】:Update user meta every 10 minutes每 10 分钟更新一次用户元数据
【发布时间】:2019-10-22 19:11:43
【问题描述】:

我创建了一些自定义用户元数据,它具有价值。我希望每 10 分钟更新一次该值或用户在其中的任何值并用“锁定”一词替换。

【问题讨论】:

  • 到目前为止你尝试了什么?
  • 我在下面尝试了这段代码并得到了一个错误.. function update_users_megakey(){ update_user_megakey($user_id, 'change_mega_value', time() + 600 * 00 * 00 *00);
  • 究竟是什么错误?你是如何使用这个功能的?您需要向我们提供更多详细信息,以便我们为您提供帮助。
  • 顺便说一句,乘以600 * 00 * 00 * 00 是行不通的...
  • 您可以通过使用 cron 作业来实现这一目标

标签: wordpress metadata


【解决方案1】:

要执行每十分钟运行一次的 cron 作业,以下是代码示例:

你可以使用https://generatewp.com来生成这样的函数

// Schedule Cron Job Event
add_action( 'init', 'my_custom_cron_job' );
function my_custom_cron_job() {
    if ( ! wp_next_scheduled( 'myprefix_update_user_phone_cron' ) ) {
        wp_schedule_event( time(), 'ten_minutes', 'myprefix_update_user_phone_cron' );
    }
}

// Scheduled Action Hook
add_action( 'myprefix_update_user_phone_cron', 'myprefix_update_user_phone' );
function myprefix_update_user_phone( ) {
    // Do what you want
    error_log('TEST MY CRON');
}

// Custom Cron Recurrences
function custom_cron_job_recurrence( $schedules ) {
    $schedules['ten_minutes'] = array(
        'display' => __( 'Every 10 minutes', 'textdomain' ),
        'interval' => 600,
    );
    return $schedules;
}
add_filter( 'cron_schedules', 'custom_cron_job_recurrence' );

【讨论】:

  • 感谢@Robin Zecka Ferrari,您的代码按预期工作,只是您的函数旨在在设定的时间抛出错误日志,这正是我想要的,但我想更改函数更新用户网站网址,我做了下面的修改,但它对我不起作用,请帮助....
  • 由于空间问题,我正在粘贴我尝试使用普通注释框的代码
【解决方案2】:
// Schedule Cron Job Event
add_action( 'init', 'my_custom_cron_job' );
function my_custom_cron_job() {
if ( ! wp_next_scheduled( 'myprefix_update_user_phone_cron' ) ) {
    wp_schedule_event( time(), 'ten_minutes', 'myprefix_update_user_phone_cron'     );
}
}

// Scheduled Action Hook
add_action( 'myprefix_update_user_phone_cron', 'myprefix_update_user_phone' );
function myprefix_update_user_phone( ) {
// Do what you want
$website = 'http://wordpress.org';
update_user_meta($user_id, 'user_url', $website);
}

// Custom Cron Recurrences
function custom_cron_job_recurrence( $schedules ) {
$schedules['ten_minutes'] = array(
    'display' => __( 'Every 10 minutes', 'textdomain' ),
    'interval' => 300,
);
return $schedules;
}
add_filter( 'cron_schedules', 'custom_cron_job_recurrence' );

【讨论】:

  • 但是这段代码不起作用,请你帮我修复 Scheduled Action Hook,并让它更新 user_url。谢谢。
  • 我不明白你的目标......在 myprefix_update_user_phone 函数中,您使用变量 $user_id 但未设置此变量。如果您想更新所有用户,也许您可​​以尝试类似 $users = get_users(); foreach($users as $user){ $website = 'wordpress.org'; update_user_meta($user->ID, 'user_url', $website); }
  • // Scheduled Action Hook add_action( 'myprefix_update_user_phone_cron', 'myprefix_update_user_phone' ); function myprefix_update_user_phone( ) { // Do what you want $users = get_users(); foreach($users as $user){ $website = 'wordpress.org'; myprefix_update_user_phone($user->ID, '$user_url', $website); } }
  • 那是我添加的内容,但不起作用,为了清楚起见,让我将其发布为答案,以便您可以查看代码并知道为什么不更新用户 url。
  • @RobinZecKaFerrari - 这就是我添加的内容,但它不起作用,为了清楚起见,让我将其发布为答案,以便您可以查看代码并知道为什么不更新用户 url。
【解决方案3】:
// Scheduled Action Hook
add_action( 'myprefix_update_user_phone_cron', 'myprefix_update_user_phone' );
function myprefix_update_user_phone( ) {
    // Do what you want
    $users = get_users(); 
    foreach($users as $user){ 
    $website = 'wordpress.org'; 
    myprefix_update_user_phone($user->ID, '$user_url', $website);
    }
}

【讨论】:

  • 这就是我添加代码的方式,但还不行,请帮忙。
猜你喜欢
  • 2010-11-16
  • 1970-01-01
  • 1970-01-01
  • 2020-06-23
  • 2021-03-07
  • 2014-05-01
  • 2012-02-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多