6

私は WordPress と WooCommerce を初めて使用します。変更したい出力を生成しているコード行を特定したと思います。

私はWooCommerce の無料のartificerテーマを使用しており、index.php には次の行があります。

<h3>
    <?php the_title(); ?>
    <span class="price">
        <?php echo $_product->get_price_html(); ?>
    </span>
</h3>

これにより、"Black Stone - $43" (つまり、製品名 - 価格)のようなものが生成されます。


「Black Stone $43」のようなものが欲しい
(つまり、商品名の<br/>価格)

``get_price_html()` 関数用のフィルタがいくつかあるようですが、ドキュメントがあまりよくないか、ナビゲートする方法がわかりません。

任意の方向をいただければ幸いです。
ありがとう。

4

4 に答える 4

13

すべてが次の$product->get_price_html(); ようなものを生成します:

<del><span class="amount">£8.00</span>–&lt;span class="amount">£9.00</span></del>
<ins><span class="amount">£7.00</span>–&lt;span class="amount">£8.00</span></ins>

このデータを操作するには、この文字列から抽出する必要があります

WP フィルターを使用する場合 -get_price_html()どこでも出力を変更することになり、get_price_html()出力を 1 か所だけ変更する必要がある場合は、次のようにする必要があります。

global $product;

$price_html = $product->get_price_html();

$price_html_array = price_array($price_html);

function price_array($price){
    $del = array('<span class="amount">', '</span>','<del>','<ins>');
    $price = str_replace($del, '', $price);
    $price = str_replace('</del>', '|', $price);
    $price = str_replace('</ins>', '|', $price);
    $price_arr = explode('|', $price);
    $price_arr = array_filter($price_arr);
    return $price_arr;
}

これで、配列に同じデータができました

Array ( [0] => £8.00–£9.00 [1] => £7.00–£8.00 )

そして、あなたはそれであなたが望むすべてを行うことができます

グローバルフィルターを適用するには、追加する必要があります

add_filter( 'woocommerce_get_price_html', 'price_array', 100, 2 );
于 2014-05-05T16:36:15.537 に答える
4

これはおそらくあなたが探しているフィルターです:

add_filter('woocommerce_variable_price_html', 'custom_variation_price', 10, 2);
function custom_variation_price( $price, $product ) {
    $price = '';
    $price .= woocommerce_price($product->min_variation_price);
    return $price;
}

これは、最小価格が表示されるように変更するだけです (他には何も表示されません)。これは、どのようにフォーマット/スタイルを設定するかが明確でないためです。$product オブジェクトを介してその他のさまざまな詳細にアクセスし、出力をカスタマイズできます。functions.php ファイル内で使用します。

于 2013-11-29T19:02:16.227 に答える
2

custom.css上記の行を変更し、テーマファイルに小さな css コードを追加することで、これを実現できます。

指定されたコードを次のように置き換えます。

<h3>
    <?php the_title(); ?>
    <br/>
    <span class="price">
        <?php echo $_product->get_price_html(); ?>
    </span>
</h3>

そして、次の css コードをcustom.css(推奨) ファイルまたはテーマstyle.cssファイルの最後の行に追加します。

ul.featured-products li h3 .price::before{
    content : '' !important;
}

注意: 上記のコードは Artificer バージョン 1.3.16 (2016 年 5 月 5 日にリリース) でテストされ、正常に動作しています。

お役に立てれば!

于 2016-12-31T19:05:58.410 に答える