【问题标题】:Run a Change Role Cron Job on WordPress via cPanel通过 cPanel 在 WordPress 上运行更改角色 Cron 作业
【发布时间】:2018-08-06 22:55:37
【问题描述】:

有人可以在这里指出正确的方向吗?

我正在尝试设置一个插件,该插件在激活时设置一个 cron 作业,以在用户注册日期 3 个月后更改用户的用户角色。停用插件时也应删除 cron 作业。

目前的插件代码是:

<?php
/*
Plugin Name: Cron Job
*/

add_filter( 'cron_schedules', 'example_add_cron_interval' );

function example_add_cron_interval( $schedules ) {
    $schedules['five_seconds'] = array(
        'interval' => 5,
        'display'  => esc_html__( 'Every Five Seconds' ),
    );

    return $schedules;
}

function cron_hook(){
    $users = get_users(
        array(
            'fields' => array( 'ID', 'user_registered' ),
            'role'   => 'coaching',
        )
    );

    foreach ( $users as $user ) {

        $time = $user->user_registered;

        if(strtotime($time) < strtotime('-3 months')) {
            $u = new WP_User( $user->ID );
            // Remove role
            print_r($u);

            $u->remove_role( 'coaching' );

            // Add role
            $u->add_role( 'platinum' );
        }
    }
}

//echo '<pre>'; print_r( _get_cron_array() ); echo '</pre>';

public static function activate() {
    wp_schedule_event( time(), 'five_seconds', 'cron_job' );
}

public static function deactivate() {
    wp_clear_scheduled_hook('cron_job');
}

我正在通过 cPanel 运行 wp-cron.php(当前设置为五秒进行测试)。

【问题讨论】:

    标签: php wordpress cron


    【解决方案1】:

    设法找到解决方案。

    我完成的代码是:

    register_activation_hook ( __FILE__, 'cron_job' );
    
    function cron_job() 
    {
    wp_schedule_event( time(), 'hourly', 'hourly_job' );
    }
    
    add_action( 'hourly_job', 'cron_job_task' );
    
    function cron_job_task () 
    {
        $users = get_users(
            array(
                'fields' => array( 'ID', 'user_registered' ),
                'role'   => 'coaching',
            )
        );
    
        foreach ( $users as $user ) {
            $time = $user->user_registered;
            if(strtotime($time) < strtotime('-3 months')) {
                $u = new WP_User( $user->ID );
                $u->remove_role( 'coaching' );
                $u->add_role( 'platinum' );
            }
        }
    }
    ?>
    

    每小时设置一个 cPanel cron 作业。

    【讨论】:

      猜你喜欢
      • 2019-06-30
      • 2021-01-18
      • 1970-01-01
      • 2014-07-22
      • 2017-02-27
      • 2013-03-11
      • 2021-07-28
      • 2018-02-07
      • 1970-01-01
      相关资源
      最近更新 更多