Обновление мета-сообщения не срабатывает при переходе статуса сообщения - PullRequest
0 голосов
/ 15 октября 2019

Я пытаюсь добавить даты продажи woocommerce при публикации нового продукта (черновик для публикации).

Весь мой код работает вплоть до моего комментария, и все переменные выводятся без ошибок, но когдаЯ проверяю метаданные поста и админа, даты не добавляются. Ничего в get_post_meta и ничего на экране редактирования продукта.

add_action('transition_post_status', array($this, 'knp_add_sale_date'), 20, 3);
public function knp_add_sale_date($new, $old, $post){

    $meta = get_post_meta($post->ID);
    $submissiondata = $this->get_submission($meta['submissionID'][0]);
    $submissiondata['live_status'] = $new;

    //If the post is a new product published from draft. 
    if ($old == 'draft' && $new == 'publish' && $post->post_type == 'product') {    

        //If there is a sale on then set the sale dates
        if (isset($meta['_sale_price'][0])) {   
            $startdatedate = new DateTime('now');
            $startdateformat = $startdatedate->format('Y-m-d');
            $enddate = date('Y-m-d', strtotime($startdateformat. ' + 15 days'));
            $finishdate = new DateTime($enddate);       

            //Everything works till here
            update_post_meta($post->ID, '_sale_price_dates_from', $startdatedate->getTimestamp());
            update_post_meta($post->ID, '_sale_price_dates_to', $finishdate->getTimestamp());

        }   
        $update = $this->post_submission($submissiondata, $meta['submissionID'][0], 'live');                                            

    }       

}

TIA для любых предложений или помощи.

1 Ответ

1 голос
/ 15 октября 2019

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

$meta = get_post_meta($post->ID);
$meta = get_post_meta( $post->ID, '_sale_price', true);

Также проверьте таблицу postmeta для этого идентификатора поста, если установлена ​​опция _sale_price или неткогда вы меняете ловушку 'transition_post_status', это действие.

Эта ловушка применяется перед post_save в базу данных, и если мета не сохраняется до того, как вы не сможете получить значение из базы данных, если оно не установлено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...