围绕产品销售价格和正常价格的条件自定义输出
Conditional custom output around products sale price and regular price
我正在尝试处理自定义条件输出,当找到带有销售价格的产品循环时,它会向销售价格标签添加 class。如果只有正常价格,它会将此 class 添加到正常价格标签。
在打开和关闭不同的文档后,我似乎无法让它工作:
add_filter( 'woocommerce_get_price_html', 'custom_price_html', 100, 2 );
function custom_price_html( $price, $product ){
ob_start();
global $product;
if (isset($product->sale_price)) {
return str_replace( '</del>', '<span class="amount">text</span></del>', $price );
return str_replace( '</ins>', '<span class="highlight amount">highlight here</span></del>', $price );
}
else {
return str_replace( '</ins>', '<span class="highlight amount">highlight here</span>text</del>', $price );
}
}
我正在使用常规价格过滤器并尝试将范围 class="amount" 标签更改为 ins 范围 class="amount",但我仍然得到相同的输出。
有什么想法吗?
add_filter( 'woocommerce_price_html', 'price_custom_class', 10, 2 );
function price_custom_class( $price, $product ){
return str_replace( '<span class="amount"></span>', '<ins><span class="amount">'.woocommerce_price( $product->regular_price ).'</span></ins>', $price );
}
此处需要过滤器挂钩,而不是操作挂钩,以将函数或方法挂接到特定的过滤器操作。
改为
add_filter('woocommerce_sale_price_html','price_custom_class');
这个钩子是一个过滤器,有 2 个变量($price
和 $instance
),你 return $price
而不是 echo $price
)。您可以尝试这样使用它:
add_filter('woocommerce_sale_price_html','price_custom_class', 10, 2 );
function price_custom_class( $price, $product ){
if (isset($product->sale_price)) {
$price = '<del class="strike">'.woocommerce_price( $product->regular_price ).'</del>
<ins class="highlight">'.woocommerce_price( $product->sale_price ).'</ins>';
}
else
{
$price = '<ins class="highlight">'.woocommerce_price( $product->regular_price ).'</ins>';
}
return $price;
}
此挂钩正常售价
参考:woocommerce_sale_price_html
对于正常价格,您有 woocommerce_price_html
个过滤器挂钩:
add_filter( 'woocommerce_price_html', 'price_custom_class', 10, 2 );
function price_custom_class( $price, $product ){
// your code
return $price;
}
我正在尝试处理自定义条件输出,当找到带有销售价格的产品循环时,它会向销售价格标签添加 class。如果只有正常价格,它会将此 class 添加到正常价格标签。
在打开和关闭不同的文档后,我似乎无法让它工作:
add_filter( 'woocommerce_get_price_html', 'custom_price_html', 100, 2 );
function custom_price_html( $price, $product ){
ob_start();
global $product;
if (isset($product->sale_price)) {
return str_replace( '</del>', '<span class="amount">text</span></del>', $price );
return str_replace( '</ins>', '<span class="highlight amount">highlight here</span></del>', $price );
}
else {
return str_replace( '</ins>', '<span class="highlight amount">highlight here</span>text</del>', $price );
}
}
我正在使用常规价格过滤器并尝试将范围 class="amount" 标签更改为 ins 范围 class="amount",但我仍然得到相同的输出。
有什么想法吗?
add_filter( 'woocommerce_price_html', 'price_custom_class', 10, 2 );
function price_custom_class( $price, $product ){
return str_replace( '<span class="amount"></span>', '<ins><span class="amount">'.woocommerce_price( $product->regular_price ).'</span></ins>', $price );
}
此处需要过滤器挂钩,而不是操作挂钩,以将函数或方法挂接到特定的过滤器操作。 改为
add_filter('woocommerce_sale_price_html','price_custom_class');
这个钩子是一个过滤器,有 2 个变量($price
和 $instance
),你 return $price
而不是 echo $price
)。您可以尝试这样使用它:
add_filter('woocommerce_sale_price_html','price_custom_class', 10, 2 );
function price_custom_class( $price, $product ){
if (isset($product->sale_price)) {
$price = '<del class="strike">'.woocommerce_price( $product->regular_price ).'</del>
<ins class="highlight">'.woocommerce_price( $product->sale_price ).'</ins>';
}
else
{
$price = '<ins class="highlight">'.woocommerce_price( $product->regular_price ).'</ins>';
}
return $price;
}
此挂钩正常售价
参考:woocommerce_sale_price_html
对于正常价格,您有 woocommerce_price_html
个过滤器挂钩:
add_filter( 'woocommerce_price_html', 'price_custom_class', 10, 2 );
function price_custom_class( $price, $product ){
// your code
return $price;
}