За промовчанням останні записи WordPress відображаються на головній сторінці, а більш старі записи доступні через навігацію записів на сторінках /сторінка/2/, /сторінка/3/ і так далі. У цій статті ми розповімо, як відображати ваші записи на будь-якій статичній сторінці, використовуючи цикл користувача WP_Query, який добре працює з навігацією по записах.
Наприклад, якщо ви відображаєте статичну сторінку як головна сторінка (як зазначено в Налаштування читання), ви можете захотіти показувати список записів окремо, наприклад, на окремій сторінці "блозі". До цього прийшов я, коли робив свій блог xy.css, використовуючи статичну (без записів блогу) головну сторінку. Мені подобається такий підхід, оскільки навігація по записах у такому вигляді працює інтуїтивно, наприклад:
- http://xycss.com/blog/ - Відображає останній записи в блозі
- http://xycss.com/blog/page/2/ - Відображає другу сторінку записів
- http://xycss.com/blog/page/3/ - Відображає третю сторінку записів
Це надзвичайно корисно при специфічних налаштуваннях CMS, наприклад, коли головна сторінка використовується як форум, електронний магазин або навігаційну сторінку. Ось інструкція для випадків, як відображати записи блогу на своїй сторінці (з навігацією!)
Крок 1. Шаблон сторінки
Створіть пустий шаблон сторінки, назвіть його page-blog.php і додайте туди наступний код:
<?php /* Template Name: Blog */ ?> <?php get_header(); ?> <article> <?php // Display blog posts on any page @ http://m0n.co/l $temp = $wp_query; $wp_query= null; $wp_query = new WP_Query(); $wp_query->query('showposts=5' . '&paged='.$paged); while ($wp_query->have_posts()) : $wp_query->the_post(); ?> <h2><a href="<?php the_permalink(); ?>" title="Read more"><?php the_title(); ?></a></h2> <?php the_excerpt(); ?> <?php endwhile; ?> <?php if ($paged > 1) { ?> <nav id="nav-posts"> <div class="prev"><?php next_posts_link('« Previous Posts'); ?></div> <div class="next"><?php previous_posts_link('Newer Posts »'); ?></div> </nav> <?php } else { ?> <nav id="nav-posts"> <div class="prev"><?php next_posts_link('« Previous Posts'); ?></div> </nav> <?php } ?> <?php wp_reset_postdata(); ?> </article> <?php get_footer(); ?>
Власне все. Тепер просто підключіть його і напихайте своїми власними параметрами для WP_Query - І готове. Наприклад, замість того, щоб відображати 5 записів, ви можете встановити showposts=10 або стільки, скільки вам завгодно.
Зверніть увагу, що навігація по постах містить умови, щоб на першій сторінці записів (тобто, на вашій сторінці /блог/) не відображалася порожня розмітка/стилі для посилання "наступні записи". Тут Ви можете дізнатися більше про оптимізацію навігації за записами WordPress.
Зверніть увагу на те, що в цьому прикладі використана трохи застаріла розмітка, просто для спрощення. Швидше за все, вам доведеться зробити кілька змін синхронізуватися з вашою темою.
Крок 2. Додавання нової сторінки
Як тільки ви закінчили та завантажили на сайт файл page-blog.php, зайдіть у консоль адміністратора та перейдіть на сторінку додавання нової сторінки. Там створіть нову сторінку під назвою "Блог(або як вам захочеться), встановіть її шаблон як "Блог" з панелі "Атрибути сторінки".
Готово! Тепер перейдіть на сторінку блогу та ви побачите, як ваш цикл WP_Query працює: останні записи у блозі будуть відображені на сторінці, як і навігація за попередніми записами, якщо вони існують, звичайно.
Висновок
У WordPress можна з легкістю відображати записи вашого блогу будь-де. У цій статті ми розповіли, як відобразити записи на будь-якій станиці, використовуючи свій цикл WP_Query, який підтримує навігацію. Це може бути дуже корисним при налаштуванні WordPress як окремої CMS користувача.
Коментарі до запису: 42
Дякую) корисна інформація!
А якщо мені потрібно одночасно "вести" кілька стрічок (сторінок), на яких відображаються записи з різними категоріями? Наприклад на сторінці «Новини» — тільки новини, а на сторінці «Блог» — все інше, але теж, звичайно, з навігацією.
Тоді можна обійтися лише рубрикою Новини, яка виводитиме лише потрібні записи. А на головній сторінці всі записи блогу.
Встановила WP Page Numbers. Навігація з'явилася, але на головній сторінці відображаються всі записи сайту, хоча в налаштуваннях поставила 6. Як зробити, щоб відображалася потрібна кількість записів (як у налаштуваннях) на головній?
Дивіться у налаштуваннях цього плагіна та в загальних налаштуваннях у консолі, де задається кількість постів на сторінку.
Дякую за статтю, досить-таки пізнавально, але ось у мене питання дозріло, а чи можна як у wordpress зробити так, щоб на головній сторінці відображалося 3 записи, а на другій допустимо 6? Це було б корисно, коли на головній є слайдер, найчастіше він займає певний простір і після переходу на другу сторінку, якщо кількість записів мінімально віджети виглядають не юзабельно, іноді навіть вилазять за WP PageNavi
Чесно кажучи, не зустрічав плагінів із подібною функціональністю. Швидше за все подібне можна реалізувати тільки самостійно, внісши певні редагування в той же WP PageNavi
Вітаю!
А як можна, щоб на головну кілька статичних сторінок опублікувати. Просто в мене на одну весь матермал не встигає зберегтися. А коли розбив на статті неправильно відображається…
Ви можете прикріпити два записи (в адмінці) тобто. зробити їх постійно видимими вгорі сторінки, або реалізувати це через custom post types, додавши на головну сторінку окремий блок із вашими обраними записами.
В адмінці не знайшов, як прикріпити на головну дві статичні сторінки. А custom post types це плагін? У ньому можна вивести саме статичні сторінки?
У керуванні записами у властивостях кожного запису можна поставити галку Приліпити. Це фіксує вибраний запис зверху стрічки постів.
Custom post types — це плагін, а можливість створювати окремі типи записів з окремими параметрами. Читайте докладніше: https://hostenko.com/wpcafe/tutorials/custom-post-types-polzovatelskie-taksonomii-filtryi-i-arhivyi-v-wordpress/ та https://hostenko.com/wpcafe/tutorials/kak- ispolizovat-kastomnyie-polya-dlya-sozdaniya-meta-blokov-s-obzorami/
Звичайні статті «Записи можна» приліпити. А статичні сторінки на жаль немає такої функції
Хороша стаття, прям майже те що шукав.
Як змусити цей код виводити записи конкретної категорії?
Стоїть завдання виводити дві сторінки записів із різних категорій та різними шаблонами сторінок.
Ось, у мене те саме завдання
виводити на сторінку записи тих категорій (рубрик), які мені потрібні.
А виходить якщо створена сторінка "Блог" і в адмінці обрана сторінка для записів: Блог, то на цій сторінці всі записи всіх категорій.
Ось питання, як з допомогою плагіна або в ручну, поставити щоб на цю сторінку виводилися тільки необхідні мені записи з конкретних рубрик
тут знайшов http://iglous.ru/kak-v-wordpress-skryt-zapisi-rubriki-s-glavnoj-stranicy-i-rss/
Відкрийте файл functions.php, і в самому низу, перед знаком ?> вставте цей код:
// Фільтр рубрик
function hidecategory($query) {
if ($query->is_feed || ($query->is_home && !(is_paged())))
{$query->set('cat','-104, -57′);}
return $query; }
add_filter('pre_get_posts','hidecategory');
// кінець фільтра рубрик
А ось знайшов плагін
Розширений засіб виключення категорій
http://wordpress.org/plugins/advanced-category-excluder/screenshots/
дуже корисна стаття, а як зробити в 2 чи три колонки новини?
Дуже у пригоді, але відображається ось як: без мініатюр картинок. Не красиво… Код повністю використав ваш. Щось напевно потрібно додати в код, щоб виводилася і мініатюра. Не підкажіть що?
Допоможіть будь ласка. У мене в блозі на самому низу сторінки є кнопка «Завантажити ще». Коли її просто так натискаєш, то відкривається нова сторінка і вона порожня. Якщо ж натиснути правою кнопкою миші "відкрити посилання в новій вкладці", то кнопка спрацьовує та відкриється page 2.
Із чим може бути пов'язана така проблема? І як її виправити?
Ось посилання на мій блог, якщо це потрібно
У моєму творчому блозі прибрано функції «Додати», «редагувати» і в коментарях як у блозі так і на сторінки блогу і навіть своєї сторінки запитують підтвердження, ніби це не моя сторінка. Нові теми не додає та редагувати своїх віршів теж не включається. У налаштуваннях знято функцію «відображати нову тему». Які кроки мені потрібно зробити? Намагаюся вже два тижні добитися в чому річ і як зробити, щоб блог запрацював. Блог був схвалений комісією і залишений у Моїм світі. Прошу допомоги.
Щиро Дякую! Дуже у нагоді ваша стаття! Спробувала виводити інакше, але тоді працювала навігація, проте посади виводилися одним довгим списком. Дякую за статтю!
Вітаю! Зіткнулася з такою проблемою, ні як не можу вирішити. У налаштуваннях стоїть, що на головній сторінці відображаються останні записи. У меню є вкладка блог. Мені потрібно, щоб усі меню відображалися. А коли я натискаю на блог, сторінка порожня. Що я пропустила? Якщо Ви мені підкажете, буду дуже вдячна.
За промовчанням всі останні записи виводяться на головній сторінці. А ваша вкладка «блог» — це, швидше за все, окрема рубрика. Ви можете помітити всі ваші пости в адмінці та закріпити їх за рубрикою Блог, щоб вони відображалися у цьому пункті. А на головній сторінці закріпити якусь статичну сторінку замість останніх постів це робиться в Налаштуваннях — Читання — На головній сторінці відображати.
Дякую! Півдня шукав робочий код, який виводить усі записи сайту на одну сторінку, плюс при цьому має працювати навігація. Ваше рішення – єдине, яке працює. Зрозуміло, довелося трохи підправити під свою тему (створена мною з нуля) та все ок! Використовую цю сторінку як хтмл карти сайту. Дуже-дуже-дуже задоволений та вдячний.
Підкажіть, а у вас мініатюра запису виводиться? у мене немає.
як вивести мініатюри записів за допомогою цього коду?
А я не працює! Що робити?
Доброго часу, будь ласка, підкажіть, як зробити відображення записів мініатюрами, а не списком або як зробити так, щоб код використовував стандартне оформлення записів?
Якщо ви не хочете розумітися на коді, то простіше підібрати тему, яка спочатку вміє виводити записи мініатюрами. Благо, таких тем на сьогодні достатньо.
Так у мене така тема і стоїть, на головній відображаються мініатюри, а сторінку, яку я створив за допомогою вашого коду, там новини виводяться списком, цю ситуацію я хочу виправити, і хочу розібратися в коді, але у статті ви не вказуєте як модифікувати список в мініатюри, подібне питання вже ставилося вище, але ви його проігнорували.
Добрий вечір, може бути таке, що даний код виводить з кожним записом зайвий тек!??
Мініатюри я виводжу так: якщо комусь досі цікаво
Добрий вечір, може бути таке, що даний код виводить з кожним записом зайвий тек!??
Мініатюри я виводжу так: якщо комусь досі цікаво
/ ** /
the_post_thumbnail('350×190');
У мене за замовчуванням "налаштування" "читання" за умовчанням варто "На сторінках блогу відображати не більше 9 записів". Змінюю 9 на будь-яке інше - зберігаюсь- 9 як і раніше висить у значеннях.
Може, хто знає як проблему вирішити?
На 12-му рядку в прикладі є такий параметр 'showposts=5' змінюйте цифру тут. Хоча я можу помилятися.
Вибачте, якщо пишу незрозуміло, я новачок, сама освоюю Вордпрес. Питання таке: є тема Avata, має красивий дизайн головної сторінки, з різними блоками, типу «Чим корисний сайт» і «Наша команда». Блок «Останні записи» в ній є, але внизу і одним рядком, якщо можна так висловитися. Так от, якщо я поставлю в налаштуваннях "показувати статичну сторінку", вся ця краса зникає, а мені хотілося б, щоб залишався і шаблон головної сторінки, і пункт запису блогу в меню. Як це зробити?
Дорогі адміністратори сайту! Горіть у пеклі за те, що ви заборонили користувачам копіювання тексту із сайту! Мені ця стаття дуже допомогла і код сторінки добре скопіював (ні)
Зауваження прийняте. Повернули як було.
доброго часу доби! Чи не працює ніяка навігація по новинах, не могли б детальніше розписати, що потрібно зробити щоб при більшій кількості новин ніж встановлено на одній сторінці з'являлися кнопки навігації по попереднім? Дякую!
Дякую за статтю. Те, що саме шукав
Але ось можете підказати, як підправити код у шаблоні, щоб додався мій сайдбар коректно. а то я коли вставляю він або над, або під списком виводиться і чи можливе відображення зображення запису. а не лише текст?
Заранее спасибо