Добавление настраиваемого поля woocommerce в массовый редактор - PullRequest
0 голосов
/ 08 июля 2019

Я следовал приведенному ниже решению, чтобы добавить настраиваемое поле в массовый редактор. Это работает, настраиваемое поле _min_order_field редактируется в массовом порядке. Проблема, с которой я сталкиваюсь, заключается в том, что, когда другое поле массово редактируется (и настраиваемое поле остается неизменным), значение в настраиваемом поле удаляется. Например, если я массово редактирую цену, значение в настраиваемом поле исчезает. Это то, что у меня есть, любой указатель в правильном направлении будет оценен.

Это руководство, которому я следовал: Добавление настраиваемого поля продукта в форму массового редактирования продукта Admin в WooCommerce

//Add the minimum order field to woocomerce product bulk edit
    add_action( 'woocommerce_product_bulk_edit_start', 'minimum_order_field_bulk_edit', 10, 0 );
    function minimum_order_field_bulk_edit() {
        ?>
            <div class="inline-edit-group">
                <label class="alignleft">
                    <span class="title"><?php _e('Minimum', 'woocommerce'); ?></span>
                    <span class="input-text-wrap">
                        <select class="change_minimumo change_to" name="change_minimumo">
                        <?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="_minimumo" class="text minimumo" placeholder="<?php _e( 'Enter minimum order', 'woocommerce' ); ?>" value="" />
                </label>
            </div>
        <?php
    }

    // Save the minimum order fields data when submitted for product bulk edit
    add_action('woocommerce_product_bulk_edit_save', 'save_minimum_order_field_bulk_edit', 10, 1);
    function save_minimum_order_field_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['_minimumo'] ) )
                update_post_meta( $product_id, '_min_order_field', sanitize_text_field( $_REQUEST['_minimumo'] ) );
        }
    }

1 Ответ

0 голосов
/ 13 июля 2019

В вашем коде есть небольшая ошибка.В случае если вы проверяете значение с помощью функции isset().В этом случае у вас всегда есть true и вы обновляете значение пустой строкой.Но если вы проверите значение с помощью функции !empty(), вы получите false, если ввод пуст, поэтому ваши ранее сохраненные данные останутся.

Таким образом, ваш код должен быть таким:

if ( !empty( $_REQUEST['_minimumo'] ) )
    update_post_meta( $product_id, '_min_order_field', sanitize_text_field( $_REQUEST['_minimumo'] ) );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...