Nav menu custom html:

时间:2019-04-25 作者:schrodigerscatcuriosity

我一直在这个网站上寻找答案,但他们缺乏关于what files to edit and/or the path to them, 以及您在何处或如何激活并可以看到更改。

例如,这个问题:

Edit html for menu items in default frontend menu

或者这个:

https://wordpress.stackexchange.com/a/64034/166781

我想添加我的custom html items in the nav menu, 我想我必须将我的代码添加到functions.php, 但我看不到任何变化。

例如,如果我想向导航菜单添加一个项目,如下面的代码(取自我发布的一个问题):

add_filter(\'wp_nav_menu_items\', \'wps_add_login_logout_link\', 10, 2);
function wps_add_login_logout_link($items, $args) {
    $login = __(\'Sign in\');
    $logout = __(\'Sign out\');


    $menu_id = \'15\';
    $menu_id2 = \'16\'; 

    if ( ! is_user_logged_in() )
        $link = \'<a href="\' . site_url(\'log-in-log-out\')  . \'">\' . $login . \'</a>\';
    else
        $link = \'<a href="\' . wp_logout_url(\'log-in-log-out\') . \'">\' . $logout . \'</a>\';

    if ( $args->menu == $menu_id )
        $items .= \'<li>\'. $link .\'</li>\';
    elseif ( $args->menu == $menu_id2 )
        $items .= \'<li>\'. $link .\'</li>\';

    return $items;
}
我应该添加哪个文件?

添加后,我在哪里可以看到更改的效果?

感谢您的耐心等待。

1 个回复
最合适的回答,由SO网友:WebElaine 整理而成

WordPress主题可以以多种不同的方式设置,这既是一种祝福(你可以随心所欲地做任何事情),也是一种诅咒(你不一定需要查看一个文件来进行特定的更改)。

你在正确的轨道上,关注主题。您首先需要做的是创建一个子主题。这样,当您更新主题时,您的编辑不会被覆盖。

一旦有了子主题,您就需要查看父主题,以了解它们是如何调用要修改的特定导航菜单的。许多主题使用多个菜单,因此您需要隔离该菜单。然后,看看它是怎么叫的。您将看到如下内容:

<?php wp_nav_menu(
    // everything inside this array will vary, depending on your theme
    array(
        \'menu\' => \'topnav\'
        \'walker\' => new custom_walker()
    )
); ?>
你想知道的是数组中是否有“步行者”。(上面有。)如果有,您将面临更大的复杂性,因为您的主题(现在是“父”主题)已经在使用一个定制的walker,该walker在默认情况下构建的HTML与WP Core不同。然后需要搜索父主题的文件。通常walker班在里面functions.php 但并非总是如此。找到该类,然后将其复制到子主题functions.php 然后更改类的名称。

或者,如果您想要影响的导航菜单根本不使用助行器,请进入您孩子的主题functions.php 创建一个助行器。

无论是哪种情况,您现在都需要研究创建助行器需要什么。在线查找示例,开始时非常简单,然后遇到问题时,可以在这里用新问题检查。

最后一点要注意的是,如果您正在执行类似顶部导航的操作,并且有一组静态页面要包含在其中,以及自定义HTML,那么不使用WP nav菜单可能会简单得多。您可以使用其他功能,如wp_list_pages() 根据您的需要和维护代码的意愿,列出所有页面,甚至硬代码。

相关推荐

允许在自定义Metabox区域中使用HTML

我知道有很多问题与我的问题有关,但我真的无法得到解决。我的问题很简单,如何允许post上自定义metabox中的textarea中的html。到目前为止,我已经创建了添加元框的代码。add_action( \'add_meta_boxes_post\', function ( $post ) { if ( $post->_wp_page_template === \'page-templates/skyscraper-post.php\' ) { add_me