我想做什么
我目前正在研究当用户进入产品页面时更新产品价格的方法。我正在使用API来获取准确的价格。
<标题>函数在后端正确地更新了元字段sellers
,但是元字段的值不会在前端显示,即使在刷新之后。我必须在后端手动更新帖子,以便元字段sellers
在刷新页面时显示在前面。
到目前为止我做了什么
我设法处理API请求,然后解析响应。我还设法触发API请求,并在必要时在产品页面的元字段中使用add_action钩子修改价格。我目前正在使用send_headers
钩子,这可能不是一个去,但至少它有点工作:p
add_action( 'send_headers', 'fetch_seller_price' );
function fetch_seller_price(){
//check if is front
if ( !is_admin() ) {
$post_id = get_the_ID();
//Check if is custom post type
if ('bons-plans' == get_post_type( $post_id )) {
//Get ASIN code from custom meta field
$asin_code = get_post_meta( $post_id, 'asin_code', true );
//check if product code is correct
if (strlen( $asin_code ) == 10) {
$sellers = get_post_meta($post_id, 'sellers', true);
foreach ($sellers as $item => $value) {
//Check if seller is Amazon
if ($value["seller"] == "Amazon") {
//get price from api function
$item_price = amazon_price_request( $asin_code );
//If new price != old price, update sellers array with new product price value
if ($value["product-price"] != $item_price) {
$sellers[$item]["product-price"] = $item_price;
}
}
update_post_meta( $post_id, "sellers", $sellers );
}
}
}
}
}
注意:sellers
元字段是一个嵌套数组,其中包含多个seller
数组的形式:
["item-2"]=>
array(9) {
["seller"]=>
string(6) "Amazon"
["product-link"]=>
string(23) "https://amzn.to/3E90AFS"
["product-price"]=>
string(2) "42"
}
我试图var_dump()
sellers
数组加载页面后,在前面,并尝试与item_price
变量。两者都返回正确的数字,但最终结果显示为空。
任何帮助都将是非常感激的!
我对PHP有点陌生,我很清楚我的代码有点垃圾,任何关于如何使它正确的想法也是可以接受的:p
标题> 标题>问题是,我解析json响应的方式,变量是float
格式,预期的格式是string
:p