侧边栏中的 WordPress 动态页面树形菜单

发布于 2024-12-05 09:55:46 字数 639 浏览 1 评论 0原文

我正在尝试根据当前活动的首页级别生成页面树子菜单列表。完整的页面树如下:

1.0.0首页项

  • 1.1.0子页项
    • 1.1.1 孙子页面项目
    • 1.1.2 孙子页面项目
  • 1.2.0 子页面项目
    • 1.2.1 孙子页面项目
    • 1.2.2 孙子页面项目
  • 1.3.0 子页面项目
    • 1.3.1 孙子页面项目
    • 1.3.2 孙子页面项目

2.0.0 顶部页面项目

3.0.0 顶部页面项目

(第二和第三顶部页面项目具有类似的层次结构)

我希望我的 sidebar.php 中的页面树具有以下行为:

  • 仅当前活动的首页及其所有子页面和所有页面 他们的孙子在浏览这个特定的首页时扩展了 分支
  • 当前页面项目和当前父级突出显示。
  • 其他首页项目被隐藏,

简而言之,这意味着在首页之间移动时整个侧边栏菜单会发生变化,但在每个首页到单页的分支/导航内保持不变。

此外,我想按菜单顺序显示页面项目。

有人有关于如何实现这一目标的代码片段和想法吗?

I'm trying to generate a page tree submenu list based on the currently active top page level. The comlete page tree is as follows:

1.0.0 top page item

  • 1.1.0 child page item
    • 1.1.1 grandchild page item
    • 1.1.2 grandchild page item
  • 1.2.0 child page item
    • 1.2.1 grandchild page item
    • 1.2.2 grandchild page item
  • 1.3.0 child page item
    • 1.3.1 grandchild page item
    • 1.3.2 grandchild page item

2.0.0 top page item

3.0.0 top page item

(Second and third top page items have similar hierarchy)

I want the page tree in my sidebar.php with the following behaviour:

  • Only the currently active top page with all its children and all
    their grandchildren expanded when navigating this spesific top page
    branch
  • Current page item and current parent highlighted.
  • Other top page items are hidden

I short this means that the whole sidebar menu changes when moving between top pages but remains unchanged within the branch/navigation of a each top page down to single page.

Furthermore I'm like to display the page items by menu order.

Does anyone have a code snippet og thoughts on how to achieve this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

魔法唧唧 2024-12-12 09:55:46

啊,我设法解决了。最初我无法弄清楚当前页面项目类去了哪里。它适用于单页级别,但不适用于父级或祖先级别。我必须在模板中包含侧边栏之前插入以下内容:

这消除了那个错误。

其次,我选择使用 css display:none; 隐藏所有页面项目。并且仅使用 display:block; 显示具有 current_page_item、current_page_parent 和 current_page_ancestor 类的页面项目。

最后但并非最不重要的一点是,这是获取侧边栏中页面列表的代码:

就是这样,就是这样!

完美运作!

然而,我不是 php 专家,所以如果有人能给我提供一种更优雅的方法,我会洗耳恭听!

Ah, I managed to solve it. Initially I couldn't figure out where the current page item class had gone. It worked at single page level but not at parent or ancestor level. I had to insert the following right before the sidebar inclusion in the template:
<?php wp_reset_query(); ?>
This flushed out that bug.

Secondly i chose to hide all page items with css display:none; and only show page items with the class current_page_item, current_page_parent and current_page_ancestor with display:block;.

Last but not least here's the code for getting the page list located in my sidebar:
<?php wp_list_pages('sort_column=menu_order'); ?>

That's it and that's that!

Works perfectly!

However, I'm no php guru so if anyone can present me with a more graceful approach I' all ears!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文