如何在子主题函数.php中创建并填充几个链接的菜单?

时间:2016-04-08 作者:Alexander Farber

官方的“二十一三”主题只定义了/wp-content/themes/twentythirteen/header.php 文件:

<?php wp_nav_menu( array( 
    \'theme_location\' => \'primary\', 
    \'menu_class\' => \'nav-menu\', 
    \'menu_id\' => \'primary-menu\' ) ); ?>
在我网站的子主题中,我试图以编程方式填充菜单/wp-content/themes/twentythirteen-child/functions.php 文件,因为:

它使重新安装网站变得更容易(手动步骤更少)/player-ID 链接

function my_register_menus() {
    register_nav_menus( array(
            \'primary-menu\' => __( \'Primary Menu\' ),
         )
    );
}

add_action( \'init\', \'my_register_menus\' );
但这并没有改变网站的外观。

我还(重新)阅读了Navigation Menus 在主题手册(包括API链接)中,仍然不了解如何将一系列链接传递到菜单。

我可能应该打电话wp_nav_menu() 具有一些对象数组,但找不到此类对象的描述。

最后,我想为菜单添加4个链接:

“玩游戏”//android

  • “iOS”-/ios/player-ID (将需要ID 从…起wp_get_current_user())
  • 1 个回复
    最合适的回答,由SO网友:dg4220 整理而成

    给你。既然你已经有了你所需要的菜单idis:

    $menu_item_defaults = array(
                        \'menu-item-db-id\' => $menu_item_db_id,
                        \'menu-item-object-id\' => 0,
                        \'menu-item-object\' => \'\',
                        \'menu-item-parent-id\' => 0,
                        \'menu-item-position\' => 1,
                        \'menu-item-title\' => \'Play Game\',
                        \'menu-item-url\' => \'\',//not sure is a blank is ok here
                        \'menu-item-description\' => \'\',
                        \'menu-item-attr-title\' => \'\',
                        \'menu-item-target\' => \'\',
                        \'menu-item-classes\' => \'\',
                        \'menu-item-xfn\' => \'\',
                        \'menu-item-status\' => \'publish\',
                    );
    
    wp_update_nav_menu_item(\'primary-menu\', 0, $menu_item_defaults);
    
    但是,如果您试图加快具有已知内容的站点的部署,请尝试这种方式。您可以动态创建页面并将其添加到菜单中。

    在我的例子中,我首先创建一个自定义菜单,但您可以使用它来获取任何菜单的id。

    $menu_exists = wp_get_nav_menu_object( \'Public Menu\' );
    if ( $menu_exists === false ) {
        $var_pub_menu_id = wp_create_nav_menu( \'Public Menu\' );
    } else {
        $var_pub_menu_id = $menu_exists->term_id;
    }
    
    然后我创建页面并将其添加到菜单:

    $default_fgpsn_page = array(
        \'post_title\'    => $fgpsn_default_pages[$j],//any page title. I\'m working in a loop here
        \'post_status\'   => \'publish\',
        \'post_type\'   => \'page\',
        \'post_content\'   => \'Property Browse Short Code\',//this can even be a shortcode
        \'post_author\'   => 1
        );
    
       $default_fgpsn_page_id = wp_insert_post( $default_fgpsn_page );
    
                $menu_item_defaults = array(
                    //\'menu-item-db-id\' => $menu_item_db_id,
                    //\'menu-item-object-id\' => 0,
                    //\'menu-item-object\' => \'\',
                    \'menu-item-parent-id\' => 0,
                    \'menu-item-position\' => 1,
                    \'menu-item-title\' => $fgpsn_default_pages[$j],
                    \'menu-item-url\' => get_page_link( $default_fgpsn_page_id ),
                    \'menu-item-description\' => \'public properties listing\',
                    \'menu-item-attr-title\' => \'\',
                    \'menu-item-target\' => \'\',
                    \'menu-item-classes\' => \'\',
                    \'menu-item-xfn\' => \'\',
                    \'menu-item-status\' => \'publish\',
                );
    
                wp_update_nav_menu_item($var_pub_menu_id, 0, $menu_item_defaults);
    

    相关推荐

    用标准的干净文件替换NAV-menus.php文件?

    我是一个自学成才的wordpress网站设计师,请原谅我的无知。我为一个客户开发的几个网站最近被一个印尼黑客组织破坏了(很有趣!)。客户端没有更新wordpress安装和其他一些危及安全的事情。遗憾的是,没有网站的清理备份。网络主机给了我一个包含恶意软件扫描结果的文本文件。看起来很多受影响的文件都是导航菜单。网站的php文件。文本文件中显示的扫描结果示例如下:“[主目录]/[网站文件夹名称]/wp includes/nav-menu.php:SL-php-INJECTOR-1-ejw.UNOFFICIAL