Прежде всего, pre_post_update
ловушка не срабатывает при создании, она срабатывает непосредственно перед обновлением существующего сообщения.
Вам необходимо использовать save_post
ловушка, она будет срабатывать всякий раз, когда сообщение или страницасоздано или обновлено
add_action( 'save_post', 'update_voucher_deadline', 10, 3 );
/**
* Save post metadata when a post is saved.
*
* @param int $post_id The post ID.
* @param post $post The post object.
* @param bool $update Whether this is an existing post being updated or not.
*/
function update_voucher_deadline( $post_id, $post, $update ) {
$evergreen = get_field('offer_evergreen');
if ($evergreen == "evergreen-yes") {
$year = date('Y');
$month = date('m');
$currentDate = "". $year . "-" . $month . "-" . date('d') . date('H') . ":" . date('i') . ":" . date('s');
$day = date("t", strtotime($currentDate));
$endOfMonth = "". $year . "-" . $month . "-" . $day . "23:59:00";
//global $post; Tried with this uncommented and also didn't work.
if ( ! add_post_meta($post_id, 'offer_voucher_deadline', $endOfMonth)) {
update_post_meta($post_id, 'offer_voucher_deadline', $endOfMonth);
}
}
}
Примечание: вы можете обновить свою функцию, используя $update
param, если необходимо.