wp_category地图:ID和名称

时间:2019-06-08 19:54:23

标签: php wordpress

我正在尝试开发一个WordPress插件,该插件按类别获取帖子并使用javascript显示它们。

我需要显示类别名称。

我当时想我可以让php输出所有类别的对象:它们的ID和名称在一个对象中。

然后我可以用它来将帖子的类别ID转换为名称。

我尝试使用:

'all_categories' => array_map(
     function ($fiteredCat) {
         return (object) [
             $fiteredCat->term_id => $fiteredCat->cat_name
         ];
      },
      array_filter($categories, function ($cat) {
         // exclude 21 & 1
         return $cat->term_id !== 21 && $cat->term_id !== 1;
      }, ARRAY_FILTER_USE_BOTH)) 

但这正在输出

"all_categories" : {
    "0" : {
        "15" : Case Studies
    },
    "1" : {
        "17" : Events
    },
    "4" : {
        "13" : Useful Documents
    },
    "5" : {
        "3" : videos
    },
    "6" : {
        "16" : Webinars
    },
    "7" : {
        12" : White Papers
    }
}

如何使用PHP来获得此信息?:

"all_categories" : {
    "15": "Case Studies",
    "17": "Events",
    ....
}

2 个答案:

答案 0 :(得分:0)

如果您退回

"post_categories" : {
    "15": "Case Studies",
    "17": "Events",
    ....
}

使用javascript,您将无法循环浏览各个类别。 我建议您要么使用多维数组,要么使用对象数组。

多维数组 [["15","Case Studies"],["17","Events"]]

然后在您的JavaScript中,您可以使用任意循环遍历数组

returned_array.forEach((arr)=>{
  let key = arr[0];
  let value = arr[1];
  //Then you can do what you want with the data
}) 

对象数组 [{"15":"Case Studies"},{"17":"Events"}]

然后您执行遍历数组的基本操作

returned_array.forEach((obj)=>{
  let key = Object.keys(obj);
  let value = obj[key];
  //Then you can do what you want with the data
}) 

希望这对您有帮助

答案 1 :(得分:0)

$post_categories = [];

 array_walk(array_filter($categories, function ($cat) { 
     // exclude 21 & 1 
     return $cat->term_id !== 21 && $cat->term_id !== 1;
 }, ARRAY_FILTER_USE_BOTH), 
 function ($fiteredCat) use(&$post_categories){ 
     $post_categories[$fiteredCat->term_id] = $fiteredCat->cat_name; 
 }); 

 echo json_encode(['post_categories' => $post_categories]);