所以我似乎無法弄清楚這一點,所以我正在伸出手來看看是否有人可以幫助我。
請讓我知道最好的輸出是什么,以便我可以使用 GET 為我創建的端點檢索干凈的資料。
我有以下方法:
function instagram_posts(): bool|string
{
if (!function_exists('is_plugin_active')) {
include_once(ABSPATH . 'wp-admin/includes/plugin.php');
}
if (!is_plugin_active('fh-instagram/autoload.php')) {
return false;
}
if (empty($items = Instagram::get_items_for_api(50))) {
return false;
}
var_dump($items);
var_dump(json_encode($items));
return json_encode($items);
}
var_dump($items);給我以下輸出:
array(50) {
[0]=>
object(Plugin\Instagram\Item)#976 (7) {
["id":"Plugin\Instagram\Item":private]=>
}
[1]=>
object(Plugin\Instagram\Item)#1030 (7) {
["id":"Plugin\Instagram\Item":private]=>
string(17) "17842233125750202"
}
}
當我運行時,var_dump(json_encode($items));我得到以下輸出:
string(151) "[{},{}]"
如何轉換我的物件陣列,以便將其轉換為 json,然后在 Postman 中使用它?這是它目前在 Postman 中的樣子:
array(50) {
[0]=>
object(Plugin\Instagram\Item)#973 (7) {
["id":"Plugin\Instagram\Item":private]=>
string(17) "17992874035441353"
}
[1]=>
object(Plugin\Instagram\Item)#1027 (7) {
["id":"Plugin\Instagram\Item":private]=>
string(17) "17842233125750202"
}
}
它應該輸出如下:
[
{"id": etc..}
]
所有幫助將不勝感激!
下面使用 instagram_posts 方法:
add_action('rest_api_init', function () {
register_rest_route( 'instagram', '/posts/', [
'methods' => 'GET',
'callback' => 'instagram_posts',
]);
});
所以我可以使用 Postman 訪問端點:http://headlesscms.com.local/wp-json/instagram/posts
uj5u.com熱心網友回復:
由于您想要的屬性是私有的,因此它不會包含在json_encode(). 只有公共財產會。
您需要創建一個具有所需結構的多維陣列并對其進行編碼。
// This is the new array we will push the sub arrays into
$results = [];
foreach($items as $item) {
$results[] = ['id' => $item->get_id()];
}
return json_encode($results);
這將為您提供如下所示的 json 結構:
[
{
"id": 1
},
{
"id": 2
},
...
]
替代格式
如果您只想要一個 id 串列,則可能不需要創建多維陣列,而只需回傳一個 id 串列。
在這種情況下,請執行以下操作:
$results = [];
foreach ($items as $item) {
$results[] = $item->get_id();
}
return json_encode($results);
那會給你:
[
1,
2,
...
]
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/443241.html
