使用 URL 自动将货币从 USD 转换为 BTC blockchain.com

Automatic Currency Conversion From USD to BTC Using blockchain.com URL

提问人:Learning WooStoreFront 提问时间:10/7/2023 最后编辑:LoicTheAztecLearning WooStoreFront 更新时间:10/9/2023 访问量:56

问:

这个想法非常简单,因为 URL 会自动更新价格本身,我只需要在括号内添加 BTC 价格即可。

示例:是使用此 URL 的结果:0.00003573

https://www.blockchain.com/tobtc?currency=USD&value=1

但是,出了点问题,我不确定如何解决它。我得到“”。我需要根据产品价格显示 URL 的输出。Warning: A non-numeric value

这是我正在使用的代码:

function manual_currency_conversion( $price ) {
    $btc_conversion_rate = "https://www.blockchain.com/tobtc?currency=USD&value=1"; // returns this: 0.00003573 = which will auto update automatically
    $btc_price = (float) $price / $btc_conversion_rate;

    return number_format( $btc_price, 8, '.', '' );
}
    
add_filter( 'wc_price', 'btc_additional_currency', 10, 5 );
function btc_additional_currency( $return, $price, $args, $unformatted_price, $original_price = null ) {
    $display_btc_price = manual_currency_conversion( $price );
    $btc_currency = '₿';
    $currency_symbol = $btc_currency;
    $display_btc_price = $currency_symbol . $display_btc_price;
    $btc_price_on_product_page = '<small><span class="btc-price"> ( ' . $display_btc_price . ' ) </small></span>';

    return $return . $btc_price_on_product_page;
}
WooCommerce Currency Data-Conversion Bitcoin 价格

评论

0赞 LoicTheAztec 10/8/2023
我已经更新了我的答案代码...现在价格通过URL发送,直接获取BTC价格(并且该功能还允许其他货币)。

答:

2赞 LoicTheAztec 10/7/2023 #1

更新(也允许其他货币,默认货币取自设置)

为了避免这个问题,你需要在URL中使用file_get_contents()PHP函数来有效地获取所需的数据。

此外,需要将价格与价格相乘才能获得正确的转换价格(而不是除法)。

我已经修改并简化了您的代码:

function get_btc_price_from( $price, $currency_from = '' ) {
    $currency_from = empty( $currency_from ) ? get_option('woocommerce_currency') : $currency_from;
    $btc_rate = file_get_contents("https://www.blockchain.com/tobtc?currency={$currency_from}&value=1");
    return number_format( floatval($btc_rate) * floatval($price), 8, '.', '' );
}
    
add_filter( 'wc_price', 'btc_additional_currency', 10, 2 );
function btc_additional_currency( $price_html, $price ) {
    return $price_html . '<small class="btc-price"> ( ₿'. get_btc_price_from( $price, 'USD' ). ' )</small>';
}

代码位于子主题的函数.php文件中(或插件中)。经过测试并有效。


EUROS的用法示例:

add_filter( 'wc_price', 'btc_additional_currency', 10, 2 );
function btc_additional_currency( $price_html, $price ) {
    return $price_html . '<small class="btc-price"> ( ₿'. get_btc_price_from( $price, 'EUR' ). ' )</small>';
}

默认 WooCommerce 货币的用法示例:

add_filter( 'wc_price', 'btc_additional_currency', 10, 2 );
function btc_additional_currency( $price_html, $price ) {
    return $price_html . '<small class="btc-price"> ( ₿'. get_btc_price_from( $price ). ' )</small>';
}

评论

0赞 Learning WooStoreFront 10/9/2023
如果可能的话,如果它采用WC(get_option?)使用的货币,然后允许数组来定义其他货币,那就更好了。例如:该网站使用美元,但通过使用数组,您可以很好地添加欧元和其他广告。这意味着,它会转换 2、3、4 och evne 5 种货币。你能对代码进行更新吗?
0赞 Learning WooStoreFront 10/9/2023
对不起,所以你的意思是添加我可以添加“$price”、“欧元”、“美元”等?return $price_html . '<small class="btc-price"> ( ₿'. get_btc_price_from( $price, 'EUR' ). ' )</small>';
0赞 LoicTheAztec 10/9/2023
现在它从 WooCommerce 获取货币(如果未指定货币)。
0赞 Learning WooStoreFront 10/9/2023
好的,因为使用原始版本工作正常,但是使用新版本让我“无法打开流:HTTP 请求失败!HTTP/1.1 500 内部服务器错误”。也许我做错了什么?
0赞 LoicTheAztec 10/9/2023
对我来说,它正在起作用......我已经稍微恢复了代码。