0

Ajax経由でWordpressメニューを動的にロードすることは可能ですか?

最善の解決策は、wp_nav_menu() を使用することです。

4

2 に答える 2

1

テーマで JavaScript を使用してメニューを動的に初期化する必要がある場合、初期化コードのパターンは次のようになります。

jQuery(function($) {
    function initMainNavigation( container ) {
        /* set up container... */
    }
    initMainNavigation( $( '.main-navigation' ) );

    $( document ).on( 'customize-preview-menu-refreshed', function( e, params ) {
        if ( 'primary' === params.wpNavMenuArgs.theme_location ) {
            initMainNavigation( params.newContainer );
            /* optionally sync a previous menu state from params.oldContainer... */
        }
    });
});

イベント ハンドラーに渡されるパラメーターは、次のプロパティで構成されます。

  • newContainer: Ajax から取得した新しいメニュー コンテナー要素を含む jQuery オブジェクト。これは、初期化するために操作するものです。

  • oldContainer:置き換えられたメニュー コンテナーの要素を保持する以前の jQuery オブジェクト。これは、(Twenty Fifteen のように) どのサブメニューが展開されているかなど、古いメニューに新しいメニューで保持する必要がある状態がある場合に役立ちます。

  • wpNavMenuArgs:wp_nav_menu() template_location など、テンプレートで渡される引数の配列。

  • instanceNumber:wp_nav_menu()コールが更新されるインデックス。

于 2016-12-31T06:30:46.207 に答える
0

テーマで ajax リクエストを処理するカスタム ファイルを作成し、HTML 出力を返し、wp_nav_menu();そのファイルを呼び出すことができます。

wp-content/themes/your-theme/ajax.php:

<?php wp_nav_menu(); ?>

シンプルですが、効率的です。ただし、セキュリティには注意してください。入力を検証し、入力しないでくださいeval()

于 2012-07-16T09:36:58.360 に答える