get_page_by_path()
Отримує запис за вказаним шляхом цієї сторінки: parent-page/sub-page . Результат кешується.
Можна вказати ярлик (ім’я, post_name, slug) для не деревоподібних типів записів. Тобто. так можна отримати пост на ім’я.
Можна вказати з яким типом запису працювати за промовчанням page
.
Для деревоподібних типів записів у перший параметр потрібно вказати повний шлях! Наприклад, якщо вказати тільки slug і це дочірня сторінка, функція не знайде сторінку. Наприклад, запис такої URL /parent_name/child_name
, якщо вказати тільки ім’я child_name
, то функція не знайде пост.
Ця функція є основою розпізнавання поточного запиту для постійних сторінок з урахуванням ЧПУ: запитів виду: index.php?pagename=parent-page/sub-page
.
Щоб отримати запис за заголовком, використовуйте get_page_by_title()
(повільно) | 50000 разів – 0.59 сек
(дуже швидко) |
PHP 7.1.2, WP 4.7.3
Хуків немає.
Повертає
WP_Post|Массив|null
.
- WP_Post або масив за успіху.
- null за помилки.
Використання
get_page_by_path ($ page_path, $ output, $ post_type);
-
$page_path
(рядок) (обов’язковий) -
Шлях сторінки, для не деревоподібних записів можна вказати ярлик (slug). Слеші
/
на кінцях зрізуються. -
$output
(рядок) В якому вигляді потрібно отримати результат:
- OBJECT – повертати як об’єкт;
- ARRAY_N – повертати як нумерований масив;
- ARRAY_A – повертати як асоціативний масив.
Типово: OBJECT
-
$post_type
(рядок/масив) Назва типу запису. Для сторінок це ‘page’.
- Якщо вказати кілька типів записів або один у масиві: [‘post’, ‘page’] або [‘post’] , то пошук буде вестися саме за вказаними типами записів.
- Якщо вказати тип запису у вигляді рядка, то до нього буде додано тип запису
attachment
.
За замовчуванням: ‘page’ (згодом стає ‘page, attachment’)
Приклади
#1 Отримаємо сторінку її шляхом
Припустимо, у нас є дочірня сторінка, до якої ми звертаємося за URL example.com/parent-page/sub-page
: parent-page/sub-page – це шлях сторінки. Тепер десь у коді отримаємо цю сторінку.
$page = get_page_by_path( 'parent-page/sub-page'); // або так $page = get_page_by_path('/parent-page/sub-page/'); print_r ($ page);
ВАЖЛИВО! Якщо просто вказати ім’я сторінки, то функція нічого не поверне
$page = get_page_by_path( 'sub-page'); //> NULL
Однак, якщо сторінка не дочірня, потрібно вказувати просто ім’я сторінки – ярлик (slug).
$page = get_page_by_path( 'page-name' ); //> WP_Post{...}
#2 Використання нових типів записів
Є новий тип запису, шлях до такого запису, зазвичай втілений назвою типу запису. Наприклад, тип запису називається car , URL конкретного запису: example.com/car/lada
. Щоб отримати такий запис, потрібно використовувати лише його ярлик:
// Правильний варіант $page = get_page_by_path('lada', OBJECT, 'car'); // НЕ правильний (нічого не поверне) $page = get_page_by_path('car/lada', OBJECT, 'car');
Авто-додавання типу attachment
// запит буде: post_type IN ( 'car', 'attachment' ) $page = get_page_by_path('lada', OBJECT, 'car'); // запит буде: post_type IN ( 'car') $page = get_page_by_path( 'lada', OBJECT, ['car'] );
Отримання останній частині шляху
Щоб отримати останню частину шляху можна використовувати функції basename() і untrailingslashit() :
$page_path = 'car/lada/'; $post_name = basename( untrailingslashit( $page_path ) ); $page = get_page_by_path( $post_name , OBJECT, 'car');
нотатки
- Global. wpdb. $wpdb WordPress database abstraction object.
список змін
З версії 2.1.0 | Введено. |