我有一个下面的代码,它创建了一个自定义框内的WooCommerce产品的快速编辑菜单,其中包含一个html下拉菜单与所有来自‘Brand’属性的值.

  • 品牌属性图片:

enter image description here

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

enter image description here

The Problem:

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


The Code:

以下是我在主题的unctions.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);

Questions:

  • 即使我还没有为产品后端的品牌属性设置任何值,我如何修改此代码以使其添加我在快速编辑菜单的自定义下拉菜单中 Select 的值?

Thanks in advance for your time and effort!

推荐答案

您可以try 通过将$_REQUEST内的代码替换为以下代码来更改my_ick_edit_save函数:

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的属性部分中的属性插件是‘BRAND’,否则‘pa_brand’分类插件将不起作用!

Php相关问答推荐

按制造商、型号和年份范围判断数据的存在性

邮箱打开跟踪器不工作时发送邮件使用laravel调度程序

在WooCommerce Checkout帐单地址字段后插入自定义按钮

FatFreeFramework上的不同路由

WooCommerce中仅在单一产品和产品档案页面中将小数设置为大写

PHP如何将ARRAY_MAP与Reset()配合使用

具有重叠捕获组的PHP正则表达式

PHP日期操作,将多个日期输出为格式化字符串

更改特定产品标签的 Woocommerce 产品名称

Symfony:从控制器内部调用自定义命令

AWS S3:当对象名称包含 % 时复制对象失败并出现错误 - 无效的复制源编码

在 WooCommerce 我的帐户自定义部分显示未购买的产品

根据购买产品的自定义字段替换WooCommerce添加到购物车按钮

在 Botiga 主题模板中添加复选框到政策行.Woocommerce

将Shopware 6后端中定义的值导入MultiFilter

php如何删除括号内的百分比值

使用 PHP 正则表达式从仅包含具有现有顺序的顶级标签的 XML 文档中搜索和创建数组

输出每个可能的产品选项

Symfony 在将它传递给 Twig 时是否从数据库中获取整个对象?

将加密/解密函数从 PHP 转换为 NodeJS