web-dev-qa-db-fra.com

Ajouter un deuxième menu à un thème qui ne prend en charge qu'un seul menu

Je ne suis pas un programmeur, mais je peux généralement travailler avec ce type de choses lorsque je lis le code.

J'ai un thème appelé Infinity qui ne prend en charge qu'un seul menu. Je sais comment faire CSS, etc., mais je ne trouve pas comment je voudrais un deuxième menu. En fait, il ne doit pas s'agir d'un menu personnalisé, mais seulement des pages. Quelqu'un peut-il me dire comment faire cela? Voici un extrait du code qui apparaît pour charger le menu:

<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>

Ce code est dans le header.php. Je recherche primaire-menu.php primaire et trouve ceci dedans:

<?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>

De l'aide?

EDIT: Mise à jour. Page de fonctions collée ci-dessous

<?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 );
}
?>

Code de menu ci-dessous

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

Ajouter une position de menu personnalisée à votre thème wordpress est assez simple.
Cela se fait généralement de la manière suivante:

1. Annoncer les positions de menu désirées (dans 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. Intégrez-les à la place souhaitée dans votre thème:

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

.

Dans votre cas & puisque vous avez déjà une position de menu personnalisée, vous devez d’abord trouver dans votre fichier functions.php où le menu actuel a été défini et en ajouter une autre comme indiqué dans l’exemple ci-dessus.

J'espère que ça aide, sagive.

MODIFIÉ (REMPLACEZ LE CODE EXISTANT DANS VOTRE CODE DE MENU):

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