Idealmente, aplique un 20% de descuento a todos los productos y variaciones que tengan una etiqueta determinada y luego muestre correctamente.
En este momento tengo un complemento que controla el precio real y estoy tratando de cambiar la forma en que se muestra visualmente el precio…
Se me ocurrió esta solución parcial para cambiar el precio que se muestra en la tienda y en la página de un solo producto.
¿Alguien puede limpiar esto? Está arrojando errores fatales pero está brindando el efecto deseado… Buscando cambiar el precio que se muestra de un producto con una etiqueta dada en la tienda y en la página de un solo producto.
2019-11-21T22:45:39+00:00 CRITICAL Uncaught Error: Call to a member function is_type() on null in */public_html/wp-content/themes/child/functions.php:325
Stack trace:
#0 */public_html/wp-includes/class-wp-hook.php(288): price_sale_comforter('<span class="wo...')
#1 */public_html/wp-includes/plugin.php(208): WP_Hook->apply_filters('<span class="wo...', Array)
#2 */public_html/wp-content/plugins/woocommerce/includes/abstracts/abstract-wc-product.php(1750): apply_filters('woocommerce_get...', '<span class="wo...', Object(WC_Product_Variation))
#6 */public_html/wp-content/themes/child/functions.php on line 325
function price_sale_comforter( $price ) {
$product_tag_term = 'comforter'; // CHANGE TO PRODUCT TAG
$original_price="194.95"; // CHANGE TO ORIGINAL PRICE
$new_price="155.96"; // CHANGE TO NEW PRICE
$percent_off="20"; // CHANGE TO DISCOUNT PERCENT AMOUNT
global $product;
$product_id = $product->is_type('variation') ? $product->get_parent_id() : $product->get_id();
if ( has_term( $product_tag_term , 'product_tag', $product_id ) ) {
if ( $product) {
if (is_shop()) {
echo '<a href="'.get_permalink($product_id).'"class="ivpa_attribute ivpa_html">
<span class="price"><span class="woocommerce-Price-amount amount"><del><span class="woocommerce-Price-currencySymbol">$</span>'.$original_price.'</span></del> <ins><span class="woocommerce-Price-amount amount"><span class="woocommerce-Price-currencySymbol">$</span>'.$new_price.' '.$percent_off.'% Off!</span></ins></span>
<span class="onsale">Sale!</span>
</a>';
} //closing IF is_shop
} //closing IF $product
if (is_product()) {
$price="<span class="dynamic-sale-single-product"><del>" . $price .= '</del></span>';
return $price;
} // closing IF is_product
} // closing IF has_term
else {
return $price;
} // closing ELSE
} // closing function
add_filter( 'woocommerce_get_price_html', 'price_sale_comforter' );
.