Выполнять функцию при изменении значения (крон задача)?

Для выполнения функции при изменении значения в WordPress можно использовать хук (hook) save_post. Этот хук срабатывает каждый раз, когда выполняется сохранение поста или страницы.

Вот как можно использовать этот хук для выполнения определенной функции:

1. Вам необходимо определить функцию, которая будет выполняться при изменении значения. Например, допустим, вы хотите обновить мета-данные при сохранении поста. Вот пример функции:

function update_post_meta_on_save( $post_id ) {
    // Проверяем, является ли это сохранением поста
    if ( wp_is_post_revision( $post_id ) || wp_is_post_autosave( $post_id ) ) {
        return;
    }
  
    // Обновляем требуемые мета-данные
    update_post_meta( $post_id, 'my_meta_key', 'new_meta_value' );
}

2. Затем вам необходимо привязать эту функцию к хуку save_post с помощью функции add_action в файле functions.php вашей темы или в плагине. Вот пример:

add_action( 'save_post', 'update_post_meta_on_save' );

Теперь, когда вы сохраняете пост или страницу, функция update_post_meta_on_save будет выполняться и обновлять указанные мета-данные.

Отлично, вы привязали функцию к хуку save_post, чтобы она выполнялась каждый раз, когда происходит сохранение поста или страницы. Но что, если вы хотите запускать эту функцию не вручную при сохранении, а в определенное время, используя крон задачу?

WordPress предлагает инструмент wp_schedule_event(), который позволяет создавать периодические задачи (cron jobs). Ваша крон задача будет действовать таким образом, что функция будет выполняться автоматически в заданное время.

1. Вам нужно определить функцию, которую вы хотите выполнять. Например:

function update_post_meta_cron() {
    // Обновляем необходимые мета-данные
    update_post_meta( 123, 'my_meta_key', 'new_meta_value' );
}

2. Затем вам нужно создать или редактировать функцию, которая будет создавать крон задачу. Вот пример:

function setup_my_cron_job() {
    if ( ! wp_next_scheduled( 'my_cron_hook' ) ) {
        wp_schedule_event( time(), 'daily', 'my_cron_hook' );
    }
}
add_action( 'wp', 'setup_my_cron_job' );

3. И, наконец, вам нужно привязать созданную вами функцию update_post_meta_cron к хуку крон задачи. Вот пример:

add_action( 'my_cron_hook', 'update_post_meta_cron' );

Теперь функция update_post_meta_cron будет автоматически выполняться каждый день в заданное вами время, обновляя указанные мета-данные.

Убедитесь, что это время соответствует требуемому периоду выполнения вашей крон задачи, и что вы правильно настроили и активировали доступ к cron jobs на вашем сервере.

В заключение, использование хука save_post или крон задачи в WordPress позволяет вам выполнять функции при изменении значения или в определенное время соответственно.