Intereting Posts
Проблемы с перемещением моего сайта WordPress на другой домен / сервер Добавление меню Nav для публикации admin Шаги, которые нужно предпринять, чтобы скрыть факт, что сайт использует WordPress? Есть ли Галерея изображений, которая загрузит все мои опубликованные изображения, например, сетку изображений Twitter? Невозможно получить доступ после обновления Каков правильный ход с SSL для пользовательского сайта? Является ли автоматическое распознавание сообщений функцией WordPress? Как отключить его? Исправление пользовательской разбивки на страницы без изменения настроек для каждой страницы на странице wp-content / db.php: где этот файл? Meta_query с или без значения Сделать почтовый пароль, необходимый для публикации Как сделать admin CRUD & Pagination Невозможно установить отображаемое изображение Массив последних wp_titles Сломанные URL-адреса с http-сайтом и https wp-admin

Как заменить URL-адрес страницы для прокрутки страницы в ссылке меню?

Я разрабатываю сайт на одной странице в WordPress, который содержит несколько разделов. Эти разделы являются страницами в WordPress.

В моем index.php я просматриваю все страницы в WordPress и добавляю их в индексный файл – переднюю страницу с настраиваемым циклом.

Прокрутка по всем страницам

 <?php $args = array('post_type' => 'page', 'orderby' => 'menu_order', 'posts_per_page' => -1); $loop = new WP_Query($args); ?> <?php if ($loop) : while ($loop->have_posts()) : $loop->the_post(); ?> <?php $slides = get_field('flexslider'); ?> <?php if ($slides) { get_template_part( 'templates/slideshow' ); } else { get_template_part( 'templates/parallax' ); } ?> <?php endwhile; ?> <?php endif; ?> 

МЕНЮ

Поскольку я разрабатываю макет одной страницы, я должен изменить основную навигацию по WordPress, чтобы вывести ссылки на правое меню, специфичные для этого типа макета. Таким образом, нормальный вывод (я удалил атрибуты id и class чтобы сосредоточиться на правильной вещи) должен быть заменен на хэштег и пул страницы.

Разметка основного меню:

 <li id="" class=""><a href="http://prachtelectronica.nl/wordpress/?page_id=10" class="menu-link main-menu-link">Lightning</a></li> 

Измененная ссылка на меню (что я хочу):

 <li id="" class=""><a href="#lightning" class="menu-link main-menu-link">Lightning</a></li> 

Я использую следующую функцию WordPress для создания меню:

 <?php wp_nav_menu( array( 'theme_location' => 'primary-menu', 'menu' => 'primary-menu', 'container' => 'nav', 'container_id' => 'primary-navwrapper', 'menu_id' => 'listnav', )); ?> 

Мне хотелось бы, чтобы положение каждого раздела (страницы) определялось по порядку меню, установленному в « Appearance > Menu , поэтому при создании нового раздела (страницы) у клиента есть всего три вещи. (1) Создайте страницу, (2) добавьте страницу в меню (3) и закажите ее внутри структуры меню.

Я уже использую свойство menu_order внутри цикла моей страницы (как вы можете видеть выше), чтобы отображать страницы внутри файла index.php . Порядок меню используется для размещения разделов (страниц) в правильном порядке.

Один дополнительный параметр для страниц заключается в том, что пользователь может добавить пользовательский шаблон на страницу, выбрав шаблонные ads внутри редактора WP. Страницы, которые используют этот шаблон с именем «ads», должны отображаться в index.php как раздел, но не отображаются в качестве элемента меню в списке пункта меню, потому что эти разделы не относятся к основному контенту.

Я надеюсь, что есть решение по моему желанию. Если у вас есть какие-либо вопросы, пожалуйста, сообщите мне об этом в комментариях ниже. На данный момент, спасибо заранее.

Solutions Collecting From Web of "Как заменить URL-адрес страницы для прокрутки страницы в ссылке меню?"

Чтобы иметь возможность изменить ссылку, вы можете подключиться к фильтру nav_menu_link_attributes .

 if ( ! function_exists( 'wpse_209457_nav_menu_link_attributes' ) ) { function wpse_209457_nav_menu_link_attributes( $atts, $item, $args ) { if ( 'primary-menu' == $args->theme_location ) { // Get the target posts slug $object_data = get_post( $item->object_id ); $atts['href'] = '#'.$object_data->post_name; return $atts; } } } add_filter( 'nav_menu_link_attributes', 'wpse_209457_nav_menu_link_attributes', 10, 3 ); 

Чтобы определенные элементы не отображались в меню в зависимости от используемого им шаблона, лучше было бы подойти в отдельном вопросе, но я все равно отправлю решение. Вам нужно использовать другой крючок здесь:

 if ( ! function_exists( 'wpse_209457_wp_nav_menu_objects' ) ) { function wpse_209457_wp_nav_menu_objects( $sorted_menu_items, $args ) { foreach ( $sorted_menu_items as $key => $item ) { $template = get_post_meta( $item->object_id, '_wp_page_template', true ); if ( "templates/ads.php" == $template ) { unset( $sorted_menu_items[$key] ); } } return $sorted_menu_items; } } add_filter ( 'wp_nav_menu_objects', 'wpse_209457_wp_nav_menu_objects', 10, 2 ); 

Я не запускал этот код, надеюсь, это сработает для вас.