Использование методов установки продукта CRUD в Woocommerce 3 - PullRequest
0 голосов
/ 01 июля 2018

В приведенном ниже коде я не могу установить категорию продукта и теги продукта:

Код находится в моем файле functions.php:

<?php

$product = new WC_Product;
$product->set_name("product");
$product->set_regular_price('150');
$set_cat = $product->set_category_ids( array(17) );
$set_tag = $product->set_tag_ids( [18, 19] );
$product->save();

var_dump($set_cat);//NULL
var_dump($set_tag);//NULL

Продукт создан с правильными name и price. Но я ничего не получаю за категорию продукта и теги продукта:

terms:
[terms table][1]

term_taxonomy:
[term_taxonomy table][2]

Редактировать: Я переместил этот код в файл index.php, и он работает.

1 Ответ

0 голосов
/ 01 июля 2018

Начиная с Woocommerce 3, доступны новые методы CRUD .

Но вы не можете использовать метод установки в переменных , как в следующем фрагменте вашего кода:

$set_cat = $product->set_category_ids( array(17) );
$set_tag = $product->set_tag_ids( [18, 19] );

Вместо должно быть только:

$product->set_category_ids( array(17) );
$product->set_tag_ids( [18, 19] );

$product->save();

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

$get_cats = $product->get_category_ids();
$get_tags = $product->get_tag_ids();

var_dump($get_cats); // NOW OK
var_dump($get_tags); // NOW OK

Для файла function.php вы должны встроить свой код в функцию, подобную:

function my_custom_function_code(){
    // Get a new empty WC_Product instance object
    $product = new WC_Product; 

    # Setter methods (set the data)

    $product->set_name("product");
    $product->set_regular_price('150');

    $product->set_category_ids( array(17) );
    $product->set_tag_ids( [18, 19] );

    # Save the data

    $product->save(); // Always at the end to save the new data

    # Getter methods (Read the data)

    $get_cats = $product->get_category_ids();
    $get_tags = $product->get_tag_ids();

    # Display some raw data

    var_dump($get_cats); // NOW OK
    var_dump($get_tags); // NOW OK
}

Тогда вы можете использовать его где угодно (как в вашем файле index.php) просто с:

my_custom_function_code();
...