На странице редактирования параметров продукта WooCommerce перед SKU отображается настраиваемое поле

Итак, у меня есть следующая функция для добавления поля штрих-кода на вкладке «Инвентаризация продукции». Однако это поле добавляется после всего остального контента, и я хотел бы иметь это до кода SKU.

function add_barcode(){
global $woocommerce,$post;
woocommerce_wp_text_input(
array(
'id'          => '_barcode',
'label'       => __('Barcode','woocommerce'),
'placeholder' => 'Scan Barcode',
'desc_tip'    => 'true',
'description' => __('Scan barcode.','woocommerce')
));
}
add_action('woocommerce_product_options_inventory_product_data','add_barcode');

Есть ли в любом случае разместить функцию / поле перед SKU, то есть перед фактическим хуком, как что-то с точки зрения woocommerce_before_product_options_inventory_product_data?

Спасибо за любые предложения заранее.

1

Решение

НЕВОЗМОЖНО РАЗМЕСТИТЬ ЛЮБОЕ ТАМОЖЕННОЕ ПОЛЕ ПЕРЕД SKU

Вы можете взглянуть на html-product-data-inventory.php файл исходного кода который отображает поля инвентаря продукта.

Но вы можете отобразить собственное поле «Штрихкод» сразу после поля SKU (например)

Для этого вы должны подключить свою пользовательскую функцию в woocommerce_product_options_sku действие крюк вместо. В вашем коде также отсутствуют некоторые вещи для отображения сохраненного значения.

И, наконец, вам нужна другая функция для сохранения этого значения при сохранении или обновлении продукта.

Вот этот полный код:

add_action('woocommerce_product_options_sku','add_barcode', 10, 0 );
function add_barcode(){

global $woocommerce, $post;

// getting the barcode value if exits
$product_barcode = get_post_meta( $post->ID, '_barcode', true );
if(! $product_barcode) $product_barcode = '';

// Displaying the barcode custom field
woocommerce_wp_text_input( array(
'id'          => '_barcode',
'label'       => __('Barcode','woocommerce'),
'placeholder' => 'Scan Barcode',
'desc_tip'    => 'true',
'description' => __('Scan barcode.','woocommerce')
), $product_barcode); // <== added "$product_barcode" here to get the value if exist

}

add_action( 'woocommerce_process_product_meta', 'save_barcode', 10, 1 );
function save_barcode( $post_id ){

$product_barcode_field = $_POST['_barcode'];
if( !empty( $product_barcode_field ) )
update_post_meta( $post_id, '_barcode', esc_attr( $product_barcode_field ) );

}

Этот код находится в файле function.php вашей активной дочерней темы (или темы), а также в любом файле плагина.

Этот код протестирован и работает для WooCommerce версий 2.6+ и 3.0+

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]