php 如何使woocommerce产品属性值更新与产品的快速编辑菜单前端的自定义框中选择的值?

i1icjdpr  于 2023-05-27  发布在  PHP
关注(0)|答案(1)|浏览(62)

我下面有一个代码,它在产品的woocommerce快速编辑菜单中创建了一个自定义框,其中包含一个html下拉列表,其中包含“品牌”属性的所有值。

  • 品牌属性照片:

  • 快速编辑菜单中的自定义下拉html的照片(在红色框中突出显示):

问题:

如果我已经在产品的后端设置了至少一个品牌属性值,那么代码将按预期工作,并添加我在快速菜单的下拉菜单中选择的值,否则如果我还没有为我正在快速编辑的产品中的品牌属性设置值,那么在更新快速编辑菜单后,该值不会出现在产品的后端。

验证码:

这是我在主题的functions.php中的代码:

function my_quick_edit_save_function($post_id) {
    if (isset($_REQUEST['post_ID']) == $post_id) {
        // Retrieve the selected brand value from the quick edit form
        $selected_brand = isset($_REQUEST['my_brand']) ? sanitize_text_field($_REQUEST['my_brand']) : '';

        $product_id = $post_id; // Replace with the actual product ID
        $attribute_slug = 'pa_brand'; // Replace with the desired attribute slug

        // Assign the color attribute value to the product
        wp_set_object_terms($product_id, $value, $attribute_slug, true);
    }
}

add_action('save_post', 'my_quick_edit_save_function');

function my_custom_quick_edit_fields() {

    $taxonomy = 'pa_brand'; // Replace with the actual taxonomy name of the attribute

    $terms = get_terms(array(
        'taxonomy' => $taxonomy,
        'hide_empty' => false,
    ));

    if (!empty($terms)) {
        echo '<select name="my_brand">';
        echo '<option value="my_brand">' . __('Select Brand', 'woocommerce') . '</option>';

        foreach ($terms as $term) {
            echo '<option value="' . $term->slug . '">' . $term->name . '</option>';
        }

        echo '</select>';
    }
}

add_action('woocommerce_product_quick_edit_end', 'my_custom_quick_edit_fields', 10);

问题:

  • 如何修改此代码,使其添加我在快速编辑菜单中的自定义下拉列表中选择的值,即使我尚未在产品的后端设置任何品牌属性值?
  • 提前感谢您的时间和努力!*
2guxujil

2guxujil1#

您可以尝试更改my_quick_edit_保存函数,方法是将$_REQUEST if中的代码替换为:

wp_set_object_terms( $post_id, $selected_brand, $attribute_slug, true );

        $att_var = Array($attribute_slug =>Array(
               'name'=>$attribute_slug,
               'value'=>$selected_brand,
               'is_visible' => '1',
               'is_taxonomy' => '1'
             ));

        update_post_meta( $post_id, '_product_attributes', $att_var );

确保woocommerce的ATTRIBUTES部分的属性slug是'brand',否则'pa_brand'分类slug将不起作用!

相关问题