Flector

Как вывести на странице список всех записей сайта?

Очень часто на форумах поддержки WordPress возникает вопрос о том, как в записи или на странице вывести список всех существующих на сайте записей. Зачем это нужно каждый решает сам. Кто-то таким образом вручную создает карту сайта, а кому-то это надо для замены рубрик. В большинстве случаев, подобная задача решается с помощью сторонних плагинов. Но если вам надо просто вывести список записей и ничего больше, то использование сторонних плагинов тут будет неоправданным. Вывести список всех записей можно с помощью небольшого шорткода [allposts], который вы вольны добавить куда угодно. Совсем недавно я рассматривал вопрос о том, как вывести список всех меток или рубрик сайта в алфавитном порядке, с записями принцип практически тот же. Для этого вам необходимо добавить в файл functions.php вашей темы следующий код:

//вывод списка всех записей сайта с помощью шорткода start
function wph_allposts_shortcode($atts, $content) {
 
    $args = array(
        'post_type' => 'post',
        'post_status' => 'publish',
        'posts_per_page'   => -1,
        'orderby' => 'title',
        'order' => 'ASC'
    );
    $query = new WP_Query( $args );
 
    if( $query->have_posts() ) {
        echo '<ul class="allposts">';
        while ( $query->have_posts() ) {
            $query->the_post();
            echo '<li><a href="'.get_the_permalink().'">' . 
            get_the_title() . '</a></li>';
        }
        echo '</ul>';
    }
 
    wp_reset_postdata();
}
add_shortcode('allposts', 'wph_allposts_shortcode');
//вывод списка всех записей сайта с помощью шорткода end

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


Написать комментарий

Для вставки кода воспользуйтесь кнопкой "Код". Используйте предпросмотр!