Woocommerce - добавить новые значения атрибутов в переменный продукт - PullRequest
1 голос
/ 19 апреля 2020

Перво-наперво: это мой первый вопрос, размещенный на stackoverflow. Иными словами, это первая проблема, которую я не смог решить самостоятельно с вашей помощью (огромное спасибо всем вам, вы делаете мир go кругом!).

Мой вопрос связан с ответом заданный @ LoictheAzte c на другой вопрос (изначально я планировал опубликовать свой вопрос в комментариях к этому посту, но, поскольку я скрываюсь от меня, мне не хватает репутации, чтобы это сделать): { ссылка }

Я создал переменный продукт и хотел бы программно добавить новые значения атрибутов в этот продукт.

Я скопировал и немного изменил код по ссылке выше, но когда я попытался выполнить его, я получил следующие ошибки:

Notice: wc_get_product was called incorrectly. wc_get_product should not be called before the woocommerce_init, woocommerce_after_register_taxonomy and woocommerce_after_register_post_type actions have finished. Backtrace: require_once('wp-load.php'), require_once('wp-config.php'), require_once('wp-settings.php'), do_action('plugins_loaded'), WP_Hook->do_action, WP_Hook->apply_filters, execute_active_snippets, execute_snippet, eval, create_product_variation, wc_get_product, wc_doing_it_wrong

Fatal error: Uncaught Error: Call to a member function get_name() on boolean

Проблема, как правило, заключается в следующей строке кода в размещенной выше ссылке:

'post_title'  => $product->get_name()

В качестве напоминания и по соображениям удобства переменная продукта определяется следующим образом:

$product = wc_get_product($product_id)

Значения атрибута правильно добавляются в переменный продукт, поэтому код выполняет то, что я ожидал и намеревался сделать, но сайт все еще падает.

Насколько я понимаю ситуацию, возникающие проблемы (и их причины) могут быть связаны с:

  1. Изменения, которые я сделал в коде (уже проверено с кодом по умолчанию и примером, приведенным @ LoictheAzte c в его посте, та же проблема)
  2. Как всегда, проблемы совместимости с плагинами и / или тема (уже проверена, деактивированы все остальные плагины и изменена на тему по умолчанию; также пробовал код с установкой fre sh WP)
  3. В соответствии с ответом, данным кому-то, имеющему аналогичную проблему (https://github.com/woocommerce/woocommerce/issues/23160), проблема также может быть вызвана тем, что переменная $ product неправильно «связана с действительным продуктом» (не уверены в этот, но я думаю, что «родительский» переменный продукт уже создан, это хорошо) или «продукт больше не существует» (может определенно исключить этот).

Любая помощь, как бы высоко ценится.

1 Ответ

1 голос
/ 20 апреля 2020

Если вы используете плагины Code Snippets, попробуйте следующий код. (Выполнить пример кода в хуке woocommerce)

add_action('woocommerce_after_register_post_type', 'test_create_product_variation');
function test_create_product_variation(){
    $parent_id = 746; // Or get the variable product id dynamically

    // The variation data
    $variation_data =  array(
        'attributes' => array(
            'size'  => 'M',
            'color' => 'Green',
        ),
        'sku'           => '',
        'regular_price' => '22.00',
        'sale_price'    => '',
        'stock_qty'     => 10,
    );

    // The function to be run
    create_product_variation( $parent_id, $variation_data );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...