it-swarm.asia

تخصيص قائمة محددة فقط باستخدام الخطاف "wp_nav_menu_items"؟

بفضل بعض المساعدة هنا ، تمكنت من إضافة مربع بحث مخصص إلى قائمتي الرئيسية ... عن طريق إضافة هذا إلى وظائف السمة الخاصة بي.

add_filter('wp_nav_menu_items','search_box_function');
  function search_box_function ($nav){
  return $nav."<li class='menu-header-search'><form action='http://example.com/' id='searchform' method='get'><input type='text' name='s' id='s' placeholder='Search'></form></li>";
}

ومع ذلك ، لقد أضفت الآن قائمة أخرى لوضعها في التذييل ، ولكن تتم إضافة مربع البحث إلى هذا أيضًا. كيف أضيف مربع البحث إلى القائمة الأساسية فقط؟

الكود الخاص بي لتسجيل القوائم هو:

register_nav_menus( array(
  'primary' => __( 'Primary Navigation', 'twentyten' ),
  'secondary'=>__('Secondary Menu', 'twentyten' ),

 ) );

.. و الكود لعرض القائمة الثانوية هو:

wp_nav_menu( array( 'container_class' => 'menu-header', 'theme_location' => 'secondary' ) ); 
37
cannyboy

لإضافة مربع البحث المخصص فقط إلى القائمة الرئيسية ، يمكنك تمرير المعلمة الثانية التي يوفرها عامل تصفية wp_nav_menu_items وتحقق مما إذا كان theme_location هو الموقع الأساسي

add_filter('wp_nav_menu_items','search_box_function', 10, 2);
function search_box_function( $nav, $args ) {
    if( $args->theme_location == 'primary' )
        return $nav."<li class='menu-header-search'><form action='http://example.com/' id='searchform' method='get'><input type='text' name='s' id='s' placeholder='Search'></form></li>";

    return $nav;
}
40
ampt

طريقة بديلة للقيام بذلك هي إضافة سبيكة القائمة إلى عامل التصفية wp_nav_menu_items.

على سبيل المثال ، لنفترض أن لديك قائمة باسم Header وتريد دائمًا أن تعرض هذه القائمة (سواء كانت متصلة بموقع سمة أم لا) مربع بحث. يمكنك القيام بذلك عن طريق إضافة سبيكة القائمة ، في هذه الحالة header ، إلى عامل التصفية.

سيكون المرشح الجديد كما يلي:

 add_filter ('wp_nav_menu_header_items' ، 'search_box_function') ؛ 

لاحظ الجزء header من المرشح الجديد. هذا يخبر وورد ما القائمة لإضافة وظيفة ل.

هذه مجرد طريقة مختلفة للتعامل مع مشكلتك الحالية.

7
Justin Kopepasah