1

販売価格で製品ループが見つかったときに、販売価格タグにクラスを追加するカスタム条件付き出力に取り組もうとしています。通常価格しかない場合は、このクラスを通常価格タグに追加します。

さまざまなドキュメントをオン/オフした後、これを機能させることができないようです:

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 );
        }
}

通常の価格フィルターを使用して、span class="amount" タグを ins span 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 );
}
4

2 に答える 2

2

このフックは、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;
}

参考:woocommerce_price_html

于 2016-06-03T06:12:27.163 に答える
1

関数またはメソッドを特定のフィルター アクションにフックするには、アクション フックではなくフィルター フックが必要です。への変更

add_filter('woocommerce_sale_price_html','price_custom_class'); 
于 2016-06-03T05:57:55.367 に答える