【发布时间】:2020-04-15 12:25:13
【问题描述】:
除了一个我无法解决的小问题之外,这段代码运行良好:
$order = wc_get_order( $order_id );
$amount = $order->get_total();
$note = $order->get_customer_note();
$api_response = wp_remote_post( 'https://example.com/wp-json/wp/v2/posts', array(
'headers' => array(
'Authorization' => 'Basic ' . base64_encode( 'admin:5mMcJGUGNFYq9PxU5P0ad0Np' )
),
'body' => array(
'title' => 'Pink Shirt',
'status' => 'publish',
'post_type' => 'clothes',
'categories' => 2,
'slug' => 'pink-shirt',
'meta' => array(
'amount' => $amount,
'note' => $note,
'author' => 1)
)
));
问题是,如果任何变量包含多个单词(在这种特殊情况下为$note),则在数据库中为每个单词创建一个 meta_key 和 meta_value。
例如,客户备注是...
This is a new customer.
...这是发布到远程站点时发生的情况:
确实是WTF。
API 响应甚至将单词显示为单独的项目:
我唯一的“解决方案”是使用str_replace() 将所有空格替换为 。但这对我来说似乎很疯狂。
到底发生了什么,我该如何解决?
【问题讨论】:
-
(您绝对肯定地验证了
$note不是一个数组开头?) -
我唯一确定的是,如果我手动将
$note变量更改为$note = 'This is a new customer';之类的字符串,我会得到相同的结果 -
而且它只发生在这个特定的元值上?将任何其他值设置为类似的文本,不显示相同的问题?
-
我可能会尝试使用 Postman (postman.com) 从外部模拟相同的请求,看看是否显示相同的问题。如果不是,那么这要么是
wp_remote_post本身由于某种原因表现异常,要么是沿线某处应用的 WP 过滤器之一弄乱了字段数据。 -
是的,将任何其他值设置为类似的文本都会做同样的事情。我会按照你的建议看邮递员,看看我想出了什么。干杯。