我正在查询我的wordpress 4.9.5
数据库,并希望返回一个如下所示的数组:
{
"generalInfo": [
{
"post_id": 84,
"title": "Test Title",
"permalink": "www.link.com",
"category": []
},
"Hardware": [
{
"post_id": 12,
"title": "Part 1",
"permalink": "www.link.com",
"category": []
},
{
"post_id": 23,
"title": "Part 2",
"permalink": "www.link.com",
"category": []
},
],
],
}
但是,目前我的数组如下所示:
{
"generalInfo": [
{
"post_id": 84,
"title": "Test Title",
"permalink": "www.link.com",
"category": []
},
],
"Hardware": [
{
"post_id": 12,
"title": "Part 1",
"permalink": "www.link.com",
"category": []
},
{
"post_id": 23,
"title": "Part 2",
"permalink": "www.link.com",
"category": []
},
],
}
我当前的api函数如下所示:
function allData()
{
$hardwareQuery = new WP_Query(array(
'posts_per_page' => -1,
'post_type' => 'Hardware',
));
$results = array(
'generalInfo' => array(),
'Hardware' => array(),
);
while ($hardwareQuery->have_posts()) {
$hardwareQuery->the_post();
$hardwarePostIds = json_decode(get_post_meta(get_the_ID(), 'neededHardware', true));
$computerHardwareQuery = new WP_Query(array(
'posts_per_page' => -1,
'post_type' => 'Computer-Hardware',
'post__in' => $hardwarePostIds,
));
array_push($results['generalInfo'], array(
'post_id' => get_the_ID(),
'title' => get_the_title(),
'permalink' => get_the_permalink(),
'category' => get_the_category(),
));
foreach ($computerHardwareQuery->posts as $item) {
$shop = get_post_meta($item->ID, '_data_shop', true);
$keys = array_keys($shop);
array_push($results['rigHardware'], array(
'partCategory' => 'x',
'partTitle' => $item->post_title,
'post_id' => $item->ID,
'manufacturer' => $shop[$keys[0]]['manufacturer'],
'img' => $shop[$keys[0]]['img'],
'currency' => $shop[$keys[0]]['currency'],
'price' => $shop[$keys[0]]['price'],
'availability' => $shop[$keys[0]]['extra']['availability'],
));
}
}
return $results;
}
如您所见,我正在$results
数组中设置数组。
有关如何在我的结果数组中包含Hardware
- 数组的任何建议吗?
感谢您的回复!
答案 0 :(得分:1)
你走在正确的轨道上,你几乎完成了它。只需将Hardware部件移动到一个函数并将该数组返回到generalInfo
的创建中。我添加了一个检查以确保您的函数返回一个有效的响应,或者为Hardware
返回一个空数组。
array_push($results['generalInfo'], array(
'post_id' => get_the_ID(),
'title' => get_the_title(),
'permalink' => get_the_permalink(),
'category' => get_the_category(),
'Hardware' => get_hardware($computerHardwareQuery),
));
// new fuction
function get_hardware($computerHardwareQuery){
foreach ($computerHardwareQuery->posts as $item) {
$shop = get_post_meta($item->ID, '_data_shop', true);
$keys = array_keys($shop);
array_push($results, array(
'partCategory' => 'x',
'partTitle' => $item->post_title,
'post_id' => $item->ID,
'manufacturer' => $shop[$keys[0]]['manufacturer'],
'img' => $shop[$keys[0]]['img'],
'currency' => $shop[$keys[0]]['currency'],
'price' => $shop[$keys[0]]['price'],
'availability' => $shop[$keys[0]]['extra']['availability'],
));
}
return isset($results)?$results?new array();
}