Как вывести ссылки и заголовки соседних страниц WP?
У меня есть шаблонная страница, по этой шаблонной странице сделал много страниц одного уровня(у них одна общая родительская страница), и все ссылки и названия страниц должны выводиться на каждой странице (т.е. я вставил один блок в шаблон и он сейчас на каждой странице), и в WP я их могу еще добавить. На страницу мне нужно вывести их заголовки и ссылки (в ручную не получится писать, так как их может стать меньше или больше и постоянно заходить в код и исправлять, не подойдет), и если я захожу на одну из этих страниц, то эта страница должна убираться из блока. Искал в интернете как это можно сделать, но ничего не нашел про соседние страницы:( буду рад любой помощи. Дальше следует тот самый блок со страницами.
<div class="service__directions__content">
<a href="/" class="service__directions__link"><h4 class="h4 service__directions__text__menu">Что-нибудь</h4></a>
<a href="/" class="service__directions__link"><h4 class="h4 service__directions__text__menu">Нагрузочное тестирование сайтов</h4></a>
<a href="/" class="service__directions__link"><h4 class="h4 service__directions__text__menu">Тестирование производительности сайта</h4></a>
<a href="/" class="service__directions__link"><h4 class="h4 service__directions__text__menu">Проверка сайта на вирусы</h4></a>
<a href="/" class="service__directions__link"><h4 class="h4 service__directions__text__menu">Тестирование интерфейса</h4></a>
<a href="/" class="service__directions__link"><h4 class="h4 service__directions__text__menu">Тестирование безопасности сайта</h4></a>
<a href="/" class="service__directions__link"><h4 class="h4 service__directions__text__menu">Оптимизация скорости загрузки сайта</h4></a>
</div>
Вот такой блок на каждой странице 
При переходе, допустим на "дизайн социальных сетей", эта строка должна пропадать, а при переходе на другую страницу, допустим "дизайн мобильной версии", то строка "дизайн социальных сетей" снова появляется, а "дизайн мобильной версии" пропадает. А при добавлении страницы на WP в этот список автоматически заносится заголовок страницы и ссылка на нее
Ответы (1 шт):
Можно использовать WP_Query для того чтобы получить список дочерних страниц от родительской страницы текущей. Все что нужно, это получить ID родительской страницы, передать его в аргументы и исключить из выборки текущую страницу.
<?php
global $post;
$args = [
'post_parent' => $post->post_parent,
'post_type' => 'page',
'posts_per_page' => -1,
'no_found_rows' => true,
'post_status' => 'publish',
'post__not_in' => [$post->ID]
];
$childrens = new WP_Query($args);
if ($childrens->have_posts()) : ?>
<div class="service__directions__content">
<?php while($childrens->have_posts()) : $childrens->the_post(); ?>
<a href="<?php the_permalink(); ?>" class="service__directions__link"><?php the_title('<h4 class="h4 service__directions__text__menu">', '</h4>'); ?></a>
<?php endwhile; ?>
</div>
<?php endif; wp_reset_postdata(); ?>
Так же есть вариант с использованием get_children()
<?php
global $post;
$args = [
'post_parent' => $post->post_parent,
'post_type' => 'page',
'numberposts' => -1,
'post_status' => 'publish',
'exclude' => $post->ID
];
$childrens = get_children($args);
if ($childrens) : ?>
<div class="service__directions__content">
<?php foreach ($childrens as $children) : ?>
<a href="<?php echo esc_url( get_permalink($children->ID) ); ?>" class="service__directions__link"><?php echo esc_html($children->post_title); ?></a>
<?php endforeach; ?>
</div>
<?php endif; ?>