Как связать все страницы и исключить текущую страницу в PHP - PullRequest
0 голосов
/ 18 марта 2019

В настоящее время у меня есть какой-то PHP, работающий точно так, как я хочу (генерация списка всех страниц с одним и тем же шаблоном страницы).

<?php $pages = get_pages(
    array('meta_key' => '_wp_page_template','meta_value' => 'template.php'));
    foreach($pages as $page){
        echo "<p>$page->post_title</p>";
    }
?>

Но теперь я хочу сделать две вещи.

Во-первых, я хочу, чтобы у каждого тега p был также href, ссылающийся на соответствующую страницу.

Второе - я хочу исключить страницу, на которой я нахожусь, из списка (иначе она будет ссылаться на страницу, на которой уже находится зритель, делая ее повторяющейся).

Большое спасибо заранее!

1 Ответ

0 голосов
/ 18 марта 2019

Вы можете использовать класс WP_Query для целевого поиска почти всего в Wordpress.

В этом случае мы выполняем фильтрацию с мета-поиском post__not_in и _wp_page_template перед выполнением "цикла страниц". Не забудьте вызвать wp_reset_postdata() в конце цикла, чтобы сделать так, чтобы различные функции (get_) the_ * снова возвращали данные для текущей страницы:

$query = new WP_Query(array(
    'post_type' => 'page',
    'post_status' => array('publish', 'future'),
    'post__not_in' => array(
        get_the_ID()
    ),
    'meta_query' => array(
        'relation' => 'and',
        array(
            'key' => '_wp_page_template',
            'value' => 'template.php',
            'compare' => '='
        )
    )
));

if($query->have_posts()) {
    while($query->have_posts()) {
        $query->the_post();

        echo '<p><a href="' . get_the_permalink() . '">' . get_the_title() . '</a></p>';
    }

    wp_reset_postdata();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...