php - página - shortcodes woocommerce boluda
Genere un valor de campo personalizado en las páginas de producto único y carrito de WooCommerce (2)
Necesito ayuda para agregar los datos personalizados en el front-end del producto de la siguiente manera:
Esta imagen es una muestra si PD # acabo de agregar y quiero que se agregue en la parte frontal del producto:
Acaba de agregar un campo personalizado en la pestaña de configuración general de páginas de productos de WooCommerce, con la ayuda de: Cómo agregar un campo personalizado en WooCommerce 3.1 gracias @Ankur Bhadania.
Gracias
Para visualizar la meta del producto personalizado en la página del producto de señal, se utiliza 2 ganchos. usó cualquiera de uno según su requisito.
1) mostrar antes de la meta del producto WooCommerce. utilizado
woocommerce_product_meta_start
add_action( ''woocommerce_product_meta_start'', ''woo_add_custom_general_fields_extra_info'' );
function woo_add_custom_general_fields_extra_info()
{
global $woocommerce, $post;
echo "PD # ".get_post_meta( $post->ID, ''_text_field'', true );
}
2) mostrar después de la meta del producto WooCommerce. utilizado
woocommerce_product_meta_end
add_action( ''woocommerce_product_meta_end'', ''woo_add_custom_general_fields_extra_info'' );
function woo_add_custom_general_fields_extra_info()
{
global $woocommerce, $post;
echo "PD # ".get_post_meta( $post->ID, ''_text_field'', true );
}
Para productos simples, su producto ''_pd_number''
campo personalizado en páginas de productos simples antes de agregar al carrito, utilizando woocommerce_before_add_to_cart_button
acción enganche de esta manera:
add_action( ''woocommerce_before_add_to_cart_button'', ''add_cf_before_addtocart_in_single_products'', 1, 0 );
function add_cf_before_addtocart_in_single_products()
{
global $product;
$pd_number = get_post_meta( $product->get_id(), ''_pd_number'', true );
if( !empty( $pd_number ) )
echo ''<div class="pd-number">PD # ''. $pd_number .''</div><br>'';
}
El código va en el archivo function.php de su tema hijo activo (o tema) o también en cualquier archivo de complemento.
Este código se prueba en WooCommerce versión 3+ y funciona.
También puede mostrar el campo personalizado de su producto en los elementos del carrito debajo del nombre, utilizando el woocommerce_cart_item_name
filtro woocommerce_cart_item_name
esta manera:
// Displaying the product custom field in the Cart items
add_filter( ''woocommerce_cart_item_name'', ''add_cf_after_cart_item_name'', 10, 3 );
function add_cf_after_cart_item_name( $name_html, $cart_item, $cart_item_key )
{
$product_id = $cart_item[''product_id''];
if( $cart_item[''variation_id''] > 0 )
$product_id = $cart_item[''variation_id''];
$pd_number = get_post_meta( $product_id, ''_pd_number'', true );;
if( !empty( $pd_number ) )
$name_html .= ''<br><span class="pd-number">PD # ''.$pd_number .''</span>'';
return $name_html;
}
El código va en el archivo function.php de su tema hijo activo (o tema) o también en cualquier archivo de complemento.
Este código se prueba en WooCommerce versión 3+ y funciona.
Aquí el código que uso de él proporcionó el enlace en comentarios solo para probar:
// Display Product settings Fields
add_action( ''woocommerce_product_options_general_product_data'', ''woo_add_custom_general_fields'' );
function woo_add_custom_general_fields() {
woocommerce_wp_text_input( array(
''id'' => ''_pd_number'',
''label'' => __( ''PD Number'', ''woocommerce'' ),
''placeholder'' => ''PD# XXXXXX'',
''desc_tip'' => ''true'',
''description'' => __( ''Enter the PD Number of Product'', ''woocommerce'' )
));
}
// Save Product settings Fields
add_action( ''woocommerce_process_product_meta'', ''woo_add_custom_general_fields_save'' );
function woo_add_custom_general_fields_save( $post_id ){
$pd_number = $_POST[''_pd_number''];
if( !empty( $pd_number ) )
update_post_meta( $post_id, ''_pd_number'', esc_attr( $pd_number ) );
}
Respuesta relacionada: anule la URL del producto externo al botón del producto "Agregar al carrito"