Я строю систему заказа на покупку для моего магазина 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
Обновление атрибутов продукта WooCommerce ⇐ Php
Кемеровские программисты php общаются здесь
1758896832
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 );
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79776065/updating-woocommerce-product-attributes[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия