使用 wc_price 过滤器挂钩将其他货币添加到产品价格
Adding Additional Currrencies to Product Price using wc_price Filter Hook
根据我原来post的回答,我现在尝试在函数中添加额外的货币,最后将它们全部输出。
我决定使用四列的 DIV 部分,其中 CSS 使其响应。
.exchanged-price{
float: left;
width: 25%;
padding: 15px;
}
.exchange-rate-wrapper:after{
content: "";
display: table;
clear: both;
}
@media screen and (max-width: 900px){
.exchanged-price{
width: 50%;
}}
@media screen and (max-width: 600px){
.exchanged-price{
width: 100%;
}}
然后我删除了该功能的使用,认为我不需要它。
这是新代码,它给我以下错误:
Parse error: syntax error, unexpected 'return' (T_RETURN)
这是新代码:
add_filter( 'wc_price', 'filter_wc_price', 10, 5 );
function filter_wc_price( $return, $price, $args, $unformatted_price, $original_price = null ) {
// EUR
$conversion_rate_eur = (float) 1.25;
$symbol_eur = 'EUR';
$currency_symbol_eur = get_woocommerce_currency_symbol( $symbol_eur );
$euro_price = (float) $price * $conversion_rate_eur;
// return number_format( $euro_price, 2, '.', '' );
// US dollar
$conversion_rate_us = (float) 0.85;
$symbol_us = 'US';
$currency_symbol_us = get_woocommerce_currency_symbol( $symbol_us );
$us_price = (float) $price * $conversion_rate_us;
// return number_format( $us_price, 2, '.', '' );
// GP brittish pound
$conversion_rate_gbp = (float) 1.35;
$symbol_gbp = 'GBP';
$currency_symbol_gbp = get_woocommerce_currency_symbol( $symbol_gbp );
$us_price = (float) $price * $conversion_rate_us;
// return number_format( $us_price, 2, '.', '' );
$exchange_rate_section = '
<div class="exchange-rate-wrapper">
<div class="exchanged-price">
<h2>' return number_format( $euro_price, 2, '.', '' ); '</h2>
</div>
<div class="exchanged-price">
<h2>'return number_format( $us_price, 2, '.', '' ); '</h2>
</div>
<div class="exchanged-price">
<h2>'return number_format( $gbp_price, 2, '.', '' ); '</h2>
</div>
<div class="exchanged-price">
<h2></h2>
</div>
</div>';
return $return . '<br>' . $exchange_rate_section;
}
有一些错误:
您正在编写 PHP 代码以及其他字符串,而没有使用字符串连接符号 .
(PHP: String Operators).
$gbp_price
变量尚未初始化and/or赋值。
获取美元货币的符号是USD
而不是US
.
所以正确的函数是:
add_filter( 'wc_price', 'filter_wc_price', 10, 5 );
function filter_wc_price( $return, $price, $args, $unformatted_price, $original_price = null ) {
// EUR
$conversion_rate_eur = (float) 1.25;
$symbol_eur = 'EUR';
$currency_symbol_eur = get_woocommerce_currency_symbol( $symbol_eur );
$euro_price = (float) $price * $conversion_rate_eur;
// return number_format( $euro_price, 2, '.', '' );
// US dollar
$conversion_rate_us = (float) 0.85;
$symbol_us = 'USD';
$currency_symbol_us = get_woocommerce_currency_symbol( $symbol_us );
$us_price = (float) $price * $conversion_rate_us;
// return number_format( $us_price, 2, '.', '' );
// GP brittish pound
$conversion_rate_gbp = (float) 1.35;
$symbol_gbp = 'GBP';
$currency_symbol_gbp = get_woocommerce_currency_symbol( $symbol_gbp );
$gbp_price = (float) $price * $conversion_rate_us;
// return number_format( $gbp_price, 2, '.', '' );
$exchange_rate_section = '
<div class="exchange-rate-wrapper">
<div class="exchanged-price">
<h2>' . number_format( $euro_price, 2, '.', '' ) . ' ' . $currency_symbol_eur . '</h2>
</div>
<div class="exchanged-price">
<h2>'. number_format( $us_price, 2, '.', '' ) . ' ' . $currency_symbol_us . '</h2>
</div>
<div class="exchanged-price">
<h2>' . number_format( $gbp_price, 2, '.', '' ) . ' ' . $currency_symbol_gbp . '</h2>
</div>
<div class="exchanged-price">
<h2></h2>
</div>
</div>';
return $return . '<br>' . $exchange_rate_section;
}
功能已经过测试,没有return错误。
根据我原来post
我决定使用四列的 DIV 部分,其中 CSS 使其响应。
.exchanged-price{
float: left;
width: 25%;
padding: 15px;
}
.exchange-rate-wrapper:after{
content: "";
display: table;
clear: both;
}
@media screen and (max-width: 900px){
.exchanged-price{
width: 50%;
}}
@media screen and (max-width: 600px){
.exchanged-price{
width: 100%;
}}
然后我删除了该功能的使用,认为我不需要它。
这是新代码,它给我以下错误:
Parse error: syntax error, unexpected 'return' (T_RETURN)
这是新代码:
add_filter( 'wc_price', 'filter_wc_price', 10, 5 );
function filter_wc_price( $return, $price, $args, $unformatted_price, $original_price = null ) {
// EUR
$conversion_rate_eur = (float) 1.25;
$symbol_eur = 'EUR';
$currency_symbol_eur = get_woocommerce_currency_symbol( $symbol_eur );
$euro_price = (float) $price * $conversion_rate_eur;
// return number_format( $euro_price, 2, '.', '' );
// US dollar
$conversion_rate_us = (float) 0.85;
$symbol_us = 'US';
$currency_symbol_us = get_woocommerce_currency_symbol( $symbol_us );
$us_price = (float) $price * $conversion_rate_us;
// return number_format( $us_price, 2, '.', '' );
// GP brittish pound
$conversion_rate_gbp = (float) 1.35;
$symbol_gbp = 'GBP';
$currency_symbol_gbp = get_woocommerce_currency_symbol( $symbol_gbp );
$us_price = (float) $price * $conversion_rate_us;
// return number_format( $us_price, 2, '.', '' );
$exchange_rate_section = '
<div class="exchange-rate-wrapper">
<div class="exchanged-price">
<h2>' return number_format( $euro_price, 2, '.', '' ); '</h2>
</div>
<div class="exchanged-price">
<h2>'return number_format( $us_price, 2, '.', '' ); '</h2>
</div>
<div class="exchanged-price">
<h2>'return number_format( $gbp_price, 2, '.', '' ); '</h2>
</div>
<div class="exchanged-price">
<h2></h2>
</div>
</div>';
return $return . '<br>' . $exchange_rate_section;
}
有一些错误:
您正在编写 PHP 代码以及其他字符串,而没有使用字符串连接符号
.
(PHP: String Operators).$gbp_price
变量尚未初始化and/or赋值。获取美元货币的符号是
USD
而不是US
.
所以正确的函数是:
add_filter( 'wc_price', 'filter_wc_price', 10, 5 );
function filter_wc_price( $return, $price, $args, $unformatted_price, $original_price = null ) {
// EUR
$conversion_rate_eur = (float) 1.25;
$symbol_eur = 'EUR';
$currency_symbol_eur = get_woocommerce_currency_symbol( $symbol_eur );
$euro_price = (float) $price * $conversion_rate_eur;
// return number_format( $euro_price, 2, '.', '' );
// US dollar
$conversion_rate_us = (float) 0.85;
$symbol_us = 'USD';
$currency_symbol_us = get_woocommerce_currency_symbol( $symbol_us );
$us_price = (float) $price * $conversion_rate_us;
// return number_format( $us_price, 2, '.', '' );
// GP brittish pound
$conversion_rate_gbp = (float) 1.35;
$symbol_gbp = 'GBP';
$currency_symbol_gbp = get_woocommerce_currency_symbol( $symbol_gbp );
$gbp_price = (float) $price * $conversion_rate_us;
// return number_format( $gbp_price, 2, '.', '' );
$exchange_rate_section = '
<div class="exchange-rate-wrapper">
<div class="exchanged-price">
<h2>' . number_format( $euro_price, 2, '.', '' ) . ' ' . $currency_symbol_eur . '</h2>
</div>
<div class="exchanged-price">
<h2>'. number_format( $us_price, 2, '.', '' ) . ' ' . $currency_symbol_us . '</h2>
</div>
<div class="exchanged-price">
<h2>' . number_format( $gbp_price, 2, '.', '' ) . ' ' . $currency_symbol_gbp . '</h2>
</div>
<div class="exchanged-price">
<h2></h2>
</div>
</div>';
return $return . '<br>' . $exchange_rate_section;
}
功能已经过测试,没有return错误。