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