如何将 "text" 来自 Twitter JSON 的数据保存到 ACF 字段?
How to save "text" from Twitter JSON data to a ACF field?
我的代码需要帮助。它应该做的是用户从 Twitter 输入完整的 URL 到文本字段 ('https://twitter.com/openbayou/status/1487977976033685506') 并且当 post 被保存时,它将 url 分解为使用 explode
然后通过 Twitter API v2.
从推文中获取数据
我的代码:
$tweet_url_raw = get_field('twitter_url');
$parts = explode('/', $tweet_url_raw);
$url = 'https://api.twitter.com/2/tweets/' . $parts[5] . '?expansions=author_id&tweet.fields=created_at&user.fields=username,verified';
$authorization = 'Authorization: Bearer ' . get_field_object('twitter_bearer_token', 'option')['value'];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json' , $authorization ));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$result = curl_exec($ch);
curl_close($ch);
$tweet_data = json_encode($result);
$tweet_data2 = json_decode($tweet_data);
上面的代码确实获取了数据:
{"data":{"text":"SEC Super Bowl!!","created_at":"2022-01-31T02:36:09.000Z","author_id":"1471331","id":"1487977976033685506"},"includes":{"users":[{"name":"OpenBayou","verified":false,"id":"1471331","username":"openbayou"}]}}
我遇到的问题是当我试图从输出中获取单个数据时。我正在尝试使用 text
中的文本更新名为 tweet
的文本字段。我试过使用 update_field('tweet', $tweet_data2->data, $post_id);
但它是空白的。当我使用 update_field('tweet2', $tweet_data2["data"], $post_id);
时,它只保存 {
知道我做错了什么吗?
你快到了。
由于您省略了 json_decode
的 associative
参数,它默认为 false
因此您得到一个对象,而不是数组。然后您需要这样引用它:
$tweet_data2 = json_decode($tweet_data);
echo 'Tweet text: ' . $tweet_data2->data->text;
如果您更喜欢使用数组,只需将 true
传递给 json_decode
:
$tweet_data2 = json_decode($tweet_data, true);
echo 'Tweet text: ' . $tweet_data2['data']['text'];
有关 json_decode
的更多信息,请访问 PHP 手册站点:
https://www.php.net/manual/en/function.json-decode.php
我的代码需要帮助。它应该做的是用户从 Twitter 输入完整的 URL 到文本字段 ('https://twitter.com/openbayou/status/1487977976033685506') 并且当 post 被保存时,它将 url 分解为使用 explode
然后通过 Twitter API v2.
我的代码:
$tweet_url_raw = get_field('twitter_url');
$parts = explode('/', $tweet_url_raw);
$url = 'https://api.twitter.com/2/tweets/' . $parts[5] . '?expansions=author_id&tweet.fields=created_at&user.fields=username,verified';
$authorization = 'Authorization: Bearer ' . get_field_object('twitter_bearer_token', 'option')['value'];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json' , $authorization ));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$result = curl_exec($ch);
curl_close($ch);
$tweet_data = json_encode($result);
$tweet_data2 = json_decode($tweet_data);
上面的代码确实获取了数据:
{"data":{"text":"SEC Super Bowl!!","created_at":"2022-01-31T02:36:09.000Z","author_id":"1471331","id":"1487977976033685506"},"includes":{"users":[{"name":"OpenBayou","verified":false,"id":"1471331","username":"openbayou"}]}}
我遇到的问题是当我试图从输出中获取单个数据时。我正在尝试使用 text
中的文本更新名为 tweet
的文本字段。我试过使用 update_field('tweet', $tweet_data2->data, $post_id);
但它是空白的。当我使用 update_field('tweet2', $tweet_data2["data"], $post_id);
时,它只保存 {
知道我做错了什么吗?
你快到了。
由于您省略了 json_decode
的 associative
参数,它默认为 false
因此您得到一个对象,而不是数组。然后您需要这样引用它:
$tweet_data2 = json_decode($tweet_data);
echo 'Tweet text: ' . $tweet_data2->data->text;
如果您更喜欢使用数组,只需将 true
传递给 json_decode
:
$tweet_data2 = json_decode($tweet_data, true);
echo 'Tweet text: ' . $tweet_data2['data']['text'];
有关 json_decode
的更多信息,请访问 PHP 手册站点:
https://www.php.net/manual/en/function.json-decode.php