dongpo1599
2017-09-05 09:27
浏览 146
已采纳

在WooCommerce中向管理产品批量修改表单添加产品自定义字段

I have added a custom field in my WooCommerce products like in this question/answer:
Display a custom product field before short description in WooCommerce.

Is it possible to add this custom field to the product bulk edit special page (accessible from Admin products list page)?

图片转代码服务由CSDN问答提供 功能建议

我在我的WooCommerce产品中添加了一个自定义字段,如同这个问题/答案:
在WooCommerce中进行简短描述之前显示自定义产品字段

是否可以将此自定义字段添加到产品批量修改专页(可从管理产品列表页面访问)

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • doubi1910 2017-09-05 21:26
    已采纳

    Yes it's possible to bulk edit products for your custom field '_text_field' (as in your linked question/answer).

    You can add this custom field at the beginning or at the end of edit page.

    • For the beginning you will use this hook: woocommerce_product_bulk_edit_start
    • For the end this one: woocommerce_product_bulk_edit_end

    The code (the custom field is at the beginning here):

    // Add a custom field to product bulk edit special page
    add_action( 'woocommerce_product_bulk_edit_start', 'custom_field_product_bulk_edit', 10, 0 );
    function custom_field_product_bulk_edit() {
        ?>
            <div class="inline-edit-group">
                <label class="alignleft">
                    <span class="title"><?php _e('T. dostawy', 'woocommerce'); ?></span>
                    <span class="input-text-wrap">
                        <select class="change_t_dostawy change_to" name="change_t_dostawy">
                        <?php
                            $options = array(
                                ''  => __( '— No change —', 'woocommerce' ),
                                '1' => __( 'Change to:', 'woocommerce' ),
                            );
                            foreach ( $options as $key => $value ) {
                                echo '<option value="' . esc_attr( $key ) . '">' . $value . '</option>';
                            }
                        ?>
                        </select>
                    </span>
                </label>
                <label class="change-input">
                    <input type="text" name="_t_dostawy" class="text t_dostawy" placeholder="<?php _e( 'Enter Termin dostawy', 'woocommerce' ); ?>" value="" />
                </label>
            </div>
        <?php
    }
    
    // Save the custom fields data when submitted for product bulk edit
    add_action('woocommerce_product_bulk_edit_save', 'save_custom_field_product_bulk_edit', 10, 1);
    function save_custom_field_product_bulk_edit( $product ){
        if ( $product->is_type('simple') || $product->is_type('external') ){
            $product_id = method_exists( $product, 'get_id' ) ? $product->get_id() : $product->id;
    
            if ( isset( $_REQUEST['_t_dostawy'] ) )
                update_post_meta( $product_id, '_text_field', sanitize_text_field( $_REQUEST['_t_dostawy'] ) );
        }
    }
    

    Code goes in function.php file of your active child theme (or theme) or also in any plugin file.

    This code is tested and works. You will get this:

    enter image description here

    评论
    解决 无用
    打赏 举报
查看更多回答(1条)

相关推荐 更多相似问题