ฉัน Twitter Bootstrap และจำเป็นต้องเพิ่ม data-toggle = "modal" ไปยังแท็กของลิงก์เมนู เมื่อค้นหาการอ้างอิงผลลัพธ์ส่วนใหญ่ทั้งหมดกำลังเดินหาเมนูดรอปดาวน์ Twitter Bootstrap อย่างไรก็ตามเมนูนี้ไม่มีเมนูแบบเลื่อนลงและฉันเพียงแค่ต้องเพิ่มแอททริบิวต์เฉพาะ
ถัดไปฉันพบสิ่งนี้: เพิ่มแอตทริบิวต์ที่กำหนดเองให้กับรายการเมนูโดยไม่ต้องใช้ปลั๊กอินซึ่งมีประโยชน์อย่างมากตามที่ปรากฏใน WordPress 3.6+ เราไม่ต้องเดินซับซ้อนอีกต่อไปและสามารถใช้สิ่งนี้แทน: http://codex.wordpress.org/Plugin_API / Filter_Reference / nav_menu_link_attributes
อย่างไรก็ตามในขณะนี้การอ้างอิง API นั้นค่อนข้างเปลือยเปล่าและไม่มีตัวอย่างและเนื่องจากเป็นเรื่องใหม่ดังนั้นจึงมีการอ้างอิงน้อยมากใน Google
ฉันลองสิ่งนี้ก่อน:
add_filter( 'nav_menu_link_attributes', 'mywp_contact_menu_atts', 10, 3 );
function pb_contact_menu_atts( $atts, $item, $args )
{
// inspect $item, then …
$atts['data-toggle'] = 'modal';
return $atts;
}
และใช้งานได้ตามที่คาดหวังจะเพิ่มแอททริบิวให้กับแท็กทั้งหมดในเมนู ดังนั้นฉันจึงพยายามหาวิธีกำหนดเป้าหมายหนึ่งรายการเมนูด้วย # menu-item-7857 a หรืออย่างนั้น
ไม่มีใครทราบว่าจะหาตัวอย่างของการกำหนดเป้าหมายรายการเมนูหรือสามารถกำหนดวิธีการอ้างอิงข้อมูลที่อยู่ในการอ้างอิง API ที่เชื่อมโยงข้างต้นได้หรือไม่
เมื่อต้องการทราบว่าฉันพบตัวอย่างหนึ่งต่อไปนี้ แต่มีเป้าหมายเฉพาะรายการที่มีลูกที่ไม่ได้ช่วย แต่อาจไปในทิศทางที่ถูกต้อง:
add_filter('nav_menu_link_attributes', function($atts, $item, $args) {
if ( $args->has_children )
{
$atts['data-toggle'] = 'dropdown';
$atts['class'] = 'dropdown-toggle';
}
return $atts;
}, 10, 3);
อัปเดต - คำตอบเดียวด้านล่างดูเหมือนจะเกี่ยวกับบางอย่าง แต่จากนั้นไม่สามารถระบุวิธีค้นหาตัวเลขเพื่อกำหนดเป้าหมายไปยังลิงก์เฉพาะของฉันและที่ / วิธีเพิ่มเงื่อนไขในตัวอย่างการทำงาน เพิ่มความคิดเห็น แต่ไม่ได้ยินกลับ ตั้งแต่ประมาณ 18 วันคิดว่าฉันจะดูว่าเงินช่วยเหลือจะช่วยได้หรือไม่
เมื่อฉันดูรหัสสำหรับลิงก์ที่ฉันต้องการกำหนดเป้าหมาย:
<li id="menu-item-7858" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-7858"><a href="#" data-toggle="modal">Chat</a></li>
ฉันเห็นหมายเลข 7858 ดังนั้นคิดว่านั่นอาจเป็นหมายเลขที่ฉันควรกำหนดเป้าหมาย
แต่เมื่อฉันลองเช่น:
add_filter( 'nav_menu_link_attributes', 'my_chat_menu_atts', 10, 3 );
function my_chat_menu_atts( $atts, $item, $args ) {
if ( 7857 == $item['ID'] ) {
// inspect $item, then …
$atts['onclick'] = 'SnapEngage.startLink();';
return $atts;
}
}
อย่างไรก็ตามการเพิ่มว่าถ้าคำสั่งผู้วิจารณ์คนเดียวแนะนำว่าฉันได้รับข้อผิดพลาดต่อไปนี้:
Fatal error: Cannot use object of type WP_Post as array
ฉันคาดว่าจะต้องใช้รหัสมากขึ้น แต่ก็หายไป เพื่อเป็นการเตือนความจำหากไม่มีคำสั่ง if จะทำงานได้ แต่มันจะกำหนดเป้าหมายไปยังลิงก์ทั้งหมดแทนที่จะเป็นลิงค์เดียวที่ฉันต้องการกำหนดเป้าหมาย