突出显示单个页面的 wordpress 导航链接

Posted

技术标签:

【中文标题】突出显示单个页面的 wordpress 导航链接【英文标题】:highlight a wordpress nav link for a single page 【发布时间】:2021-09-21 07:45:27 【问题描述】:

我有一个存档事件页面,该页面链接到一个页面,该页面列出了过去创建的所有以前的事件,并且只能通过存档事件页面访问。

我的问题是,如何在查看此单个页面时突出显示存档事件页面 url 链接?

例如,下面的 sn-p 以硬编码的导航链接为目标,以在查看其他页面时突出显示事件链接,但是我的菜单不是硬编码的:

<nav class="main-navigation">
  <ul>
    <li>...</li>
    <li>...</li>
    <li> 
      <?php if(get_post_type() == 'event' OR is_page('past-events')) echo 'class="current-menu-item"';?>>
      <a href="<?php echo get_post_type_archive_link('event'); ?>">events</a>
    </li>
    <li>...</li>
  </ul>
</nav>

对于通过 wordpress 仪表板菜单创建的动态菜单,我正在关注的教程并未在 functions.php 页面中提供类似的替代编码方式。

我已经尝试搜索示例,但到目前为止我还没有找到任何有用的东西并且需要一些外部帮助。

我该怎么做?

【问题讨论】:

【参考方案1】:

我可以看出有问题。你没有把php代码放在正确的地方。更正的代码是这样的。试试这个,让我知道它是否有效

<nav class="main-navigation">
  <ul>
    <li>...</li>
    <li>...</li>
    <li <?php if(get_post_type() == 'event') echo 'class="current-menu-item"';?>> 
      <a href=""<?php echo get_post_type_archive_link('event'); ?>"></a>
    </li>
    <li>...</li>
  </ul>
</nav>

【讨论】:

忘记放置错误...这只是我想使用的 php if 语句的一个示例,但它是一个硬编码到 php 文件中的导航。我需要使用一些类似的逻辑来代替使用 wordpress 菜单... 似乎有一个与问题相同的错字。 href属性的开头有2个"引号,会阻止href链接。【参考方案2】:

好的,我想我已经找到了一个解决方案——作为一个新手——已经奏效了!

希望有人可以指出我可以做出的任何更改/改进,但这里是:

要突出显示与您正在/查看的页面不同的页面的菜单链接,例如在我的场景中:我有一个存档事件页面,在该页面中我有一个链接,可将您带到一个页面列出了所有过去的事件,但在主导航中没有指向它的链接。

function nav_class($classes) 
    // Remove "current-menu-item" class
    $classes = array_diff($classes, array('current-menu-item'));

    // If this is the "past-events" page, highlight the event menu item
    if (in_array('menu-item-36', $classes) && is_page('past-events')) 
        $classes[] = "current-menu-item";
    
    return $classes;

add_filter('nav_menu_css_class', 'nav_class', 10, 2);

我希望这对其他人有所帮助。

【讨论】:

以上是关于突出显示单个页面的 wordpress 导航链接的主要内容,如果未能解决你的问题,请参考以下文章

在单个页面上突出显示当前Wordpress类别';wp#u list';

突出显示当前页面的导航菜单

wordpress 中突出显示的多个菜单项

CodeIgniter:如何“突出显示”用户当前所在页面的链接?

子菜单链接处于活动状态时突出显示 Wordpress 父菜单项

WP-突出显示导航项,用于自定义post类型存档和单个