Woocommerce - добавление простого текстового поля на страницу продукта - PullRequest
0 голосов
/ 02 мая 2019

Я действительно новичок в WordPress, поэтому, пожалуйста, дайте мне знать, если я не предоставляю достаточно ресурсов.Я пытаюсь достичь чего-то более простого.Внутри продуктов на woocommerce / wp у вас могут быть варианты продукта, см. Здесь: https://i.gyazo.com/f9e99075152f3abcfb02614995724c63.png например

Что я пытаюсь достичь: мне нужно добавить новое текстовое поле для "Себестоимость"».Уже есть один для обычной цены и продажной цены.Я понятия не имел, как это добавить, поэтому, выполнив поиск по сценариям / прочитав документацию по woo commerce, мне удалось добавить текстовое поле спереди, отредактировав html-variation-admin.php и добавив следующий код:

        woocommerce_wp_text_input(
            array(
                'id'            => "variable_cost_price{$loop}",
                'name'          => "variable_cost_price[{$loop}]",
                'value'         => wc_format_localized_price( $variation_object->get_cost_price( 'edit' ) ),
                'data_type'     => 'price',
                'label'         => $label ,
                'wrapper_class' => 'form-row form-row-last',
            )
        );

Я знал, что это сработает, так как скопировал его из текстового поля над «Обычная цена».

Моя проблема: конечно, иметь текстовое поле там бессмысленно, если оно не сохраняется в базу данных и не возвращает данные для отображения при загрузке страницы.Опять же, я не уверен на 100%, но благодаря исследованиям я подумал, что должен сделать некоторые дополнения.

То, что я пробовал: Я добавил метод get_cost_price в сценарий class-wc-ajax.php, поскольку я уже видел его там для get_regular_price.Я также видел строки в class-wc-meta-box-product-data.php, которые ссылаются на регулярную_прайс, поэтому я добавил запись для своей новой цены_прайс, см. Ниже к тому, что я добавил (я добавил строку стоимости_прайса):

    $errors = $variation->set_props(
                        array(
                            'status'            => isset( $_POST['variable_enabled'][ $i ] ) ? 'publish' : 'private',
                            'menu_order'        => wc_clean( $_POST['variation_menu_order'][ $i ] ),
                            'regular_price'     => wc_clean( $_POST['variable_regular_price'][ $i ] ),
                            'sale_price'        => wc_clean( $_POST['variable_sale_price'][ $i ] ),
                            'cost_price'        => wc_clean( $_POST['variable_code_price'][ $i ] ),
.. more code here..

Что я пропустил,мне нужно было внести изменения в еще один сценарий?Опять же, текстовое поле отображается, но ввод данных и нажатие кнопки «Сохранить изменения» на самом деле, кажется, ничего не добавляют в таблицу postmeta

РЕДАКТИРОВАТЬ: мне не нужно это отображение на веб-сайте интерфейса, этоэто чисто для бэкэнд данных для меня, чтобы хранить

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...