一文搞懂wordpress侧栏菜单加上序号的完整操作指南
一文搞懂wordpress侧栏菜单加上序号的完整操作指南
域名服务器搞不懂?网站建好了却不知道怎么把侧栏菜单加上序号?你不是一个人,这事儿我当年也踩过坑。今天咱们就来一文搞懂,怎么在WordPress里给侧栏菜单加上序号,从需求到代码实现,全部讲透,让你不再为这些小功能头疼。
项目背景与需求
最近接手了一个客户的小型企业官网项目,客户希望网站看起来更专业,结构更清晰。他们原本的WordPress侧栏菜单没有序号,看起来比较松散,缺乏条理。客户特别提出,希望在侧栏菜单中加入序号,这样用户浏览时能更清晰地知道每个菜单项的层级关系,同时也方便SEO优化。
在分析需求后,我们首先确认了几个关键点:
- 项目是基于WordPress搭建,使用的是Twenty Twenty-One主题。
- 不希望改动主题核心文件,以避免升级时丢失更改。
- 需要兼容移动端,确保响应式设计。
- 侧栏菜单需要支持多级子菜单,同时给每个主菜单项加上序号。
技术选型
在技术选型上,我们选择了WordPress自带的自定义菜单功能,因为它的兼容性好,而且操作简单。同时,我们决定使用PHP和CSS进行自定义开发,而不是使用第三方插件。这样做的好处是:
- 不依赖插件:减少服务器资源占用,提高网站性能。
- 便于维护:代码写在主题的functions.php文件或自定义插件中,方便后期修改和升级。
- SEO友好:自定义代码不会引入多余脚本,利于Google Search Console爬虫抓取。
为了确保代码的安全性和稳定性,我们在开发前就已经做好了备份,并在本地搭建了测试环境,确保修改不会影响到线上网站。
核心实现:wordpress侧栏菜单加上序号
步骤一:修改主题的菜单输出代码
在WordPress中,我们可以通过wp_nav_menu()函数来输出菜单。这个函数的参数walker可以自定义菜单的输出方式。为了给侧栏菜单添加序号,我们创建了一个自定义的walker类,继承自Walker_Nav_Menu,并重写start_el()方法。
下面是核心代码示例:
class Custom_Menu_With_Numbers extends Walker_Nav_Menu {function start_el(&$output, $item, $depth = 0, $args = array(), $id = 0) {// 获取当前菜单项的编号$menu_order = $depth == 0 ? $this->get_menu_order() : 0;$indent = ( $depth ) ? str_repeat( "\t", $depth ) : '';$class_names = $this->get_classes($item, $args, $depth);$class_names = $class_names ? ' class="' . esc_attr( $class_names ) . '"' : '';$output .= $indent . '<li' . $class_names . '>';$atts = array();$atts['title'] = !empty($item->title) ? $item->title : '';$atts['target'] = !empty($item->target) ? $item->target : '';$atts['rel'] = !empty($item->xfn) ? $item->xfn : '';$atts['href'] = !empty($item->url) ? $item->url : '';$atts = apply_filters( 'nav_menu_link_attributes', $atts, $item, $args, $depth );$attributes = '';foreach ( $atts as $attr => $value ) {if ( ! empty( $value ) ) {$attributes .= ' ' . $attr . '="' . esc_attr( $value ) . '"';}}$item_output = $args->before;$item_output .= '<a' . $attributes . '>';$item_output .= $menu_order > 0 ? '<span class="menu-number">' . $menu_order . '</span>' : '';$item_output .= $args->link_before . apply_filters( 'the_title', $item->title, $item->ID ) . $args->link_after;$item_output .= '</a>';$item_output .= $args->after;$output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );}function get_menu_order() {static $menu_count = 0;$menu_count++;return $menu_count;}
}
这段代码的核心是Custom_Menu_With_Numbers类,它会为每个顶级菜单项添加一个数字序号。注意,我们通过get_menu_order()方法来记录当前的菜单项编号,确保每个主菜单项都会被赋予一个唯一的数字。
步骤二:在主题中调用自定义菜单
在主题的侧边栏文件(如sidebar.php或通过Widgets区域添加菜单)中,我们使用自定义的walker来输出菜单:
wp_nav_menu( array('theme_location' => 'sidebar-menu','menu_class' => 'sidebar-menu','walker' => new Custom_Menu_With_Numbers(),
) );
这里的theme_location参数要和在后台“外观 → 菜单”中设置的菜单位置一致,比如“sidebar-menu”。
步骤三:添加样式
为了使序号看起来更美观,我们需要为.menu-number类添加样式。在主题的CSS文件中,添加以下代码:
.menu-number {display: inline-block;width: 20px;height: 20px;background-color: #0073aa;color: #fff;text-align: center;border-radius: 50%;margin-right: 8px;font-weight: bold;
}
这样,每个菜单项前面都会显示一个圆形数字,背景为蓝色,数字白色,提升可读性和美观度。
步骤四:测试与调试
完成代码修改后,我们通过本地服务器进行测试,确保菜单序号显示正常,响应式布局没有问题。我们还使用Google Search Console的“爬虫测试工具”来检查网站结构是否被正确识别,确保SEO不会受到影响。
上线与优化
在代码测试无误后,我们将修改上传到生产环境,并通过FTP或WordPress后台完成部署。为确保网站安全,我们还为网站安装了SSL证书,并完成了ICP备案,确保网站符合国内法规。
上线后,我们通过Google Search Console提交了网站地图,并对网站进行了基础的SEO优化,包括:
- 检查网站结构是否清晰;
- 确保所有菜单项都有合适的关键词;
- 检查页面加载速度,优化图片和脚本;
- 设置合理的meta描述和标题标签。
这些优化操作让网站在上线后两周内就获得了不错的自然流量。
经验总结
通过这次项目,我们总结了几个关键点:
- 不要依赖插件:虽然很多插件可以快速实现功能,但使用自定义代码更灵活、更安全;
- 响应式设计不能忽视:确保序号在不同设备上显示正常;
- SEO优化要提前:从结构到内容,都要为搜索引擎优化考虑;
- 备份和测试是关键:在正式部署前,务必在测试环境中进行多次验证。
最后,如果你在建站过程中也遇到了类似的问题,或者有其他技术上的困惑,欢迎评论区留言。你更倾向模板建站还是定制开发?欢迎评论。