gpt4 book ai didi

wordpress - WooCommerce - 添加对象术语无法正常工作

转载 作者:行者123 更新时间:2023-12-04 10:03:14 24 4
gpt4 key购买 nike

我正在使用以下代码添加带有术语的属性:

$taxonomy = 'pa_' . $attr['name']; // The attribute taxonomy

if (!taxonomy_exists($taxonomy)) {
global $wpdb;

$insert = $wpdb->insert(
$wpdb->prefix . 'woocommerce_attribute_taxonomies',
array(
'attribute_name' => $attr['name'],
'attribute_label' => $attr['name'],
'attribute_public' => 0
),
array('%s', '%s', '%d')
);

if (is_wp_error($insert)) {
throw new WC_API_Exception('woocommerce_api_cannot_create_product_attribute', $insert->get_error_message(), 400);
}

// Clear transients
delete_transient('wc_attribute_taxonomies');
}

if (!term_exists($attr['value'], $attr['name'])) {
wp_insert_term($attr['value'], $attr['name']);
}

$term_slug = get_term_by('name', $attr['value'], $attr['name'])->slug; // Get the term slug

wp_set_post_terms($product_id, $attr['value'], $attr['name'], true);

// Set/save the attribute data in the product variation
update_post_meta($variation_id, 'attribute_' . $taxonomy, $term_slug);

// Assign to the product
wp_set_object_terms($product_id, $attr['value'], $taxonomy, true);
$att = array($taxonomy => array(
'name' => $taxonomy,
'value' => $attr['value'],
'is_visible' => '1',
'is_variation' => '1',
'is_taxonomy' => '1',
));
update_post_meta($product_id, '_product_attributes', $att);

但是,第一次运行代码时,它会添加没有术语的属性。如果我第二次运行它,它才会将术语添加到之前添加的属性中。

这是为什么?

编辑 :问题似乎始于以下行:
$term_slug = get_term_by('name', $attr['value'], $attr['name'])->slug

它只是还不能识别新创建的分类法。只有在下一次运行时。

但为什么?是否有一个函数可以用来“刷新”属性,或者 $wp_attributes 变量,这似乎是密切相关的?

谢谢!

最佳答案

不看现场直播很难调试。但是,我认为这可能与此代码有关:

if (!term_exists($attr['value'], $attr['name'])) {
wp_insert_term($attr['value'], $attr['name']);
}

在第一次请求时,该术语被插入,但在进一步请求之前它不会成为 WordPress 主查询的一部分。

同样,这主要是猜测,因为我需要查看实际实现。

关于wordpress - WooCommerce - 添加对象术语无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61726322/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com