Родитель для одиночного (single.php)

Вопрос или проблема

Возможно ли получить ID родительской страницы для одной страницы… Я имею в виду не страницу, а страницу, которая является is_single().

У меня есть страница, которая содержит несколько пользовательских постов, и когда я нажимаю на один из них, я попадаю на страницу этого элемента. Я хотел бы получить ссылку на родительскую страницу, с которой я пришел.

Для иерархического типа постов вы можете использовать $post->post_parent и get_permalink(), возможно, так:

<?php
global $post;
$parent_permalink = get_permalink( $post->post_parent );
?>
<a href="https://wordpress.stackexchange.com/questions/99483/<?php echo $parent_permalink; ?>">Родительский пост</a>

.

Ответ или решение

Вопрос о том, как получить ID родительской страницы для страницы одиночного поста, является важным аспектом для разработчиков WordPress, особенно в контексте иерархических типов записей. В данном ответе я подробно объясню, как это делается, предоставлю пример кода и объясню его функциональность.

Получение ID родительской страницы для одиночного поста

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

Для начала, убедитесь, что ваш кастомный пост типа настроен как иерархический. Это делается при регистрации типа поста с помощью параметра hierarchical => true.

Пример реализации

В вашем файле single.php, чтобы получить пермалинк родительской страницы, вы можете использовать следующий код:

<?php
// Получаем глобальный объект поста
global $post;

// Проверяем, является ли текущий пост иерархическим и у него есть родитель
if ($post->post_parent) {
    // Получаем пермалинк родительского поста
    $parent_permalink = get_permalink($post->post_parent);
    ?>
    <a href="<?php echo esc_url($parent_permalink); ?>">Родительский пост</a>
    <?php
} else {
    echo 'Нет родительского поста.';
}
?>

Объяснение кода

  1. Глобальный объект поста: Мы начинаем с получения глобального объекта $post, который содержит все данные о текущем посте, находящемся на странице.

  2. Проверка на наличие родителя: С помощью условия if ($post->post_parent) мы проверяем, есть ли у текущего поста родитель. Если post_parent имеет значение, это значит, что текущий пост является дочерним и мы можем получить информацию о родителе.

  3. Получение пермалинка родительского поста: Используя функцию get_permalink(), мы получаем URL родительского поста, передавая в нее ID родителя, который находится в $post->post_parent.

  4. Вывод ссылки на родительский пост: Если родитель существует, мы выводим ссылку на него, используя echo, и учитываем безопасность с помощью esc_url() для экранирования URL.

  5. Обработка случая без родителя: Если родителя нет, выводится сообщение о том, что родительский пост отсутствует.

Заключение

Данный подход позволяет вам динамически получать родительский пост для одиночной записи и выводить на него ссылку. Это полезно для создания связей между постами и улучшения навигации по вашему сайту. Убедитесь, что вы используете эту функциональность разумно, чтобы не усложнять пользовательский интерфейс и не запутывать пользователей.

Такой код будет полезен как для разработчиков, так и для технических специалистов, работающих с WordPress. Благодаря своей простоте и функциональности, он может стать незаменимым инструментом в вашем арсенале разработки сайтов на WordPress.

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

Капча загружается...