use*_*580 4 php wordpress woocommerce
我是WordPress和WooCommerce的新手,我相信我已经确定了产生我想要改变的输出的代码行.
我使用免费设计者的主题从WooCommerce和index.php文件中有一行:
<h3>
<?php the_title(); ?>
<span class="price">
<?php echo $_product->get_price_html(); ?>
</span>
</h3>
Run Code Online (Sandbox Code Playgroud)
这产生类似"黑石 - $ 43"(即产品标题 - 价格)
我想要一些像"Black Stone
$ 43"
(即产品标题<br/>价格)的东西
看起来``get_price_html()`函数有一些过滤器,但文档不是很好,或者我只是不明白如何浏览它.
任何方向将不胜感激.
谢谢.
Ale*_*nko 11
所有$product->get_price_html();
产生的东西都是这样的:
<del><span class="amount">£8.00</span>–<span class="amount">£9.00</span></del>
<ins><span class="amount">£7.00</span>–<span class="amount">£8.00</span></ins>
Run Code Online (Sandbox Code Playgroud)
要操纵此数据,您必须从此字符串中提取它
如果您使用WP过滤器 - 您将get_price_html()在任何地方更改输出,如果您需要get_price_html()在一个地方更改输出,则应该执行下一步:
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;
}
Run Code Online (Sandbox Code Playgroud)
现在你在数组中有相同的数据
Array ( [0] => £8.00–£9.00 [1] => £7.00–£8.00 )
Run Code Online (Sandbox Code Playgroud)
你可以用它做你想做的一切
要应用全局过滤器,您必须添加
add_filter( 'woocommerce_get_price_html', 'price_array', 100, 2 );
Run Code Online (Sandbox Code Playgroud)
这可能是您正在寻找的过滤器:
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;
}
Run Code Online (Sandbox Code Playgroud)
这只是更改它,以便显示最低价格(而不是其他内容),因为不清楚您想要如何格式化/样式它。您可以通过 $product 对象访问各种其他详细信息以自定义输出。在你的functions.php 文件中使用它。
| 归档时间: |
|
| 查看次数: |
36296 次 |
| 最近记录: |