Обновление атрибутов продукта WooCommercePhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Обновление атрибутов продукта WooCommerce

Сообщение Anonymous »

Я строю систему заказа на покупку для моего магазина Woocommerce. Все работает, как и ожидалось, за исключением атрибутов продукта. С моим текущим кодом (показан ниже) атрибуты обновляются в базе данных, и они отображаются на странице редактирования продукта, но мой Front End Filter Search Filter не показывает обновленные атрибуты. Я думал, что освежает таблицу поиска, но пока он не работает. Я также очистил кэши (браузер и сервер), но не повезло. Когда я меняю атрибуты через страницу редактирования продукта напрямую, она работает, как и ожидалось, поэтому я думаю, что это как -то связано с моим кодом. < /P>
if (!empty($ov['attributes']) && is_array($ov['attributes'])) {
$pairs = [];
foreach ($ov['attributes'] as $key => $val) {
$name = trim((string)$val);
if ($name === '') continue;
$attr_slug = strtolower(str_replace('_', '-', $key));
$tax = function_exists('wc_attribute_taxonomy_name')
? wc_attribute_taxonomy_name($attr_slug)
: 'pa_' . $attr_slug;
if (!taxonomy_exists($tax)) continue;
$pairs[] = [$tax, $name];
}

if ($pairs) {
foreach ($pairs as [$tax, $name]) {
$term = term_exists($name, $tax);
if (!$term) {
$res = wp_insert_term($name, $tax);
if (!is_wp_error($res)) $term = $res;
}
if ($term && !is_wp_error($term)) {
$term_id = is_array($term) ? (int)$term['term_id'] : (int)$term;
wp_set_post_terms($product_id, [$term_id], $tax, false);
}
}

$meta_attrs = get_post_meta($product_id, '_product_attributes', true);
if (!is_array($meta_attrs)) $meta_attrs = [];

foreach ($pairs as [$tax, $name]) {
$meta_attrs[$tax] = array(
'name' => $tax,
'value' => '',
'position' => 0,
'is_visible' => 1,
'is_variation' => 0,
'is_taxonomy' => 1
);
}

update_post_meta($product_id, '_product_attributes', $meta_attrs);

if (function_exists('wc_delete_product_transients')) {
wc_delete_product_transients($product_id);
}

tsf_po_refresh_attribute_lookup( $product_id );
}
}


Подробнее здесь: https://stackoverflow.com/questions/797 ... attributes
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»