对具有子项的菜单项使用筛选器

时间:2020-01-21 作者:OctaviaLo

我有一个嵌套的下拉列表。在有子元素的元素上,我想在链接文本旁边添加一个V形。当前HTML如下所示:

<ul class="primary-menu">
    <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has- 
    children menu-item-59">
        <a href="#">Europe</a>
        <ul class="sub-menu"></ul>
    </li>
</ul>
我想使用add\\u过滤器挂钩将此标记转换为:

<ul class="primary-menu">
    <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has- 
    children menu-item-59">
        <div>
          <a href="#">Europe</a>
          <img src="chevron.svg">
        </div>
        <ul class="sub-menu"></ul>
    </li>
</ul>
我希望找到一个过滤器,可以返回一系列菜单项。如果菜单项具有“menu item has children”类,我想更改该项中的HTML。

1 个回复
SO网友:Tim Elsass

确实有一个过滤器,walker_nav_menu_start_el 会帮你处理的!

以该代码为例:

function wpse356896_filter_primary_nav_menu_dropdown( $item_output, $item, $depth, $args ) {

    // Only for our primary menu location.
    if ( empty( $args->theme_location ) || \'primary-menu\' !== $args->theme_location ) {
        return $item_output;
    }

    // Add the dropdown for items that have children.
    if ( ! empty( $item->classes ) && in_array( \'menu-item-has-children\', $item->classes ) ) {
        return $item_output . \'<span class="dropdown"><img src="chevron.svg"></span>\';
    }

    return $item_output;
}

add_filter( \'walker_nav_menu_start_el\', \'wpse356896_filter_primary_nav_menu_dropdown\', 10, 4 );

相关推荐

Get id from metabox dropdown

Im使用Reusable Metaboxes (旧但仍然有效)我创建了一个元框,允许用户从自定义帖子类型列表中选择帖子。现在效果很好,我可以看到列表中的所有帖子,我选择一个并保存。调用\\u meta()时看到的数据显示,该字段确实保存了我调用的帖子的id:第二集:a:1:{i:0;s:2:“18”}但我不知道如何获取id(在本例中为18-这需要根据所选的帖子进行动态),并使用它显示该帖子中的内容:标题、特色图片、元框内容。尝试了“最简单的一个”,但没有成功(因此我还需要帮助了解如何显示该帖子中的meta