✅ WEB і WordPress новини, теми, плагіни. Тут ми ділимося порадами і кращими рішеннями для сайтів.

Посібник із теми WordPress для початківців – Частина 12: Запит на власну публікацію

10

У цьому останньому уроці ми навчимося писати власний запит дописів і проходити їх у циклі, не перериваючи батьківський цикл у шаблоні. Ми створимо частину шаблону для окремих публікацій, яка показуватиме пов’язані публікації в одній категорії.

На цьому уроці ми зробимо запит щодо пов’язаних публікацій у нашому перегляді окремої публікації, що показуватиме максимум 3 публікації типу публікації, у тій самій категорії чи категоріях, що й публікація, у якій ми перебуваємо, виключаючи саму поточну публікацію, і рандомізуйте показані публікації. Ми також розглянемо стратегії, щоб не зіпсувати вкладений цикл.

Шаблон пов’язаних публікацій

Давайте зробимо пов’язані публікації частиною шаблону, про яку ми дізналися в частині 10. Таким чином ми не single.phpускладнюємо код і робимо його зручнішим для повторного використання. Розмістіть запит цієї нової частини шаблону, де забажаєте. Я розміщу його безпосередньо перед запитом шаблону коментарів:

Тепер давайте створимо новий порожній файл у нашій папці теми та назвемо його related-posts.php. З цим файлом ми готові зануритися у створення власного запиту публікації.

Спеціальний запит на публікацію

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

Якщо ви хочете дізнатися більше про те, як надсилати запити на публікації, у мене є публікація, яка детально розповідає про це.

Щоб створити власний запит публікації, ми викличемо new WP_Query(), передамо йому масив аргументів і збережемо його результат у змінній. Потім ми використаємо той самий цикл, який використовували раніше в наших шаблонах (подивіться на оригінальний цикл тут, щоб порівняти). Але нам потрібно наказати циклу проходити через змінну, а не через глобальну (яка є єдиним повідомленням).

Ось як цикл буде виглядати при додаванні його до спеціального запиту:

Як бачите, цикл точно такий же, з використанням have_postsі the_post. Різниця в тому, що ми викликаємо їх на $related_postsоб’єкт. Якщо ми пропустимо цю $related_postsчастину, WordPress автоматично прийме її як глобальний запит публікацій.

Ви також можете помітити виклик функції wp_reset_postdata()одразу після циклу. Ось як ми «прибираємо за собою» після спеціального запиту за допомогою WP_Query. Пам’ятайте, що це the_post()встановлює глобальний об’єкт повідомлення, щоб ми могли використовувати the_title()тощо. І оскільки ми вже перебуваємо всередині циклу (той, що в single.php), нам потрібно переконатися, що ми очищаємо та скидаємо публікацію назад до єдиної публікації після завершення. Якщо ми не скидаємо постдані, усе після цього посилатиметься на останню пов’язану публікацію, яку ми переглядали. Це може бути великою проблемою! У нашому прикладі ми мати шаблон коментарів, який слідує за цим. Якщо залишити скидання, у шаблоні коментарів відображатимуться коментарі з останньої пов’язаної публікації в циклі. А не окремої публікації, яку ми фактично переглядаємо!

Реалізація нашого спеціального циклу

Гаразд, давайте почнемо реалізацію спеціального циклу в нашому related-posts.php. Я додав оболонку та заголовок, але, як зазвичай, ви можете налаштувати HTML на свій розсуд:

Тепер ми побачимо силу багаторазового використання в частинах шаблону. Припустімо, що всередині цього спеціального циклу ми хочемо показати точно такий же вміст, як і в нашому content-loop.php, який ми використовуємо в наших шаблонах архіву. Все, що нам потрібно зробити, це запитати цю частину шаблону в нашому спеціальному циклі, якщо ми готові обробляти вивід кожної публікації!

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

Створення аргументів для нашого спеціального запиту публікації

Ми хочемо отримувати не більше 3 дописів. У документації (розділ «Параметри розміщення сторінок») аргументом для цього є posts_per_page. Отже, ми додаємо елемент масиву:

Ми хочемо переконатися, що WordPress отримує дописи, а не сторінки чи щось інше. У «Параметрах типу публікації» ми знаходимо:

Ми хочемо запобігти тому, щоб одна публікація, на якій ми перебуваємо, з’являлася в нашому запиті на пов’язані публікації, тому що це не має сенсу, чи не так? Документація говорить нам у розділі «Параметри публікації та сторінки», що ми можемо додати ідентифікатор публікації в масив для post__not_in:

Ми також хочемо рандомізувати дописи; тому що за умовчанням він отримуватиме останні опубліковані дописи, і це може швидко стати досить повторюваним, коли ви переглядаєте дописи. На щастя, у WordPress є функція для цього в тому, як він упорядковує публікації; у «Порядок і порядок за параметрами» ми знаходимо:

Нарешті, ми хочемо запитувати дописи, які входять до тих самих категорій, що й допис, у якому ми перебуваємо. Для цього нам потрібно спочатку, перед аргументами запиту, отримати категорії для єдиної публікації, на якій ми знаходимося. У «Параметрах категорії» ми бачимо, що ми можемо надати масив ідентифікаторів категорій для category__in. На щастя, WordPress має функцію отримання ідентифікаторів категорій для публікації; wp_get_post_categories()який ми можемо використовувати безпосередньо як значення параметра. Ідеально!

Ось останній запит і його аргументи:

Оновіть, і ви побачите 3 дописи, перелічені внизу єдиного перегляду. Оновіть кілька разів, щоб побачити, що вони змінюються, оскільки ми наказали WordPress рандомізувати їх. Примітка. Якщо у вас менше 3 публікацій в одній категорії, ви отримаєте менше 3 публікацій.

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

Джерело запису: awhitepixel.com

Цей веб -сайт використовує файли cookie, щоб покращити ваш досвід. Ми припустимо, що з цим все гаразд, але ви можете відмовитися, якщо захочете. Прийняти Читати далі