web-dev-qa-db-ja.com

1メニューのみをサポートするテーマにセカンドメニューを追加する

私はプログラマーではありませんが、コードを読んだときには通常このようなことをすることができます。

1メニューしかサポートしていないInfinityというテーマがあります。私はCSSなどの使い方を知っていますが、2番目のメニューをどのようにしたらよいのかわかりません。実際、それはカスタムメニューではなくページだけである必要はありません。誰もがこれを行う方法を教えてもらえますか?以下はコードの抜粋で、メニューをロードするように見えます。

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

あなたのワードプレスのテーマにカスタムメニューの位置を追加することはかなり簡単です。
これは通常次のように行われます。

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