Я 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;
}
и это работает, однако, как и ожидалось, добавляет атрибут ко всем тегам a в меню. Поэтому я пытаюсь выяснить, как настроить таргетинг на один элемент меню с помощью # 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 он работает, однако он нацелен на все ссылки, а не на одну ссылку, на которую я хочу ориентироваться.