Навигация WordPress перед конкретными элементамиPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Навигация WordPress перед конкретными элементами

Сообщение Anonymous »

Я использую ACF и фильтр wp_nav_menu_objects для добавления определенных классов к элементам. Например, кнопки получают класс .btn, элементы, которым нужен значок, прежде чем они получат класс значка и т. д. Я нашел простой способ добавления текста и элементов в < a>, но я не могу понять, как добавить ПЕРЕД фактическим тегом внутри тега . Я знаю, что есть простая функция

wp_nav_menu( array ( 'before' => 'I am adding before the ' ) );


Однако у меня это не работает, поскольку мне нужен только перед конкретными элементами, в зависимости от поля ACF. Я также знаю, что потенциально могу использовать функцию Wordpress Walker, но мне бы хотелось этого избежать, поскольку я пытаюсь сделать это довольно мелко.

Вот мой фильтр для wp_nav_menu_objects

function add_menu_item_type( $items, $args ) {
$parents = wp_list_pluck( $items, 'menu_item_parent' );
$menu = wp_get_nav_menu_object( $args->menu );

foreach ( $items as &$item ) {
$type = get_field( 'menu_item_type', $item );
$icon = get_field( 'menu_item_icon', $item );
$show_on_mobile = get_field( 'show_on_mobile', $item );
$mobile_nav = get_field( 'include_in_mobile_nav', $menu );

if ( 'logo' === $type ) {
array_push( $item->classes, 'logo' );
}

if ( 'button' === $type ) {
array_push( $item->classes, 'btn d-none d-lg-flex' );
} elseif ( ! $show_on_mobile && ( 'primary_left_nav' === $args->theme_location || 'primary_right_nav' === $args->theme_location ) ) {
array_push( $item->classes, 'd-none d-lg-block' );
}

if ( $mobile_nav || 'primary_mobile_nav' === $args->theme_location ) {
array_push( $item->classes, 'col-24' );
}

// If Dropdown add class.
if ( 'dropdown' === $type ) {
$item->title .= ' ';
}

// If Dropdown add class.
if ( 'icon' === $type && ! empty( $icon ) ) {
// HERE IS WHERE I WOULD LIKE TO DO SOMETHING LIKE $item->before
$item->title = ' ' . $item->title;
}

// If Dropdown and has children.
if ( in_array( $item->ID, $parents, true ) && 'has-children' === $item->classes[0] && 'dropdown' === $type ) {
array_push( $item->classes, 'menu-item-dropdown' );
}
}

return $items;
}

add_filter( 'wp_nav_menu_objects', 'add_menu_item_type', 10, 2 );


Подробнее здесь: https://stackoverflow.com/questions/588 ... ific-items
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»