Saya Twitter Bootstrap dan perlu menambahkan atribut data-toggle = "modal" ke tag tautan menu. Setelah mencari sebagian besar semua referensi hasil melakukan jalan-jalan untuk menu dropdown Bootstrap Twitter namun menu ini tidak memiliki dropdown dan saya hanya perlu menambahkan atribut tertentu.
Berikutnya saya menemukan ini: Tambahkan atribut khusus ke item menu tanpa plugin yang sangat membantu seperti yang muncul di WordPress 3.6+ kita tidak lagi harus melakukan walker kompleks yang panjang dan sebaliknya dapat menggunakan ini: http://codex.wordpress.org/Plugin_API / Filter_Reference / nav_menu_link_attributes
Namun pada saat ini berjalan bahwa referensi API cukup telanjang dan tidak memberikan contoh dan karena sangat baru ada sangat sedikit referensi untuk itu di Google.
Saya mencoba ini dulu:
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;
}
dan itu tidak bekerja namun seperti yang diharapkan menambahkan atribut ke semua tag di menu. Jadi saya mencoba mencari cara untuk menargetkan satu item menu dengan # menu-item-7857 atau sejenisnya.
Adakah yang tahu di mana menemukan contoh penargetan item menu atau dapat menentukan bagaimana mendasarkan pada informasi yang ada di referensi API tertaut di atas?
Untuk diketahui, saya memang menemukan satu contoh berikut tetapi hanya menargetkan item yang memiliki anak yang tidak membantu tetapi mungkin berada di arah yang benar:
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);
UPDATE - Satu-satunya jawaban di bawah ini sepertinya ada pada sesuatu tetapi dari itu tidak dapat menentukan bagaimana sebenarnya menemukan nomor untuk menargetkan tautan spesifik saya dan di mana / bagaimana menambahkan yang bersyarat dalam contoh kerja. Menambahkan komentar tetapi tidak mendapat balasan. Sejak sekitar 18 hari saya pikir saya akan melihat apakah hadiah akan membantu.
Ketika saya melihat kode untuk tautan yang ingin saya targetkan:
<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>
Saya melihat nomor 7858 jadi berpikir mungkin itu nomor yang harus saya targetkan.
Tapi ketika saya coba misalnya:
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;
}
}
Namun menambahkan bahwa jika pernyataan satu komentator menyarankan saya mendapatkan kesalahan berikut:
Fatal error: Cannot use object of type WP_Post as array
Saya mengasumsikan lebih banyak kode diperlukan tetapi hilang. Sebagai pengingat tanpa pernyataan if berfungsi, namun ia menargetkan semua tautan daripada satu tautan yang ingin saya targetkan.
Jawaban:
Khusus mengedit kode yang Anda berikan dalam pertanyaan asli:
sumber
array_key_exists()
$item
Argumen kedua , yang disediakan untuk fungsi filter Anda, berisi objek item menu. Jika dicampakkan akan terlihat seperti ini:Untuk menargetkan item menu tertentu, Anda perlu merumuskan kondisi Anda dan memeriksanya dengan data yang tersedia di objek, misalnya
if ( 2220 == $item['ID'] )
sumber
$item
objek, bukan array; ubah$item['ID']
ke$item->ID
.Mengapa Anda tidak mendekati masalah ini dari arah yang berbeda? Alih-alih mencoba menargetkan item menu dengan id == ?? yang dapat berubah di beberapa titik (item menu, bukan id), gunakan area WP Admin untuk menambahkan kelas kustom ke item menu yang ingin Anda targetkan. Kemudian gunakan kelas itu di Javascript Anda untuk memicu informasi yang Anda butuhkan:
Javascript saya tidak dijamin. Jika Anda tidak menggunakan jQuery, Anda bisa mencoba ini .
sumber
Saya ingin menambahkan data-surat ke menu khusus yang saya buat di WordPress.
Langkah-langkah yang saya pilih adalah:
Ini kode saya.
Semoga ini bisa membantu Anda.
sumber