Виведення дочірніх записів сторінки Wordpress. Керування виведенням сторінок у WordPress за допомогою плагіна. #2.2 Використовуючи цей код, ми приберемо заголовок "Сторінки" у списку

Всім привіт дорогі друзі! З вами у відкритому режимі розмовляє та розповідає та показує на практиці Макс Метелєв.

І сьогодні на закуску вам зранку порція корисного матеріалу наступного змісту – ми з вами навчимося виводити список сторінок Wordpress з картинками. Урок дуже простий та цікавий. Поїхали.

Більшість веб-сайтів переважно використовують сторінки для текстового контенту. Оскільки сторінки відрізняються від записів, вам можуть знадобитися способи їх виведення.

Крім основного способу виведення сторінок wordpress з превьюшками ми покажемо як вивести дочірні сторінки та батьківські.

Виглядатиме це приблизно так:

Перше, що вам потрібно зробити це встановити та активувати плагін Page-list. Він працює прямо «з коробки», тому в налаштування ми лізти не будемо, тому що їх там немає.

Даний плагін поставляється зі списком шорткодів із великим списком параметрів. Почнемо з того, що зробимо просте виведення всіх сторінок сайту, тобто зробимо звичайну карту

Створіть нову сторінку в WordPress і додайте до неї наступний шорткод [pagelist]

Цей шорткод покаже простий вкладений усі ваші сторінки.

Ви можете використовувати його або ряд інших текстових віджетів. Якщо вони у вас не працюють на сайті, тоді вам необхідно їх підключити через додавання рядка до файлу функцій. phpвашої теми або в конкретну ділянку плагіна.

add_filter("widget_text","do_shortcode");

add_filter ("widget_text", "do_shortcode");

Відображення дочірніх сторінок для батьківської WordPress

Все, що вам потрібно це додати потрібний шорткод [ subpages ]на сторінку батька.

Також можна використовувати короткі коди для вставлення текстових віджетів.

Додавання родинних сторінок на Вордпрес

Споріднені сторінки це, по суті, дочірні, які мають одного спільного батька. Виведення таких сторінок Wordpress здійснюється за допомогою наступної конструкції [ siblings ]

Виведення сторінок із превьюшками та уривком тексту

Плагін Page-list йде в комплекті з наступним кодом [page_ext]. Цей код для вставки дає розширені можливості для відображення списків сторінок WordPress.

Ви можете використовувати його, щоб відобразити структуру сторінок із характерним зображенням статті та невеликим уривком тексту з неї. Як тут:

[ pagelist_ext show_image = "1" image_width = "50" ]

Ви можете самостійно задавати розмір зображення за допомогою параметра image_width

Також ви можете контролювати довжину уривка тексту, використовуючи параметр limit_content

Наприклад, можете задати 100 знаків, приклад [ pagelist_ext limit_content = "100" ]

Якщо ви не бажаєте відображати текст біля мініатюри до статті, використовуйте наступний короткий код для сторінки [ pagelist_ext show_content = "0" ]

Дякуємо за увагу та вдалого вивчення!

Виводить список постійних сторінок як посилань.

Зазвичай використовується у файлах header.php (шапка сайту) або sidebar.php (бічна панель) для створення меню.

Також дивіться дуже схожу функцію wp_page_menu() ;

Альтернативою створення меню є функція wp_nav_menu() , додана з версії 3.0. Мануал.

✈ 1 раз = 0.014449с = гальмо| 50000 разів = 213.16с = гальмо| PHP 7.1.2, WP 4.7.3

Хуки з функції

Використання

Шаблон використання

$args = array("depth" => 0, "show_date" => "", "date_format" => get_option("date_format"), "child_of" => 0, "exclude" => "", "exclude_tree" => "", "include" => "", "title_li" => __("Pages"), "echo" => 1, "authors" => "", "sort_column" => "menu_order, post_title" , "sort_order" => "ASC", "link_before" => "", "link_after" => "", "meta_key" => "", "meta_value" => "", "number" => "", "offset" => "", "walker" => "", "post_type" => "page", // з функції get_pages()); wp_list_pages($args);

Крім параметрів нижче, функція може приймати ті самі параметри як і get_pages() , тому що вона працює на її основі.

Depth (число)

Цей параметр контролює рівень вкладеності дочірніх сторінок, які будуть включені до списку. За замовчуванням 0 (показати всі дочірні сторінки, включаючи подвійну та більше вкладеність).

  • 0 (за замовчуванням) Увімкніть у списку всі рівні вкладених сторінок і показуйте їх у деревоподібному вигляді.
  • -1 Включити до списку всі рівні вкладених сторінок, але не показувати вкладеність (древоподібне відображення списку вимикається, список буде показаний як загальний).
  • 1 Показати лише перші вкладені сторінки, тобто. дочірні сторінки першого рівня.
  • 2, 3 і т.д. Включити до списку дочірні сторінки 2, 3 тощо. рівня…

За замовчуванням: 0

Show_date (рядок)

Показує дату створення або зміни сторінки, поряд із посиланням. За промовчанням показ дат вимкнено.

  • "" - не відображати дати (за замовчуванням).
  • modified – показувати дату зміни.
  • created – показувати дату створення сторінки.

Типово: null

Date_format (рядок)Контролює, у якому вигляді буде показана дата, якщо включений параметр show_date , наприклад, d/m/Y виведе: 10/11/2011
За замовчуванням: налаштування дати WordPress child_of (число)Показувати лише дочірні сторінки окремої сторінки, зазначеної у цьому параметрі. Вказувати потрібно ID сторінки, підсторінки якої хочемо вивести. За промовчанням 0 - відображати всі сторінки.
За замовчуванням: 0 exclude (рядок)У цьому параметрі вказуємо через кому ID сторінок, які ми хочемо, щоб потрапили до списку, наприклад: exclude=3,7,31 .
За замовчуванням: "" exclude_tree (рядок)Вкажіть через кому ID батьківський сторінок, які ви хочете виключити зі списку. Також будуть виключені всі вкладені (дочірні сторінки) вказаних ID. Тобто. цей параметр виключає зі списку дерево сторінок.
Доданий до версії 2.7.
За замовчуванням: "" include (рядок/масив)

Показати лише вказані сторінки. ID можна вказати через кому або пропуск у вигляді рядка: include=45 63 78 94 128 140 .

Цей параметр скасовує параметри, що стосуються формування списку, оскільки він створює список лише з тих сторінок, які вказані. Скасовуються параметри: exclude , child_of , depth , meta_key , meta_value , authors .
За замовчуванням: ""

Title_li (рядок)Заголовок списку. Типово: __("Pages") __("") потрібно для локалізації. Якщо обнулити цей параметр (""), то заголовок списку не буде показуватися, так само будуть видалені HTML теги, що обрамляють список ().
Типово: __("Pages") echo (логічний)Виводити результат на екран (true) чи повертати для обробки (false).
Типово: true authors (рядок)Показати сторінки, що належать лише вказаним у цьому параметрі авторам. Вказувати потрібно ID авторів, через кому.
За замовчуванням: "" sort_column (рядок)

Сортувати список за вказаними полями. За замовчуванням список сортується за заголовками (post_title) за абеткою. Можна вказувати кілька параметрів через кому, відповідно до яких потім буде відсортовано список.

  • post_title - сортувати за заголовком (в алфавітному порядку);
  • menu_order - сортувати за порядком, що вказується на адмін-панелі на сторінці редагування "постійної сторінки";
  • post_date - сортувати за датою створення "постійної сторінки";
  • post_modified – сортувати за датою зміни сторінки;
  • ID – сортувати за ідентифікатором запису у Базі Даних (за ID);
  • post_author – сортувати за ID авторів;
  • post_name - сортувати в алфавітному порядку за альтернативним ім'ям посту (зазвичай транслітерація заголовка).

Типово: "menu_order, post_title"

Sort_order (рядок)Напрямок сортування: "ASC" - по порядку, "DESC" - у зворотному порядку.
Типово: "ASC" link_before (рядок)Вкажіть текст або HTML код, який буде вставлено перед текстом посилання (всередині тега ). Доданий до версії 2.7.
За замовчуванням: "" link_after (рядок)Вкажіть текст або HTML код, який буде вставлено після тексту посилання (всередині тега
). Доданий до версії 2.7.
За замовчуванням: "" meta_key (рядок)Виводить сторінки, які мають лише вказані довільні поля (працює лише разом із параметром meta_value).
За замовчуванням: "" meta_value (рядок)Виведе сторінки, які мають лише вказані значення довільних полів (ключ довільного поля обов'язково вказувати в параметрі meta_key).
За замовчуванням: "" number (число)Обмеження кількості посилань у списку (SQL LIMIT). У деяких випадках може не працювати.
За замовчуванням: ні offset (число)Верхній відступ списку. Наприклад, якщо вказати 5, то перші 5 посилань, які мали б бути показані не буде показано у списку.
Доданий до версії 2.8.
За замовчуванням: ні item_spacing (рядок)Залишати чи ні перенесення рядків у HTML коді меню. Можливо: preserve або discard . C WP 4.7.
Типово: "preserve" walker (рядок) php Клас, який обробляє побудову списку.
За замовчуванням: ""

Приклади

#1 Видалення або зміна заголовка списку

#1.1 Видалимо заголовок списку, скасувавши параметр title_li.

Майте на увазі, що теги ul також будуть видалені і їх потрібно вказувати окремо:

#1.2. Змінимо заголовок

Змінимо заголовок на "Поети", обернемо його в HTML тег

і виведемо у списку тільки постійні сторінки з ID 9, 5 та 23:

    " . __("Poetry") . "

"); ?>

#2 Сортування списку сторінок

#2.1 Відсортуємо список відповідно до порядкових номерів, вказаних на сторінці редагування "постійних сторінок":

#2.2 Використовуючи цей код, ми приберемо заголовок "Сторінки" у списку:

#2.3 Тепер виведемо список відсортований за датою створення "постійної сторінки" та покажемо дату поряд з кожним посиланням:

#3 Виключення та включення сторінок

#3.1 Використовуючи параметр excludeвиключимо сторінки з ID 17,38:

#3.2 Використовуючи параметр include, створимо список тільки зі сторінок в ID 35, 7, 26 та 13:

    " . __("Pages") . ""); ?>

#4 Виведення дочірніх сторінок

#4.1 Виведемо список дочірніх сторінок

Використовуючи наступний приклад, можна вивести в сайдбарі (або деінде) список дочірніх сторінок (підсторінок), постійної сторінки на який ви зараз перебуваєте. Для цього скористаємося параметром child_ofі перевіркою чи існують взагалі дочірні сторінки для поточної (спробуємо отримати дочірні сторінки в змінну $children, якщо вийде, виведемо список):

ID."&echo=0"); if ($children) (?>

#4.2. Статичний список дочірніх сторінок

post_parent) $children = wp_list_pages("title_li=&child_of=".$post->post_parent."&echo=0"); else $children = wp_list_pages("title_li=&child_of=".$post->ID."&echo=0"); if ($children) (?>

Цей приклад можна використовувати в бічній панелі (сайдбарі), однак потрібно розуміти, що він перевіряє спочатку наявність батьківської сторінки у поточній, якщо вона існує, то виводиться список однорівневих сторінок, якщо батьківської сторінки немає, то виводиться список дочірніх сторінок. Таким чином, ми матимемо на всіх сторінках замкнутий список для сторінок верхнього рівня.

#4.3. Альтернативний варіант попереднього коду. Цей приклад також можна використовувати у сайдбарі, він виводитиме:

    коли ви перебуваєте на головній сторінці, будуть показані всі "постійні сторінки" верхнього рівня;

    коли ви знаходитесь на "постійній сторінці" верхнього рівня, яка не має дочірніх сторінок, будуть показані ті самі "постійні сторінки" верхнього рівня;

    коли ви знаходитесь на "постійній сторінці" верхнього рівня, яка має дочірні сторінки, будуть показані ці дочірні сторінки та їх дочірні сторінки;

  • коли ви знаходитесь на дочірній сторінці "постійної сторінки" верхнього рівня (на сторінці другого рівня), будуть показані дочірні сторінки "постійної сторінки" верхнього рівня (тобто дочірні сторінки батьківської).
Сторінки верхнього рівня"); if (is_page()) ( $page = $post->ID; if ($post->post_parent) ( $page = $post->post_parent; ) $children=wp_list_pages("echo=0&child_of=" ). $page . "&title_li="); if ($children) ( $output = wp_list_pages ("echo=0&child_of=" ).

Child Pages

"); ) ) echo $output; ?>

#4.4 Список сторінок тільки якщо він є

Список дочірніх сторінок, який буде показаний, лише якщо "постійна сторінка" має дочірні сторінки. Дочірні сторінки будуть показані як на батьківській "постійній сторінці", так і на самих дочірніх сторінках. Відмінністю від попереднього прикладу є наявність назви батьківської "постійної сторінки" в заголовку списку:

post_parent) ( $children = wp_list_pages("title_li=&child_of=".$post->post_parent."&echo=0"); $titlenamer = get_the_title($post->post_parent); ) else ( $children = wp_list_pages("title_li =&child_of=".$post->ID."&echo=0"); $titlenamer = get_the_title($post->ID); ) if ($children) ( ?>

#4.5 Як отримати всі дочірні сторінки, на "постійних сторінках" будь-якого рівня вкладеності:

post_parent)( // отримаємо дочірні сторінки, для "постійної сторінки" верхнього рівня $children = wp_list_pages("title_li=&child_of=".$post->ID."&echo=0"); )else( // отримаємо дочірні сторінки, якщо ми знаходимося на дочірній сторінці першого рівня: //$children = wp_list_pages("title_li=&child_of=".$post->post_parent."&echo=0"); першої сторінки (старшої) // wp збирає ID у зворотному порядку, тому "перша" сторінки буде останньою $ancestors = end($post->ancestors); $children = wp_list_pages("title_li=&child_of=".$ancestors." &echo=0"); // все, тепер у нас завжди буде список зі всіх дочірніх сторінок, // на якому рівні вкладеності ми б не знаходилися. ) ) if ($children) ( ?>

#4.6 Дерево дочірніх сторінок вказаної "постійної сторінки"

Тому що немає можливості вказати wp_list_pagesвиводити дерево (усі рівні вкладеності) сторінок певної сторінки (наприклад, сторінки з ID 93), то для такого трюку ми можемо скористатися функцією get_pages() :

ID; $args=array("title_li" => "Дерево батьківської сторінки: " . $parent, "include" => $parent . "," . implode(",", $pageids)); wp_list_pages($args); ) ?>

#5 Маркування та Стилізація списків постійних сторінок

За замовчуванням, wp_list_pages()створює список такої конструкції:

Якщо ми приберемо заголовок, поставивши порожній параметр title_li=, то вигляд стане таким:

...

Інакше можна написати так:

Усі теги li створювані функцією wp_list_pages()позначені CSS класом page_item. Коли у списку з'являється сторінка, на який ви знаходитесь, до li елементу списку додається ще клас current_page_parent .

Таким чином, список можна "розфарбовувати" наступними селекторами CSS:

Pagenav ( … ) /* головний клас ul тега, який обертає весь список */ .page-item-2 ( … ) /* елемент, що відноситься до сторінки з ID 2 */ .page_item ( … ) /* будь-який елемент списку */ . current_page_item ( … ) /* поточна сторінка */.

Щоб досягти глобального впливу на елементи списку, використовуйте такі селектори:

Pagenav ul ul, .pagenav .current_page_item ul ul, .pagenav .current_page_ancestor ul ul, .pagenav .current_page_ancestor .current_page_item ul ul, .pagenav .current_page_ancestor .page_ancestor . .pagenav. current_page_ancestor ul, .pagenav .current_page_ancestor .current_page_item ul, .pagenav .current_page_ancestor .current_page_ancestor ul, .pagenav .current_page_ancestor .current_page_ancestor . _ancestor ul ( display: block; )

#6. Список родинних або дочірніх сторінок до поточної

post_parent)( // збираємо родинні сторінки $relations = get_post_ancestors($post->ID); // отримуємо дочірні сторінки (якщо є) $result = $wpdb->get_results("SELECT ID FROM wp_posts WHERE post_parent = $post-> ID AND post_type="page""); // якщо дочірні сторінки цієї сторінки вдалося // отримати об'єднуємо їх з родинними if ($result)( foreach($result as $pageID)( array_push($relations, $pageID->ID) ); ) ) // додаємо поточну сторінку до родинних array_push($relations, $post->ID);// робимо список ID розділений комами з родинних, дочірніх і поточної $relations_string = implode(",",$relations); / / отримуємо список за допомогою параметра include $sidelinks = wp_list_pages("title_li=&echo=0&include=".$relations_string); ) // якщо це не дочірня сторінка else ( // показуємо тільки дочірні сторінки один рівень $sidelinks = wp_list_pages("title_li =&echo=0&depth=1&child_of=". $post->ID); ) if($sidelinks)( ?>

    тегах echo $sidelinks; ?>

#7 Використання довільного типу записів (відмінного від page)

Якщо на сайті створено довільний тип записів із деревоподібною структурою, то wp_list_pages()можна використовувати для виведення таких записів.

В цілому всі вищеописані приклади підійдуть і для цього випадку, єдине потрібно змінювати тип запису, з яким працюватиме функція.

Тип запису вказується у параметрі post_type:

Wp_list_pages(array("post_type"=>"portfolio", "title_li"=>__("Portfolio"))));

нотатки

  • З версії 2.7 додані параметри: link_before, link_after та exclude_tree.
  • З версії 2.8 додано параметри: number та offset.

Хочете отримати справді живих передплатників на канал у Телеграмі, але не знаєте де це зробити? Переходьте за посиланням та купуйте необхідний ресурс за неймовірно дешевими цінами. Також Вам будуть доступні оптові знижки для швидкого та ефективного просування каналу.

Код wp list pages : wp-includes/post-template.php WP 5.2.1

0, "show_date" => "", "date_format" => get_option("date_format"), "child_of" => 0, "exclude" => "", "title_li" => __("Pages"), " echo" => 1, "authors" => "", "sort_column" => "menu_order, post_title", "link_before" => "", "link_after" => "", "item_spacing" => "preserve", "walker" => "",); $r = wp_parse_args($args, $defaults); if (! in_array($r["item_spacing"], array("preserve", "discard"), true)) ( // invalid value, fall back to default. $r["item_spacing"] = $defaults[" item_spacing"]; ) $output = ""; $ current_page = 0; // sanitize, mostle to keep spaces out $r["exclude"] = preg_replace("/[^0-9,]/", "", $r["exclude"]); // Allow plugins to filter array of excluded pages (but don"t put a nullstring into the array) $exclude_array = ($r["exclude"]) ? explode(",", $r["exclude"]) : array(); "] = implode(",", apply_filters("wp_list_pages_excludes", $exclude_array)); // Query pages. $r["hierarchical"] = 0; $pages = get_pages($r); pages)) ( if ($r["title_li"]) ( $output .= " "; ) ) /** * Filters HTML output of pages to list. string $output HTML output of the pages list. * @param array $r An array of page-listing arguments. ", $output, $r, $pages); if ($r["echo"]) ( echo $html; ) else ( return $html; ) )

Плагін Page-listзастосовується для виведення дочірніх сторінок. Не дивлячись на те, що будувати сайт на сторінках не зовсім зручно, особливо при великій кількості сторінок (що пов'язано з відсутністю поділу за таксономіями та труднощами сортування), проте така можливість є і якщо припече, то реалізувати такий проект цілком реально.

Плагін завантажило/встановило понад 40К, а останнє оновлення було у липні цього року.

Навіщо використовується плагін Page-list?

Майстерно використовуючи набір шоткод можна побудувати структуру сайту на базі сторінок, часом це буває необхідно. Шоткод велику кількість на всі випадки життя. Основне завдання плагіна – вивести аналог архіву для дочірніх сторінок. Існує можливість виведення мініатюри, заголовка та частини контенту статті (цитати).

Налаштування формату виведення здійснюється через CSS.

Особливості встановлення Page-list

Плагін працює відразу після активації, настрої його виявлено не було.

Недоліки Page-list

Не знайшов параметра, який би дозволяв вивести для поточної сторінки лише перший рівень вкладеності. Така можливість є лише за умови примусового вказівки ID сторінки. Рішення.Задати поточну сторінку параметром: parent=»this»

Приклад шоткод з виведенням заданого розміру мініатюри

Висновок

Інструмент робітник, конфліктів не помічено, зручно.

Беремо у репозиторії WordPress Page-list посилання на Page-list
Документація проекту Page-list Page-list , на іноземній мові
Аналогічний інструмент для постів

Більшість корпоративних та класичних сайтів, створених на WordPress, для наповнення частіше використовують сторінки, ніж пости. На статичних сторінках розміщується інформація про компанію, співробітників, послуги фірми тощо. При цьому відображення списку сторінок обмежені лише стандартним функціоналом меню. Так, можна скористатися функцією wp_nav_menu з різними параметрами, але для новачків це не просто і не наочно. У таких випадках вам допоможе плагін Page-list.

Модуль дозволяє виводити списки сторінок за допомогою шорткодів. При цьому можна вказувати певні параметри для відображення, наприклад, показувати мініатюри для сторінок.

Встановлюється модуль Page-list досить легко. Після активації нічого додатково налаштовувати не потрібно. Для того, щоб відобразити список сторінок, пишете в якомусь текстовому блоці WordPress. Це може бути пост блогу, сторінка або віджет із сайдбару. Якщо шорткод у віджеті не спрацьовує, потрібно додати у functions.php рядок:

Add_filter("widget_text","do_shortcode");

Шорткод виводить список усіх сторінок.

У зображенні вище ви можете помітити у шорткоду наявність спеціальних параметрів. З їхньою допомогою будь-який користувач може вивести потрібний йому набір сторінок. У прикладі використовувалися: child_of (ID батьківської сторінки для відображення її підсторінок), exclude (виключення певних сторінок) та depth (кількість рівнів ієрархії сторінок для відображення).

Що ж до шорткодів, то їх всього 4:

  • - Список всіх сторінок сайту;
  • – список підсторінок поточної сторінки;
  • – список підсторінок, що мають одну й ту саму батьківську сторінку з поточної;
  • – список сторінок з ілюстраціями та описом;

Шорткоди і дуже цікавий для корпоративних сайтів. Теоретично, за їх допомогою можна створити контекстно-залежне меню. Це коли ви заходите до одного з пунктів меню з підсторінками і бачите їх список у сайдбарі.

Дуже популярна опція на класичних сайтах. Що ж до шорткоду то це взагалі просто знахідка. З його допомогою можна організувати простий каталог товарів на сторінках. Функція виводить зображення сторінки та короткий її опис. Можна навіть задавати кількість символів у тексті та розмір картинки.

Для виведення такого списку використовується такий шорткод:

Як я вже сказав вище, можна обмежити довжину тексту опису:

Або взагалі прибрати короткий анонс: