【问题标题】:Post to remote WordPress site causing multiple meta keys / meta values发布到远程 WordPress 站点导致多个元键/元值
【发布时间】: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 过滤器之一弄乱了字段数据。
  • 是的,将任何其他值设置为类似的文本都会做同样的事情。我会按照你的建议看邮递员,看看我想出了什么。干杯。

标签: php json wordpress rest


【解决方案1】:

我可以通过简单地这样做来解决它:'note' => array($note)

感谢您的反馈。

【讨论】:

    猜你喜欢
    • 2013-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-15
    • 2011-02-01
    • 2018-02-16
    • 1970-01-01
    相关资源
    最近更新 更多