Añadir campos personalizados a la ficha de producto de WooCommerce

En este artículo veremos cómo crear campos personalizados para productos y variaciones de WooCommerce y así poder mostrarlos en cualquier sitio de la ficha de producto.


por

En algunas ocasiones, ya sea por requerimientos del cliente o necesidades de nuestro propio ecommerce, es posible que queremos mostrar alguna información adicional en la ficha de producto, ya sea en todos o de forma condicional según el producto, categoría, estado del inventario, etc…

Aunque existen plugins específicos para ello, no siempre se adaptan a lo que necesitamos y en cualquier caso, soy partidaria de depender del mínimo número de plugins posible, y más en un WooCommerce.

En este caso vamos a crear campos de texto para que el gestor de la tienda pueda añadir un aviso condicional, tanto a nivel de producto, como de variación.

Para ello, en nuestro plugin de funciones, mu-plugin o en el archivo functions.php de nuestro tema (ojo que en ese caso queda vinculado al theme que utilizamos), podemos utilizar las siguientes funciones.

Con esto tendremos un nuevo campo en la página de producto general y en cada una de las variaciones que luego podremos mostrar en la web según necesitemos.

Por ejemplo, con esta función podríamos mostrar el campo que hemos creado a nivel de producto bajo la descripción corta, sólo en el caso que el producto esté agotado:

function esl_aviso_general($content) {
	global $product, $post;    
	$general =  get_post_meta($post->ID, '_esl_custom_product_text_field', true);
	$respuesta = $content;
	
 		if ( $product->is_type( 'simple' ) ) {
 
			if($product->get_stock_quantity()<1) { 
				$respuesta =  $content.'<div class="aviso_agotado_var">'.$general.'</div>';
			} 
		}
    return $respuesta;
}
add_filter( 'woocommerce_short_description', 'esl_aviso_general', 10, 2 ); 

Y en el caso de las variaciones, para recuperar el valor de cada campo deberíamos recorrer una a una:

$variation_ids = $product->get_children();
 
		 if ( empty( $variation_ids ) ) 
			 return $respuesta;
		 
		 foreach( $variation_ids as $variation_id ) {
			  
			$variation = wc_get_product( $variation_id); 
			$adicional_var =  get_post_meta($variation_id, '_custom_variation', true);
			 if($variation->get_stock_quantity()<1 && $adicional_var!='')  { 
 				$detalle .= '<div class="aviso_agotado_var">'.$adicional_var."</div>";
			 }
		 }

Estos son ejemplos de cómo podríamos recoger y utilizar la información que se ha guardado en cada campo, pero deberás aplicarlo a los condicionales y necesidades del proyecto en cada caso.

Si estás intentando añadir información o modificar en la ficha de producto de WooCommerce, esta guía visual de los hooks es muy útil: WooCommerce Visual Hook Guide: Single Product Page

Desarrollo Web by esther solà
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.