wordpress模板主题仿站开发菜单导航调用之前,先在网站后台添加分类栏目,与单页栏目,如图所示(分类栏目就是指网站的列表页:如产品中心,新闻中心,新建页面:指的是网站的单页,比如联系我们,关于我们呢)
然后在后台外观》菜单中创建新菜单命名为 nav然后把你想要放到导航菜单栏的分类或者是单页,勾选上后点击添加至菜单就可以啦,最后就是在网站前台调用我们的菜单了
1、wordpress菜单导航前台调用方法分为以下三种
方法一:直接调用wordpress默认的导航菜单样式 方法二: 同样是调用默认菜单导航,但是更改数组后面参数可以更改默认样式的值
<? wp_nav_menu() ?> 方法一(默认菜单调用方法)
<?php 方法二(默认菜单调用方法,可更改样式)
wp_nav_menu( array(
'theme_location' => '', //导航别名
'menu' => '', //期望显示的菜单
'container' => 'div', //容器标签
'container_class' => '', //ul父节点class值
'container_id' => '', //ul父节点id值
'menu_class' => 'menu', //ul节点class值
'menu_id' => '', //ul节点id值
'echo' => true, //是否输出菜单,默认为真
'fallback_cb' => 'wp_page_menu', //菜单不存在时,返回默认菜单,设为false则不返回
'before' => '', //链接前文本
'after' => '', //链接后文本
'link_before' => '', //链接文本前
'link_after' => '', //链接文本后
'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s</ul>', //如何包装列表
'depth' => 0, //菜单深度,默认0
'walker' => '' //自定义walker
) );
?>
方法三、顶级分类和单页组成菜单导航
<li<?php if (is_home()) { echo ' class="current-cat"';} ?>><a title="Home" href="/">主页</a></li>
<?php
$currentcategory = '';
// 以下这行代码用于在导航栏添加分类列表,
if (is_category() || is_single()) {
$catsy = get_the_category();
$myCat = $catsy[0]->cat_ID;
$currentcategory = '¤t_category='.$myCat;
}
wp_list_categories('depth=1&title_li=&show_count=0&hide_empty=0&child_of=0'.$currentcategory);
// 以下这行代码用于在导航栏添加页面列表
wp_list_pages('depth=1&title_li=&sort_column=menu_order');
?>
方法四、分类与页面组合菜单导航
使用get_terms()来获取分类列表,使用get_pages()来获取页面列表
也可以用此方法调用指定分类栏目parent=0即为父分类的id没有父分类即为0
更多参数 https://developer.wordpress.org/reference/classes/wp_term_query/__construct/
<?php
// 获取分类 orderby=id按id排序parent=0调用顶级栏目 number=2循环个数
$terms = get_terms('category', 'orderby=id&hide_empty=0&parent=0&number=2' );
// 获取到的分类数量
$count = count($terms);
if($count > 0){
// 循环输出所有分类信息
foreach ($terms as $term) {
echo '<li><a href="'.get_term_link($term, $term->slug).'" title="'.$term->name.'">'.$term->name.'</a></li>';
}
}
?>
//parent=0 调用顶级栏目 number=2循环个数
<?php
$mypages = get_pages('parent=0&number=2');
if(count($mypages) > 0) {
foreach($mypages as $page) {
echo '<li><a href="'.get_page_link($page->ID).'" title="'.$page->post_title.'">'.$page->post_title.'</a></li>';
}
}
else {
echo '<li><a href="#">没有页面</a></li>';
}
?>
get_terms函数的数组
[term_id] => 2 分类id
[name] => 产品中心 分类名称
[slug] => product
[term_group] => 0
[term_taxonomy_id] => 2
[taxonomy] => category
[description] => 分类描述
[parent] => 0 分类父元素id
[count] => 2
[filter] => raw
get_pages()函数的数组
[post_author] => 1
[post_date] => 2021-06-29 09:57:35
[post_date_gmt] => 2021-06-29 01:57:35
[post_content] =>
[post_title] => 联系我们
[post_excerpt] =>
[post_status] => publish
[comment_status] => closed
[ping_status] => closed
[post_password] =>
[post_name] => contact
[to_ping] =>
[pinged] =>
[post_modified] => 2021-06-29 09:57:35
[post_modified_gmt] => 2021-06-29 01:57:35
[post_content_filtered] =>
[post_parent] => 0
[guid] => http://word03.com/?page_id=13
[menu_order] => 0
[post_type] => page
[post_mime_type] =>
[comment_count] => 0
[filter] => raw
使用get_terms可以获取你的文章分类、链接分类和自定义分类等,给get_terms()传递相应的参数可以给你返回一个对象数组,这个数组就是你想要的所有分类,以下是get_terms()的函数原型:
<?php get_terms( $taxonomies, $args ) ?>
$taxonomies:
该参数是你想要获取的分类类别,可选值包括:"category","link_category","my_taxonomy",他们分别代表文章分类、链接分类以及你自定义的分类,其中my_taxonomy是你自定义的分类名称。
$args:
该参数是分类的筛选参数,用于控制获取你要获取的分类,包括你想要获取多少个分类、如何排序、父分类以及是否输出空的分类等,具体请参考WordPress官方文档
$taxonomies:
该参数是你想要获取的分类类别,可选值包括:"category","link_category","my_taxonomy",他们分别代表文章分类、链接分类以及你自定义的分类,其中my_taxonomy是你自定义的分类名称。
get_terms()函数返回一个对象数组$terms,我们首先判断这个数组是否为空,为空说明并没有获取到任何分类,如果不为空那么你就可以输出分类了。$terms的每个数组项就是一个对象,部分对象属性的意义如:slug:分类缩略名,name:分类名,term_id:分类id。如以上代码所示,你可以通过$term->name来获取对象的属性值。
WordPress的页面page可以通过wp_list_pages()来列出,不过这个函数输出的HTML都是固定的,如果你想要自定义这些HTML,可以使用get_pages()来获取页面列表