在我的sidebar.php中,我想在侧边栏上创建过滤器复选框,如上图所示。因此,我的过滤器复选框将采用这种分层格式:
动物
广告活动
我查找了codex,并在数组对象 get_categories 上找到了几个有用的属性。
然而,我正在努力想出自己的数据结构算法来产生上述结果,所以我对数据结构算法的了解相当薄弱,而且我没有多少练习,特别是在PHP中。我只是想知道社区中有没有人像我现在想做的那样做了类似的功能,并能告诉我它是如何完成的?
期待您的反馈。
感谢。
答案 0 :(得分:0)
终于能够做到这一点。
这是我的代码结构。
<h2>Sidebar</h2>
<?php
//Retrieve top-level categories
$parent_args = array(
'orderby' => 'name',
'parent' => 0,
'hide_empty' => 0
);
//Retrieve first-level categories
$firstchild_args = array(
'orderby' => 'name',
'parent' => 0, //needs dynamic code here
'hide_empty' => 0
);
$parent_categories = get_categories($parent_args);
foreach($parent_categories as $parent_category){
//create main headings for other categories other than Uncategorized.
if($parent_category->name!="Uncategorized"){
$category_label = "Filter By ";
echo '<h3 style="font-size: 20px; color: rgb(255, 255, 255);text-shadow: 2px 3px 0px rgb(0, 0, 0);">'.$category_label.''.$parent_category->name.'</h3>';
//fetch the parent category's id
$firstchild_args['parent'] = $parent_category->term_id;
$firstchild_categories = get_categories($firstchild_args);
//fetch all the first level children categories
foreach($firstchild_categories as $firstchild_category){
$output = "";
$output = $output."<label class=\"checkbox\">";
$output = $output." <input type=\"checkbox\"><span style='font-size: 17px; color: rgb(255, 255, 255);text-shadow: 2px 3px 0px rgb(0, 0, 0);'>".$firstchild_category->name;
$output = $output."</label>";
echo $output;
}
}
}
?>
现在必须要这样做,直到我重构它以制作更好的代码结构。
接下来为每个选中的复选框创建帖子事件...:)