it-roy-ru.com

Добавить второе меню в тему, которая поддерживает только 1 меню

Я не программист, но обычно я могу работать с такими вещами, когда читаю код.

У меня есть тема под названием Infinity, которая поддерживает только 1 меню. Я знаю, как сделать CSS и т.д., Но я не могу найти, как бы я второе меню. На самом деле это не должно быть пользовательское меню, а только страницы. Может кто-нибудь сказать мне, как это сделать? Ниже приведен фрагмент кода, который появляется для загрузки меню:

<div class="container_main">
<div class="container_12_head">
<?php get_template_part( 'custom', 'header' ); ?>

<div class="clear"></div>
</div>
  <div class="container_head_menu_wrap">
  <div class="container_12_head">
  <?php get_template_part( 'primary', 'menu' ); ?>
  <div class="clear"></div>
  </div>
</div>

Этот код находится в header.php. Я ищу основной primary-menu.php и нашел это в нем:

<?php
/** Primary Menu Callback */
function infinity_primary_menu_cb() {
    wp_page_menu();      
}
?>
<div class="grid_8 alpha">
  <div class="menu1">
    <div class="menu1-data">
      <?php
      if ( has_nav_menu( 'infinity-primary-menu' ) ):

        $args = array(

            'container' => 'div', 
            'container_class' => 'primary-container', 
            'theme_location' => 'infinity-primary-menu',
            'menu_class' => 'sf-menu1',
            'depth' => 0,
            'fallback_cb' => 'infinity_primary_menu_cb'

        );

        wp_nav_menu( $args );

      else:

        infinity_primary_menu_cb(); 

      endif;
      ?>
      <div class="clear"></div>
    </div>
  </div>  <!-- end .menu1 --> 
</div>

Любая помощь?

Правка: Обновление. Страница функций, вставленная ниже

<?php
/** Load the Core Files */
require_once( trailingslashit( get_template_directory() ) . 'lib/init.php' );
new Infinity();

/** Do theme setup on the 'after_setup_theme' hook. */
add_action( 'after_setup_theme', 'infinity_theme_setup' );

/** Theme setup function. */
function infinity_theme_setup() {

    /** Add theme support for core framework features. */
    add_theme_support( 'infinity-core-menus', array( 'infinity-primary-menu' ) );
    add_theme_support( 'infinity-core-sidebars', array( 'infinity-primary-sidebar' ) );
    add_theme_support( 'infinity-core-featured-image' );
    add_theme_support( 'infinity-core-custom-header' );

    /** Add theme support for WordPress features. */
    add_theme_support( 'automatic-feed-links' );
    add_theme_support( 'custom-background', array( 'default-color' => 'fafafa' ) );

    /** Set content width. */
    infinity_set_content_width( 600 );

    /** Add custom image sizes. */
    add_action( 'init', 'infinity_add_image_sizes' );   

}

/** Adds custom image sizes */
function infinity_add_image_sizes() {
    add_image_size( 'featured', 200, 200, true );
}
?>

Код меню ниже

function infinity_register_menus() {

    /** Get theme-supported menus. */
    $menus = get_theme_support( 'infinity-core-menus' );

    /** If there is no array of menus IDs, return. */
    if ( !is_array( $menus[0] ) ) {
        return;
    }

    /* Register the 'primary' menu. */
    if ( in_array( 'infinity-primary-menu', $menus[0] ) ) {
        register_nav_menu( 'infinity-primary-menu', __( 'Infinity Primary Menu', 'infinity' ) );
    }
1
Mucker

Добавить пользовательскую позицию меню в вашу тему WordPress довольно просто.
Обычно это делается так:

1. Объявление нужных позиций меню (в function.php):

add_action( 'init', 'register_my_menus' );

function register_my_menus() {
    register_nav_menus(
        array(
            'first-menu' => __( 'First Menu' ),
            'second-menu' => __( 'Second Menu' ),
            'third-menu' => __( 'Third Menu' )
        )
    );
}

,.

2. Встраиваем их в нужное место в вашей теме:

<?php wp_nav_menu( array( 'theme_location' => 'first-menu' ) ); ?>

,.

В вашем случае & поскольку у вас уже есть одна пользовательская позиция меню, вам сначала нужно найти в файле functions.php, где было определено текущее меню, и добавить другую, как показано в примере выше.

Надеюсь, это поможет, прости.

РЕДАКТИРОВАНИЕ (ЗАМЕНА СУЩЕСТВУЮЩЕГО КОДА В КОДЕВОЕ МЕНЮ):

function infinity_register_menus() {

    /** Get theme-supported menus. */
    $menus = get_theme_support( 'infinity-core-menus' );

    /** If there is no array of menus IDs, return. */
    if ( !is_array( $menus[0] ) ) {
        return;
    }

    /* Register the 'primary' menu. */
    if ( in_array( 'infinity-primary-menu', $menus[0] ) ) {
        register_nav_menu( 
            array(
                'infinity-primary-menu' => __( 'Infinity Primary Menu', 'infinity' ),
                'secondary-menu' => __( 'Secondary Primary Menu', 'infinity' )
            )
        );
    }
}
3
Sagive SEO