Могут ли записи иметь родительские элементы?

13 дек. 2011 г., 04:53:54
Просмотры: 42.4K
Голосов: 17

Предполагается ли наличие родительских элементов у записей? Если да, то что означает для записи иметь родительский элемент?

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

0
Все ответы на вопрос 5
4
16

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

Что касается того, где это реализовано: родительский элемент записи хранится в столбце "post_parent" таблицы "wp_posts". Это не строго ограничено, просто стандартный интерфейс не дает вам возможности установить это значение, и стандартный код WordPress не использует это значение для записей. Тем не менее, создать пользовательский тип записи с родительскими элементами не составит большого труда.

13 дек. 2011 г. 06:38:22
Комментарии

Также обратите внимание, что медиафайлы используют столбец post_parent для идентификации страницы/записи (включая пользовательские типы записей), к которой они прикреплены.

David Gard David Gard
2 апр. 2014 г. 14:40:22

@DavidGard Вы правы. Но я думаю, что функциональность не пострадает, если мы назначим post_parent другому "post_id", так как иначе он был бы равен 0.

Stranger Stranger
1 февр. 2017 г. 14:23:17

что делать, если я хочу, чтобы запись 1 и запись 2 имели разных родителей (которыми являются страницы)

magnus magnus
29 авг. 2023 г. 14:29:36

@magnus Я преобразовал это в комментарий и разместил здесь, но я не знаю, кому именно вы пытались ответить. Порядок отображения сообщений определяется количеством голосов, а не временем публикации. Помните, что это не форум/доска обсуждений. Если у вас есть вопрос, лучше задать его, нажав кнопку "Задать вопрос" в правом верхнем углу. Оставление вопросов в поле для ответов приведет к отправке сообщения на модерацию, и вас могут пометить как спам-бота.

Tom J Nowell Tom J Nowell
29 авг. 2023 г. 17:06:34
1
16

В WordPress есть встроенные "Страницы" (иерархические, с возможностью задавать родителя) и "Записи" (не иерархические). Существуют и другие типы записей, но пока оставим их в стороне.

Если вопрос звучит так:

Могут ли записи быть иерархическими?

То ответ — Да,… вы можете иметь "записи" с иерархией. Но так как эта функция не встроена по умолчанию, вам придется зарегистрировать собственный Пользовательский тип записи — см. аргументы » hierarchical.

Такие "Записи" (или статьи, или как угодно…) будут тогда — если у них есть родительская запись — содержать ID родителя внутри своего объекта. Поэтому в цикле вы можете сделать следующее:

if ( have_posts )
{
    the_post();
    // и т.д.

    global $post;
    // получаем родителя: http://codex.wordpress.org/Function_Reference/get_post
    $parent = get_post( $post->post_parent );

    echo "<h2>{$post->post_title} является дочерней для {$parent->post_title}";

    // и т.д.
} // endif;
13 дек. 2011 г. 06:51:29
Комментарии

Превосходно справился с этим. Именно то, что я искал.

Paras Shah Paras Shah
3 янв. 2017 г. 13:29:31
0
-1

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

  1. Добавьте страницу и используйте её для размещения записей. "Лучший способ установить родительскую страницу для всех записей — через меню (Внешний вид → Настроить). Вы можете задать статическую страницу для главной страницы или страницы записей. Когда вы устанавливаете статическую страницу для записей, эта страница становится родительской для каждой отдельной записи блога."

  2. Измените структуру постоянных ссылок на /blog/%postname%, как упоминалось выше. "Предположим, вы хотите добавить 'blog' перед названием записи в URL. Убедитесь, что ярлык (slug) вашей страницы блога — 'blog'.

Затем перейдите в WP-админ-панель → Настройки → Постоянные ссылки и выберите последний вариант «Произвольная структура», добавив следующее:

/blog/%postname%/

и сохраните изменения. Это будет применено только к странице блога, другие страницы не будут отображать 'blog' как родительский элемент."

Таким образом, Google увидит иерархию в карте сайта как domain.com/страница/запись (в таком порядке) и также найдет контент в том же месте. То же самое увидят и пользователи. Задача выполнена.

2 сент. 2015 г. 16:36:41
0
-4

Предположим, вы хотите добавить префикс "blog" перед URL записи. Убедитесь, что slug (ярлык) вашей страницы блога — "blog".

Затем перейдите в Административную панель WordPress > Настройки > Постоянные ссылки и выберите последний вариант "Произвольная структура". Добавьте следующий код:

/blog/%postname%/

и сохраните изменения.

Это изменение будет применено только к странице блога, другие страницы не будут отображать "blog" как родительский элемент.

29 авг. 2014 г. 00:26:12
4
-6

Я знаю, что это старая запись. Однако ни один из этих ответов не является верным, и я хотел поделиться решением, которое использовал для решения данной проблемы. Лучший способ задать родительскую страницу для всех ваших записей — через меню (Внешний вид → Настроить). Вы можете установить статическую страницу для главной страницы или страницы записей. Когда вы устанавливаете статическую страницу для записей, она становится родительской для каждой отдельной записи блога.

2 апр. 2014 г. 13:31:14
Комментарии

Это не родительская страница — это шаблон, содержащий архив записей. Настройка такого шаблона не делает записи иерархическими.

kaiser kaiser
2 апр. 2014 г. 14:24:33

Как это не родительская страница? Это статическая страница (которая, кстати, не обязательно должна быть архивом — какому бы шаблону страницы вы её ни назначили, там может быть что угодно), и при такой настройке ваши URL-адреса следуют этой иерархии, как и хлебные крошки на сайте. Это минутное исправление, которое позволяет назначить статическую страницу родителем записей. В его вопросе вообще НИ СЛОВА не сказано о том, что записи должны быть иерархическими. Может, вы объясните, почему это решение считается плохой практикой?

LateToTheParty LateToTheParty
6 апр. 2014 г. 18:11:50

"Должны ли записи иметь родителя" — это то же самое, что "Являются ли записи иерархическими". Шаблон может содержать что угодно, но сам факт, что в нём есть цикл, который выводит и отображает архив записей, не (а) делает страницу их родителем (это просто место, где случайно находится цикл) и (б) не делает встроенный тип записи "post" иерархическим или, другими словами, не назначает родителя. Но да, вы можете выводить записи в цикле по определённым критериям (например, по общей дочерней категории).

kaiser kaiser
6 апр. 2014 г. 19:19:16

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

kaiser kaiser
6 апр. 2014 г. 19:21:57