在创建菜单时设置默认‘主题位置’

时间:2013-11-27 作者:0Neji

我正在尝试创建一个主题,当它被激活时,设置一个主导航,将主页添加到其中,然后在正确的位置启用它。

以下是我目前掌握的情况:

register_nav_menu(\'Primary\', \'Primary Navigation\');

$primary_nav_menu_id = wp_create_nav_menu(\'Primary\');

wp_update_nav_menu_item($primary_nav_menu_id, 0, array(
    \'menu-item-title\' =>  __(\'Home\'),
    \'menu-item-classes\' => \'home\',
    \'menu-item-url\' => home_url( \'/\' ), 
    \'menu-item-status\' => \'publish\'
));
上面创建了菜单,添加了到主页的链接,但我如何才能自动为该菜单分配“主导航”的主题位置?

这可能吗?

2 个回复
SO网友:Chittaranjan

您需要首先收集菜单位置,然后使用菜单id设置主菜单位置。

// Set the menu to primary menu location
$locations = get_theme_mod( \'nav_menu_locations\' );
$locations[\'primary\'] = $primary_nav_menu_id;
set_theme_mod ( \'nav_menu_locations\', $locations );
这里我假设“primary”是指“primary Navigation”的主题位置。

SO网友:Zeth

另一个答案是这方面的简短版本。然而,我做了一个函数,它做得更多。它是这样做的:

它获取位置(以便以后添加新菜单)

  • 它获取任何名为“移动菜单”的菜单,并获取其IDnav-mobile
    <?php
    add_action( \'init\', function() {
      // Variables
      $location_name = \'nav-mobile\'; // As it\'s named in register_nav_menus( ... )
      $menu_name = \'Mobile Menu\'; // The name of the menu in the WP backend
      $save_new_locations = false; // To only save, if it isn\'t set already
      $locations = get_theme_mod( \'nav_menu_locations\' ); // Get all nav_locations
    
      if( ! isset( $locations[ $location_name ] ) ){
        $menus = get_terms( \'nav_menu\' ); 
        $menus = array_combine( wp_list_pluck( $menus, \'term_id\' ), wp_list_pluck( $menus, \'name\' ) ); 
        // Above-written line matches id to menu name, like this:
        // [ 
        //   4129 => \'my-navigation\',
        //   4123 => \'my-other-navigation\',
        //   ...
        // ]
        // where 4129 and 4123 is the id of the menus 
    
        $mobile_menu_key = array_search( $menu_name, $menus ); // Finds ID
        if( !empty( $mobile_menu_key ) ){
          $locations[ $location_name ] = $mobile_menu_key;
          $save_new_locations = true;
        }
      }
    
      if( $save_new_locations ){
        set_theme_mod( \'nav_menu_locations\', $locations );
      }
    });
    

  • 结束

    相关推荐

    Wp-Content/Themes/文件夹中的index.php文件

    今晚,当我注意到一个索引时,我正在手动将我正在处理的主题上传到我的wordpress安装中。我的主题文件夹中的php文件。我打开了文件,其中只包含以下三行代码:<?php //silence is golden ?> 这让我很担心,起初我想可能是我不小心把文件上传到了主题目录,但文件的内容并不是我想放的任何东西。所以我的意思是,应该有一个索引。我的wp内容/主题/目录中的php文件?还是有人把它放在那里了。或现在我想起来了,可能是我无意中上传了这个文件,然后一个“黑