Использование update_post_meta при создании продукта подписки в WooCommerce - PullRequest
2 голосов
/ 04 марта 2020

В настоящее время я создаю плагин, который собирает данные с их номерного знака. Все работает просто отлично. Сообщение будет создано, я получу ID созданного сообщения и т. Д. c. Но в самом конце моей функции ... Я бы хотел обновить мета поста так:

update_post_meta($product_id, '_regular_price', '0');
update_post_meta($product_id, '_subscription_period_interval', '1');
update_post_meta($product_id, '_subscription_period', 'week');

Но ничего не происходит. Я попытался запустить функцию снова, поместив код выше где-то еще, и что я пробовал несколько мест внутри моего кода. Даже попытался создать совершенно новую функцию для этих трех строк. Все еще не повезло.

Я попытался вернуть мета поста из только что созданного поста. Просматривая возвращенные данные, я вижу, что моя post_meta была установлена, но при посещении записи из архива типов записей WordPress мета записи была сброшена / проигнорирована.

Вот с чем я сталкиваюсь: enter image description here

Как видите, мета поста устанавливается, но при просмотре внутри моего архива ... Не установлено , Я даже пытался с sleep (3) убедиться, что сообщение было создано до update_post_meta. Не повезло.

Есть идеи или советы, как мне решить эту проблему?

Я бы хотел добавить это, взяв эти 3 строки и добавив их в пример: функции. php, а затем хардкодирование идентификаторов, то это будет работать. Таким образом, короткая версия состоит в том, что при создании сообщения 3 строки ничего не делают, даже если идентификатор установлен правильно. Так что это должно быть что-то, что нужно при создании сообщения et c ...

Edit

Вы просили посмотреть, где устанавливается product_id:

 $post_data = array(
        'post_author'   => $author,
        'post_name'     => $postname,
        'post_title'    => $data['title'],
        'post_content'  => $data['content'],
        'post_excerpt'  => $data['excerpt'],
        'post_status'   => 'draft',
        'ping_status'   => 'closed',
        'post_type'     => 'product',
    );

    // Creating the product (post data)
    $product_id = wp_insert_post( $post_data );

WordPress # WooCommerce

1 Ответ

0 голосов
/ 04 марта 2020

Сначала кажется, что вы пытаетесь создать простой продукт по подписке ... Итак, вы забыли установить тип продукта, subscription, а также некоторые другие вещи, связанные с ценой подписки на продукт. * Это должно лучше работать сейчас.

...