Поддержка Проблемы и решения Список записей, разбитый по категориям — в страницу.

  • Мне нужно создать отдельную страницу, в которой будет генерироваться список всех записей, разбитый по категориям.

    Категория 1
    Запись A [121]
    Запись B [34]
    Запись C [56]
    Запись D [219]
    
    Категория 2
    Запись E [69]
    Запись F [107]
    Запись G [11]
    Запись H [5]

    Может быть где-то уже расписывался конкретно мой вариант? Задача, в общем-то, тривиальная. Дайте ссылку или подскажите здесь.

    ***
    Внезапный бонус.

    Каждая запись в моём блоге имеет некий числовой код, проставляемый вручную при её создании или редактировании. Этакие ярлычки с уникальными номерками. Они мне дороги как память и отображаются в определённом месте, как в каждой из открытых для чтения записи, так и в анонсах на главной. Для этого я пользуюсь кастом филдами — одним для индекса, другим для синглов. Соответственно, и в то, и в другое поле, вводится одинаковый номер. Исполнено примитивно, но работает. Подскажите — как добавлять вывод этих номерков к названиям записей в том самом списке, который я хочу реализовать на отдельной странице?

Просмотр 4 ответов — с 1 по 4 (всего 4)
  • как добавлять вывод этих номерков к названиям записей

    http://codex.wordpress.org/Function_Reference/get_post_meta

    Что не так в этой картинке?

    function plbc()
    {
    $postslist = get_posts('numberposts=-1&orderby=title&order=ASC&category=48');
    return '<h2>Построено:</h2>';
    return '<ul>';
    foreach ($postslist as $post) : setup_postdata($post);
    return '<li><a href="'.the_permalink().'">'.the_title().'</a></li>';
    endforeach;
    return '</ul>';
    }
    add_shortcode('plbc_sc', 'plbc');

    Как приличный человек, вызываю шорткод вставкой [plbc_sc] в html-редактор новой страницы, но получаю:

    Построено:
    •
    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    1. Первый же return возвращает строку «Построено», и функция завершается.
    2. Функции the_permalink() и the_title() не возвращают, а сразу выводят результат. Здесь нужны get_permalink() и get_the_title().
    3. Не хватает определения переменной $post как глобальной, без которого get_permalink() и get_the_title() её не видят.
    4. Не хватает вызова wp_reset_postdata(), без которого могут отображаться комментарии от другой записи (последней в цикле).

    Исправленный вариант:

    function plbc()
    {
    global $post;
    $postslist = get_posts('numberposts=-1&orderby=title&order=ASC&category=48');
    $result = '<h2>Построено:</h2>';
    $result .= '<ul>';
    foreach ($postslist as $post) : setup_postdata($post);
    $result .= '<li><a href="'.get_permalink().'">'.get_the_title().'</a></li>';
    endforeach;
    $result .='</ul>';
    wp_reset_postdata();
    return $result;
    }
    add_shortcode('plbc_sc', 'plbc');

    Благодарю за ответ, воспользуюсь обязательно.

Просмотр 4 ответов — с 1 по 4 (всего 4)
  • Тема «Список записей, разбитый по категориям — в страницу.» закрыта для новых ответов.