В настоящее время используется WordPress 5.1.1 и WooCommerce 3.5.7.В моем магазине WooCommerce около 500 товаров, состоящих из простых и переменных товаров.
Каждый продукт, естественно, имеет SKU, но у каждого продукта также есть уникальный идентификационный код, называемый «Товарный код».Я продаю определенные продукты для конкретной отрасли.
Я добавил код для пользовательских полей для продукта Simple и Variable в мой файл functions.php, и на данный момент это прекрасно работает.
Моя проблема в том, что я пытаюсь заставить 'Код товара' появиться под названием продукта в Корзине, Оформить заказ, счету и электронной почте.
Я прочитал различные учебники в Интернете, чтобы помочь мне, ноЯ не мудрее, так как каждый урок делает похожие вещи по-разному.В большинстве уроков предполагается, что пользователь ввел данные через интерфейс, но мои данные заданы заранее.
Учебники, которые я использовал, чтобы помочь мне:
<?php
// Add WooCommerce Custom Field for Commodity Code
function vp_add_commodity_code() {
$args = array(
'id' => 'vp_commodity_code',
'label' => __( 'Commodity Code', 'woocommerce' ),
'placeholder' => __( 'Enter Commodity Code here', 'woocommerce' ),
'desc_tip' => true,
'description' => __( 'This field is for the Commodity Code of the product.', 'woocommerce' ),
);
woocommerce_wp_text_input( $args );
}
add_action( 'woocommerce_product_options_sku', 'vp_add_commodity_code' );
// Save Commodity Code into WooCommerce Database
function vp_save_commodity_code( $post_id ) {
// grab the Commodity Code
$sku = isset( $_POST[ 'vp_commodity_code' ] ) ? sanitize_text_field( $_POST[ 'vp_commodity_code' ] ) : '';
// grab the product
$product = wc_get_product( $post_id );
// save the Commodity Code custom field
$product->update_meta_data( 'vp_commodity_code', $sku );
$product->save();
}
add_action( 'woocommerce_process_product_meta', 'vp_save_commodity_code' );
// Display Commodity Code on the Frontend
function vp_display_commodity_code() {
global $post;
// Check for the Commodity Code value
$product = wc_get_product( $post->ID );
$title = $product->get_meta( 'vp_commodity_code' );
if( $title ) {
// Only display the field if we've got a value for the field title
printf(
'<div class="vpcommoditycode-wrapper"><strong>Commodity Code: </strong>%s</div>',
esc_html( $title )
);
}
}
add_action( 'woocommerce_before_add_to_cart_button', 'vp_display_commodity_code' );
// Add custom field input @ Product Data > Variations > Single Variation
add_action( 'woocommerce_variation_options_pricing', 'comcode_add_custom_field_to_variations', 10, 3 );
function comcode_add_custom_field_to_variations( $loop, $variation_data, $variation ) {
woocommerce_wp_text_input( array(
'id' => 'custom_field[' . $loop . ']',
'class' => 'short',
'label' => __( 'Community Code', 'woocommerce' ),
'value' => get_post_meta( $variation->ID, 'custom_field', true ),
'placeholder' => __( 'Enter Commodity Code here', 'woocommerce' ),
'desc_tip' => true,
'description' => __( 'This field is for the Commodity Code of the product.', 'woocommerce' ),
)
);
}
// Save custom field on product variation
add_action( 'woocommerce_save_product_variation', 'comcode_save_custom_field_variations', 10, 2 );
function comcode_save_custom_field_variations( $variation_id, $i ) {
$custom_field = $_POST['custom_field'][$i];
if ( isset( $custom_field ) ) update_post_meta( $variation_id, 'custom_field', esc_attr( $custom_field ) );
}
// Store custom field value into variation data
add_filter( 'woocommerce_available_variation', 'comcode_add_custom_field_variation_data' );
function comcode_add_custom_field_variation_data( $variations ) {
$variations['custom_field'] = '<div class="woocommerce_custom_field"><strong>Commodity Code: </strong><span>' . get_post_meta( $variations[ 'variation_id' ], 'custom_field', true ) . '</span></div>';
return $variations;
}
?>
Может ли какой-нибудь гений PHP / WooCommerce помочь мне в этом, предоставив код, или укажите мне учебник, который поможет мне, или назовите сторонний плагин WordPress, который сделает это.