为单个页面突出显示 wordpress 导航 link

highlight a wordpress nav link for a single page

我有一个存档事件页面,该页面 link 是一个页面,其中列出了过去创建的所有事件,并且只能通过存档事件页面访问。

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

例如,下面的代码片段以硬编码的导航 link 为目标,以在查看其他页面时突出显示事件 link,但是我的菜单不是硬编码的:

<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 页面中提供类似的替代编码方式。

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

我该怎么做?

我能看出不对劲。您没有将 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>

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

希望有人能指出任何我能做的 changes/improvements,但这里是:

要突出显示与您 on/viewing 不同的页面的菜单 link,例如在我的场景中:我有一个存档事件页面,在该页面中我有一个 link 会将您带到一个页面,该页面列出了所有过去发生的事件,但主导航中没有 link。

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);

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