显示所有类别的帖子

时间:2015-05-25 作者:Alvaro

我有一个有5个不同类别的网站,每个类别都有一个notices 部分我还想有另一个部分来查看任何类别的最新通知。

到目前为止,我发现我可以在URL中使用这个?cat=20,25,30,35 而且它会返回我想要的东西(如果我没弄错的话)。

现在,我想知道如何为包含所有通知的特定部分创建另一个模板页面。

通常我在我的category.php:

if($this_category->slug == "groups-london" || $this_category->slug == "groups-cambridge"){
    include(TEMPLATEPATH.\'/groups.php\');
}else{
    include(TEMPLATEPATH.\'/general.php\');
}
但在这种情况下,我不能使用相同的方法,因为我注意到$this_category 仅包含作为URL中第一个参数传递的类别中的信息。所以,在这种情况下?cat=20,25,30,35 仅来自ID为的类别20.

有什么建议吗?也许我应该用一种完全不同的方法来解决这个问题?

1 个回复
SO网友:s_ha_dum

你需要get_categories() 使用include 参数:

if (isset($_GET[\'cat\'])) {
  $this_category = get_categories(
    array(
      \'include\' => $_GET[\'cat\']
    )
  );
  var_dump($this_category);
}
您将获得array 属于stdClass 包含类别数据的对象。有几种方法可以解析,但这可能会做到:

if (isset($_GET[\'cat\'])) {
  $this_category = get_categories(
    array(
      \'include\' => $_GET[\'cat\']
    )
  );
  //   var_dump($this_category);
  $cats = wp_list_pluck($this_category,\'slug\');
  var_dump($cats);
  $needle = array(\'groups-london\',\'groups-cambridge\');
  var_dump(array_intersect($needle,$cats));
  if(array_intersect($needle,$cats)){
    include(TEMPLATEPATH.\'/groups.php\');
  }else{
    include(TEMPLATEPATH.\'/general.php\');
  }
}

结束

相关推荐

向GET_CATEGORIES下拉列表添加自定义选项

我有一个下拉菜单,用于在我正在处理的小部件中选择类别。一切正常,选项保存在数据库中。我现在要做的是添加一个空白选项,而不是在单击“保存”时自动设置。在这种情况下,用户可能不想设置类别。 $this->categories = get_categories(); foreach ( $this->categories as $cat ) { $selected = ( $cat->term_id == esc_att