【问题标题】:Adding Additional Currrencies to Product Price using wc_price Filter Hook使用 wc_price 过滤钩向产品价格添加额外的货币
【发布时间】:2021-05-12 07:49:38
【问题描述】:

根据我原来的帖子A non well formed numeric value encountered while using wc_price WooCommerce hook 的回答,我现在正在尝试向函数中添加其他货币,最后将它们全部输出。

我决定使用四列的 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;
}

【问题讨论】:

    标签: woocommerce currency price


    【解决方案1】:

    有一些错误:

    • 您正在编写 PHP 代码以及其他字符串,而没有使用字符串连接符号 . (PHP: String Operators)。

    • $gbp_price 变量尚未初始化和/或赋值。

    • 获取美元货币的符号是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;
    }
    

    该函数已经过测试,没有返回错误。

    【讨论】:

    • @HaroldAldersen 坚持下去。也尽量不要在你发布的 HTML 代码中添加空格,因为它会被显示(不会像 PHP 那样被忽略)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多