Получение слага записи всегда зависит от того, находитесь ли вы в цикле или нет.

Пример 1: get_queried_object()

Проверить какой объект цикла сейчас установлен можно, например с помощью функции get_queried_object()

vardump(get_queried_object()) // печатаем данные
$post_id = get_queried_object()->ID // получаем ID
$post_slug = get_queried_object()->post_name // получаем slug

Функция vardump() не является функцией ядра WordPress, она служит для удобной печати переменных, подробнее тут.

Если вы выводите посты на странице категории или таксономии, функция get_queried_object() может отдать вам данные этой категории или таксономии.

Чтобы получить данные именно поста, вы должны находиться в цикле wp_query или get_posts() c установленной переменной setup_postdata(). Для wp_query она устанавливается автоматически, в то время как для get_posts() вы должны установить ее самостоятельно.

Пример 2: get_post_field()

Еще одна удобная функция — get_post_field(). С ее помощью так же можно получить любое необходимое вам поле данных поста.

Она принимает три параметра. Первый — название поля, данные которого нужно получить. Второй — ID поста, который берется из текущего цикла и является не обязательным. Третий — необязательный фильтр получаемого поля. Синтаксис:

get_post_field( $field, $post, $context ); // общий синтаксис
$post_slug = get_post_field( 'post_name', get_the_ID() ); // получаем slug
$post_slug = get_post_field( 'post_name' ); // тоже самое, указание ID не обязательно

Пример 3: глобальная переменная $post

Вы можете установить глобальную переменную $post, если она не установлена, чтобы получить из нее необходимые данные. Синтаксис:

global $post; // устанавливаем переменную
vardump($post) // печатаем данные
$post_slug = $post->post_name; // получаем slug

Пример 4: вне цикла

Для всех случаев, когда вы находитесь вне нужного вам цикла, получить слаг конкретной записи вы можете зная его ID с помощью функции get_post()

$post_id = 10; // ID поста
$post = get_post($post_id); // получаем данные
vardump($post) // печатаем данные
$post_slug = $post->post_name; // получаем slug

Пример 5: с помощью регулярки

Вы можете получить слаг из ссылки с помощью регулярного выражения.

$link = 'https://zolin.digital/wordpress-examples/how-to-get-post-slug-from-post-in-wordpress/';

$regexp = "/\/(?<slug>[\w\d\-]+)[\/]?$/";
$reglink = preg_match($regexp, $link, $match_link);
$post_slug = $match_link['slug'];
vardump($post_slug); // печатает how-to-get-post-slug-from-post-in-wordpress

В этом примере мы находим строку, состоящую из букв, цифр и дефиса до ближайшего знака слеш (/). Наличие переданного закрывающего слеша в строку переменной $link не повлияет на результат функции.

Разумеется, если переданныя ссылка будет содержать пагинацию, гет-запросы или еще что-то, регулярное выражение из этого примера не сработает.

Похожие посты

Как сделать webp без плагинов в WordPress

WebP — это современный формат сжатия изображений без потери качества, который напрямую влияет на скорость загрузки сайта. Конвертирование изображений из jpg и png в формат webp может дать существенный прирост в баллах по google page speed. Формат webp поддерживается большинством современных браузеров. Вы без труда можете найти плагины, которые помогут вам автоматически конвертировать изображения, добавленные…

Как вывести все изображения из произвольной папки без плагинов в WordPress

При разработке своих сайтов вам может понадобиться вывести галереи изображений из произвольных папок без их загрузки в библиотеку. Давайте рассмотрим пример, как это сделать с помощью шорткода: Использование: [folder-gallery path=’/data/images/’] Как видите, функция принимает путь до искомой папки (обязательно с открывающим и закрывающим слешем), в функции устанавливаются разрешенные типы изображений и формируется вывод с классами…

Как изменить выравнивание и размер изображения при вставке в редактор WordPress

При добавлении изображения в пост, по умолчанию WordPress вставляет его в размере medium и без выравнивания. Чтобы при загрузке картинки ей прописывалось выравнивание по центру и полный размер, вы можете использовать такой код:

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 5 / 5. Количество оценок: 1

Оценок пока нет. Поставьте оценку первым.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *