Es habitual que los precios cambien continuamente, de un día para otro, de una franja horaria a otra, y también en función del dispositivo utilizado para buscar los productos. La ventaja es obvia: si la oferta cambia según la demanda del consumidor, se pueden maximizar los beneficios.
El mecanismo que subyace a estas variaciones se denomina precios dinámicos. Recalcula constantemente los precios en función de variables predefinidas mediante distintos algoritmos, y los propietarios de las tiendas pueden aprovecharlo teniendo en cuenta la estacionalidad y el comportamiento de los usuarios.
En este artículo, te explicaré cómo puedes añadir precios dinámicos personalizados en WooCommerce para todos los productos y productos específicos basados en campos de producto.
Prepara tu tienda online para el futuro con autónomos
Mantén tu tienda online preparada para todos los picos de tráfico inesperados con Cloudways Autonomous. Mantente a la vanguardia con escalabilidad avanzada y tecnología de vanguardia.
Cambiar la visualización del precio de todos los productos
Cambiar la visualización de precios de WooCommerce implica dos filtros importantes:
woocommerce_get_price_html cambia cómo se muestra el precio en las páginas de producto y tienda.
function cw_change_product_price_display( $precio ) {
$precio .= ' En Cada Artículo Producto';
devuelve $precio;
}
add_filter( 'woocommerce_get_price_html', 'cw_change_product_price_display' );
add_filter( 'woocommerce_cart_item_price', 'cw_change_product_price_display' );
woocommerce_cart_item_price cambia la forma en que se muestran los precios de los productos en la tabla del carrito.
ct_price_display' ); add_filter( 'woocommerce_cart_item_price', 'cw_change_product_price_display' );
El filtro woocommerce_get_price_html cambiará esto en las páginas de la tienda:

Del mismo modo, en las páginas de productos individuales:

El filtro woocommerce_cart_item_price ajustará también esta visualización dentro del carrito:

Ordenar la visualización del precio de un solo producto
¿Y si quieres cambiar la visualización del precio de un producto concreto? Esto se puede hacer utilizando los mismos filtros, ya que pasarán argumentos adicionales para cambiar condicionalmente el precio.
Desde el lanzamiento hasta la personalización de tus tiendas WooCommerce, Cloudways está a tu servicio.
Tanto si eres principiante como experto, la Plataforma Cloudways se basa en la interfaz de usuario, con la que podrás crear y personalizar tu tienda online en pocos segundos.
Esta vez separaré estos filtros y utilizaré dos funciones para modificar los precios del producto y del carrito.
Sólo comprobaré el ID del producto y cambiaré la visualización del precio de ese producto.
function cw_change_product_html( $precio_html, $producto ) {
if ( 22 === $producto->id ) {
$precio_html = '<span class="importe">50,00 $ por unidad</span>';
}
devuelve $precio_html;
}
add_filter( 'woocommerce_get_price_html', 'cw_change_product_html', 10, 2 );
function sv_change_product_price_cart( $price, $cart_item, $cart_item_key ) {
if ( 22 === $art_item['product_id'] ) {
$precio = '50,00 $ por Unidad<br>(7-8 brochetas por unidad)";
}
devuelve $precio;
}
add_filter( 'woocommerce_cart_item_price', 'sv_change_product_price_cart', 10, 3 );
La primera función cambiará mi página de producto:

Junto con el expositor de la tienda:

Mientras que la segunda función ajustará la visualización de mi carrito con los nuevos precios de WooCommerce:

Sin embargo, si tienes varios productos con precios unitarios, este método podría ser muy engorroso, y probablemente no quiera utilizar un interruptor o un bloque de sentencia if para cada ID de producto. En su lugar, recomiendo utilizar un campo personalizado de producto para ajustar la visualización del precio. Utilizaré el ID para obtener este campo y luego me ahorraré mucha codificación porque introduciré el campo mediante programación.
Cambiar la visualización del precio en función de los campos del producto
Si quieres cambiar la visualización del precio de algunos productos (cada producto puede tener un precio unitario diferente), un campo personalizado resultará en un código mucho más sencillo, ya que puedo añadir el campo para cada producto de la lista y luego simplemente recuperar este campo en el código:

Añadir campo personalizado en WooCommerce
Una vez que hayas añadido el campo personalizado, podrás recuperar el precio unitario y, si se ha establecido uno para el producto, ajustar la visualización del precio para que utilice el precio unitario y una etiqueta personalizada en su lugar:
function cw_change_product_html( $precio_html, $producto ) {
$precio_unidad = get_post_meta( $producto->id, 'precio_unidad', true );
if ( ! empty( $precio_unidad ) ) {
$precio_html = '<span class="importe">' . wc_precio( $precio_unidad ) . ' por kg </span>';
}
devuelve $precio_html;
}
add_filter( 'woocommerce_get_price_html', 'cw_change_product_html', 10, 2 );
// Cambia los precios del carrito si se establece un precio_unitario
function cw_change_product_price_cart( $price, $cart_item, $cart_item_key ) {
$precio_unitario = get_post_meta( $art_item['id_producto'], 'precio_unitario', true );
if ( ! empty( $precio_unidad ) ) {
$precio = wc_precio( $precio_unidad ) . ' por kg';
}
devuelve $precio;
}
add_filter( 'woocommerce_cart_item_price', 'cw_change_product_price_cart', 10, 3 );
Nota: wc_price() es una función muy útil para dar formato a los números dentro de la configuración de visualización de precios de la tienda. Todos los códigos se colocan en functions.php, que se encuentra en la carpeta del tema.
En este caso, la visualización del precio en la página del producto/tienda sólo cambiará si se establece un precio unitario. Si no, el precio seguirá siendo el mismo.

Esto también ocurrirá con los artículos del carrito: la visualización del precio de WooCommerce se ajustará condicionalmente en función de si el artículo tiene un precio_unidad establecido en el campo personalizado:

Mostrar los precios de WooCommerce con WP_Query
El siguiente código muestra los precios dinámicos de WooCommerce utilizando WP_Query.
<php
$categorías_producto = array('nombre_gato');
$wc_query = new WP_Query( array(
'post_type' => 'producto',
'post_status' => 'publicar',
'posts_per_page' => 10,
'consulta_impuestos' => array( array(
taxonomía' => 'producto_cat',
'campo' => babosa
términos" => $categorías_producto,
) )
) );
?>
<h1> Nombre de la categoría </h1>
<?php if ($wc_consulta->have_posts()) : ?>
<?php while ($wc_consulta->have_posts()) :
$wc_consulta->el_post(); ?>
<a href="<?php el_permalink(); ?>">
<?php the_post_thumbnail('full'); ?>
<h1><?php el_título(); ?> </h1>
<?php $precio = get_post_meta( get_the_ID(), '_precio', true ); ?>
<p><?php echo wc_precio( $precio ); ?></p>
</a>
<?php endwhile; ?>
<?php wp_reset_postdata(); ?>
<?php si no: ?>
<li>
<?php _e( 'No tienes ninguna entrada' ); ?>
</li>
<?php endif; ?>
La función más importante en el fragmento de código anterior es WP_Query, que proporciona varias funciones importantes como post_type, post_status, posts_per_page y tax_query. Todas estas funciones proporcionan una funcionalidad común dentro del bucle principal. La función get_post_meta() obtiene los metavalores. la moneda seleccionada actualmente se muestra mediante la función wc_price(). En la consulta principal, se utiliza wp_reset_postdata() para establecer el global $post en la entrada actual. Por último, $woocommerce_price_display_cat tiene la categoría de producto de WooCommerce seleccionada actualmente.
Resumen
En este artículo, traté el tema de la modificación de la visualización del precio en las páginas de producto de WooCommerce. Esta sencilla alteración puede hacerse añadiendo un código sencillo a los filtros de las páginas de producto. Deja un comentario abajo si tienes preguntas o sugerencias sobre el código o el artículo.
Owais Khan
Owais trabaja como Director de Marketing en Cloudways, donde se centra en el crecimiento, la generación de demanda y las asociaciones estratégicas. Con más de una década de experiencia en marketing digital y B2B, Owais prefiere construir sistemas que ayuden a los equipos a alcanzar todo su potencial.