Итак, у меня есть следующая функция для добавления поля штрих-кода на вкладке «Инвентаризация продукции». Однако это поле добавляется после всего остального контента, и я хотел бы иметь это до кода 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?
Спасибо за любые предложения заранее.
НЕВОЗМОЖНО РАЗМЕСТИТЬ ЛЮБОЕ ТАМОЖЕННОЕ ПОЛЕ ПЕРЕД 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+
Других решений пока нет …