在上一篇文章中,我介绍了如何使用WordPress来创建主题导航菜单。今天,我将继续探讨更多创建自定义导航菜单的方法,以满足你对菜单HTML结构的个性化需求。这些技巧不仅可以应用于导航菜单,还有其他用途。请注意,本文旨在启发思考,而非提供可以直接复制粘贴的代码片段,希望你能从中找到解决问题的灵感。
首先,我们可以利用`get_terms()`函数获取分类列表。这个函数能让你获取文章分类、链接分类以及自定义分类。通过传入适当的参数,`get_terms()`会返回一个包含所需分类的对象数组。函数的基本语法如下:
“`php
get_terms( $taxonomies, $args );
“`
– `$taxonomies`: 指定要获取的分类类型,如 “category”(文章分类)、”link_category”(链接分类)或你的自定义分类名。
– `$args`: 过滤参数,控制获取哪些分类,如数量、排序方式、父分类等。详情可查阅WordPress官方文档中的`get_terms()`函数。
以下是一个使用`get_terms()`的示例:
“`php
“`
`get_terms()`返回的对象数组 `$terms` 中,每个元素都是一个对象,包含如`slug`(分类缩写)、`name`(分类名称)、`term_id`(分类ID)等属性。你可以通过 `$term->slug`、`$term->name` 和 `$term->term_id` 来访问这些属性。
其次,如果你熟悉WordPress的数据库结构,可以查询`wp_terms`和`wp_term_taxonomy`表来获取分类列表。这适用于更复杂的查询需求:
“`php
“`
接着,有时我们需要获取当前分类的ID,例如制作子导航。在分类页面获取当前分类ID:
“`php
if (is_category()) {
$cat_id = get_query_var(‘cat’);
}
“`
在文章页面获取文章的第一个分类ID:
“`php
$cats = get_the_category();
if ($cats) {
$cat_id = $cats[0]->cat_ID;
}
“`
然后,我们可以基于当前分类ID创建子导航。这里用`wp_list_categories()`列出子分类,也可以使用之前提到的方法:
“`php
“`
如果想展示当前分类下的所有文章,可以使用`WP_Query`对象:
“`php
-
$cat_id, ‘orderby’ => ‘title’, ‘order’ => ‘ASC’);
- ID == $wp_query->post->ID ? ‘ class=”selected”‘ : ”) . ‘ href=”‘ . get_permalink() . ‘”>’ . get_the_title() . ‘
$query_obj = new WP_Query($query_args);
if ($query_obj->have_posts()) {
while ($query_obj->have_posts()) {
$query_obj->the_post();
echo ‘
‘;
}
wp_reset_postData();
}
?>
“`
此外,对于WordPress的页面,`wp_list_pages()`可以列出,但默认HTML可能不符合需求。这时,你可以用`get_pages()`获取页面列表并自定义HTML:
“`php
“`