Вопрос или проблема
Я довольно новичок в WordPress и хотел бы узнать, могу ли я получить page id
с помощью его slug
. Это возможно, пожалуйста, дайте знать.
Используйте get_page_by_path($page_path)
:
$page = get_page_by_path('about');
echo get_the_title($page);
Это вернёт обычный объект поста.
Документация:
https://developer.wordpress.org/reference/functions/get_page_by_path/
https://developer.wordpress.org/reference/functions/get_the_title/
Я использую это …
function get_id_by_slug($page_slug) {
$page = get_page_by_path($page_slug);
if ($page) {
return $page->ID;
} else {
return null;
}
}
Надеюсь, это поможет кому-то.
Этот вопрос уже задавался и был отвечен на этом форуме. Я вставляю тот же код оттуда.
Используйте эту функцию, чтобы получить ID страницы.
function get_page_by_slug($page_slug, $output = OBJECT, $post_type="page" ) {
global $wpdb;
$page = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_name = %s AND post_type= %s AND post_status="publish"", $page_slug, $post_type ) );
если ( $page )
вернуть get_post($page, $output);
возвращает null;
}
Существует функция url_to_postid с версии WordPress v1.0.0 🙂 Эту задачу легче всего выполнить, используя эту функцию.
Когда страница является верхнеуровневой страницей, необходимо указать только slug.
например, url_to_postid('slug');
Когда страница находится на нижнем уровне иерархии (т.е. имеет родительскую), нужно добавить slug родителя, разделённый слэшем, следующим образом:
url_to_postid('parent-slug/child-slug');
Редактировать: если это возвращает 0, вы должны обновить постоянные ссылки (откройте страницу постоянных ссылок в админке WordPress) – это нужно сделать только один раз
У меня были проблемы с выбранным ответом, когда я пытался использовать код несколько раз на одной и той же странице. Он продолжал отображать содержимое всех моих страниц одновременно в каждом экземпляре. Поэтому я вернулся к размышлениям и придумал этот более простой подход, основанный на документации WordPress Codex:
<?php $query = new WP_Query( array( 'pagename' => 'about-me' ) );
while ( $query->have_posts() ) {
$query->the_post();
echo '<h2>'. get_the_title() .'</h2>';
the_content();
}
wp_reset_postdata();
?>
Возможно, это всё же будет полезно кому-то ;D
Много ответов здесь кажутся излишне сложными или не описывают, как именно получить ID страницы.
$page = get_page_by_path("your-page-slug");
если ($page) {
$page_id = $page->ID;
echo $page_id;
}
В приведённом выше описании мы назначили объект поста $page – как только у вас будет объект поста, вы сможете получить любую из описанных информаций здесь: https://codex.wordpress.org/Class_Reference/WP_Post
$page->ID
$page->post_status
$page->post_title
и многое другое
<?php function get_page_ID_by_slug( $slug ) {
$page = get_page_by_path( $slug );
если ( $page ) {
вернуть (int) $page->ID;
}
иначе {
вернуть null;
}
}
?>
Надеюсь, это предложение будет полезным кому-то.
Вы можете вставить ссылку WordPress в этот ID grabber.
Мне часто нужны IDs постов для удаления или исключения страниц в WordPress, поэтому я написал скрипт для этого и добавил его на свой сайт: https://www.basrh.com/id-grabber
.
Ответ или решение
Вопрос о том, как получить ID страницы WordPress, зная её slug (слаг), актуален для многих разработчиков и администраторов сайтов, особенно для тех, кто работает с автоматизацией задач или управлением контентом через программный код. WordPress предлагает несколько методов для решения этой задачи, включая функции API и стандартные инструменты.
Теория
Первым делом важно понять, что в контексте WordPress slug — это уникальный идентификатор, который система использует в URL-адресах для доступа к определенной странице или посту. ID страницы, в свою очередь, — это уникальный числовой идентификатор, необходимый для выполнения различных операций с содержимым, таких как редактирование, удаление или интеграция с другими плагинами.
WordPress предлагает несколько способов получения ID страницы по slug’у. Один из наиболее часто используемых методов — функция get_page_by_path()
. Она возвращает объект поста, если находит соответствие, что позволяет извлечь ID страницы или другие её свойства.
Пример
Ниже представлен пример функции, которая извлекает ID страницы, используя этот метод:
function get_page_ID_by_slug($slug) {
$page = get_page_by_path($slug);
if ($page) {
return (int) $page->ID;
} else {
return null;
}
}
Эта функция принимает на вход slug
страницы, использует метод get_page_by_path()
для поиска страницы по этому слагу и возвращает её ID. Если страница не найдена, функция вернет null
.
Кроме того, можно использовать SQL-запросы напрямую через объект $wpdb
для выполнения выборки напрямую из базы данных. Этот метод мощнее, но требует большего внимания к безопасности и оптимизации.
function get_page_by_slug($page_slug, $output = OBJECT, $post_type = "page") {
global $wpdb;
$page = $wpdb->get_var($wpdb->prepare(
"SELECT ID FROM $wpdb->posts WHERE post_name = %s AND post_type = %s AND post_status = 'publish'",
$page_slug, $post_type
));
if ($page) {
return get_post($page, $output);
}
return null;
}
Применение
Понимание того, как извлечь ID страницы, имеет несколько практических приложений:
-
Автоматизация содержимого: Вы можете программно управлять содержимым страниц, обновлять или удалять его на основе полученного ID.
-
Работа с плагинами: Некоторые плагины требуют указания ID страниц для правильной конфигурации и работы.
-
Оптимизация навигации: Используя ID, вы можете создавать динамические элементы интерфейса, такие как меню или ссылки, которые автоматически обновляются в зависимости от изменений в базе данных.
-
Интеграция с внешними сервисами: Автоматическая передача ID страницы в сторонние сервисы, такие как аналитика или маркетинговые платформы.
Рекомендации
- Производительность: При использовании SQL-запросов убедитесь, что они выполнены оптимально и не создают нагрузку на базу данных.
- Безопасность: Всегда используйте механизм подготовленных запросов для предотвращения SQL-инъекций.
- Совместимость: Уточняйте версию WordPress и состояние постоянных ссылок, так как некорректно настроенные пермалинки могут повлиять на работоспособность некоторых функций, например,
url_to_postid()
может вернуть 0, если пермалинки не были обновлены.
На основе вышеизложенного, можно заключить, что, понимая эти механизмы, вы сможете более эффективно управлять своими ресурсами на WordPress и внедрять более сложные и адаптивные сценарии взаимодействия с контентом.