如何在时间到期时调用函数

时间:2020-08-18 作者:freedom667

我有此函数,但函数名为;用户\\u profile\\u update\\u errors;。因此,没有压力,它无法工作;“编辑”;用户编辑页面中的按钮。我应该使用哪个函数?

如果输入的日期大于今天的日期,则会删除访问级别。

add_action( \'user_profile_update_errors\', \'crf_user_profile_update_errors\', 10, 3 );

function crf_user_profile_update_errors($errors, $update, $user ) {
$current_date = date("Y-m-d");
$date_to_compare = $_POST[\'year_of_birth\'];
if ( ! $update ) {
    return;
}
            //Bugünün Tarihi//            //Girilen Tarih//
if (strtotime($current_date > strtotime($date_to_compare)) ) {
    $user_levels = rua_get_user($user)->get_level_ids(false, false, true);
    foreach ($user_levels as $level) {
            rua_get_user($user)->remove_level($level);
        }
}}

1 个回复
最合适的回答,由SO网友:James Valeii 整理而成

据我所知,每天(或在另一个定期间隔)执行操作的唯一方法是安排cron事件。一种可持续的方法是编写一个小插件,在激活/停用cron时调度/clear\\u。这里有一个您可以使用的插件-我测试了它,以确保它是可安装的,并正确注册了cron事件。您需要将其放入文件(如custom\\u cron\\u event.php)并通过FTP将其传输到/plugins文件夹,或者将其放入文件并压缩(ZIP)文件,以便通过/wp管理界面将其上载到您的网站。

遗憾的是,您不能再依赖在更新用户配置文件以检索用户数据时触发的函数,因为没有更新配置文件。相反,您需要让用户了解您自己,并检测是否需要更改。

<?php
/*
Plugin Name: Custom Plugin
Plugin URI: 
Description: Adds function on cron
Author: 
Version: 1.0
*/

/*  
 * When this plugin is activated, schedule/clear_schedule cron
 */ 
register_activation_hook(__FILE__, \'activate_custom_cron\');
register_deactivation_hook(__FILE__, \'deactivate_custom_cron\');

function activate_custom_cron(){
    wp_schedule_event( time(), \'daily\', \'do_custom_cron_event\');
}

function deactivate_custom_cron(){  
    wp_clear_scheduled_hook(\'do_custom_cron_event\');    
}

add_action( \'do_custom_cron_event\', \'custom_cron_event\' );

function custom_cron_event() {

/*
 * This is where your function goes
 */

     $current_date = date("Y-m-d");

     $users = get_users();
     foreach( $users as $user){

        $date_to_compare = get_user_meta($user->id, \'year_of_birth\');

        if (strtotime($current_date) > strtotime($date_to_compare) ) {

            $user_levels = rua_get_user($user)->get_level_ids(false, false, true);

            foreach ($user_levels as $level) {
                rua_get_user($user)->remove_level($level);
            }
        }
    }
}   

?>