Может у постов есть родители?


13

Должны ли посты иметь родителей? Если так, что бы это значило для поста иметь родителя?

Кроме того, если существуют какие-либо ограничения для постов, имеющих родителей, то где это применяется? Не в БД, как я вижу.

Ответы:


15

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

Относительно того, где это необходимо: родительский элемент сообщения хранится в столбце «post_parent» в «wp_posts». На самом деле он не применяется как таковой, просто пользовательский интерфейс по умолчанию не дает вам возможности установить его, а WP-кодирование по умолчанию не использует это значение для сообщений. Хотя было бы не сложно создать собственный тип сообщений, чтобы иметь сообщения с родителями.


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

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

11

В Wp встроены «Страницы» (иерархические, разрешены родители) и «Посты» (неиерархические). Есть и другие типы сообщений, но давайте оставим это в стороне.

Если Q приводит к:

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

Тогда ответ - да , у вас могут быть «посты», которые являются иерархическими. Но так как они не встроены, вам придется зарегистрировать свой собственный тип записи - см. Иерархические аргументы ».

Такие «сообщения» (или статьи, что угодно,…) затем - в случае, если у них есть родительский пост - установят родительский идентификатор внутри своего объекта. Таким образом, в цикле вы можете сделать следующее:

if ( have_posts )
{
    the_post();
    // etc.

    global $post;
    // call parent: http://codex.wordpress.org/Function_Reference/get_post
    $parent = get_post( $post->post_parent );

    echo "<h2>{$post->post_title} is a child of {$parent->post_title}";

    // etc.
} // endif;

2
Прибил это отлично. Именно то, что я искал.
Парас Шах

-1

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

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

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

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

/ Блог /% postname% /

и сохранить изменения. Он будет применен только к вашей странице блога, на другой странице он не будет отображаться как родительский. "

Таким образом, Google видит иерархию в файлах сайта как domain.com/page/post (в таком порядке), а также находит содержимое в том же месте. Как и пользователи. Работа сделана.


-4

Предположим, что вы хотите добавить блог перед публикацией в URL, а затем убедитесь, что имя слаг-страницы вашей страницы блога - blog.

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

/blog/%postname%/

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

Он будет применен только к вашей странице блога, другая страница не будет отображать блог как родительский.


-6

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


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

Как это не родительская страница? Это статическая страница (которая, кстати, не обязательно должна быть архивом, какой бы шаблон страницы вы ни назначали для этой статической страницы, может иметь все, что вы хотите), и когда она настроена, ваши URL-адреса следуют этой иерархии, а также крошкам на сайте. Это 1-минутное исправление, позволяющее назначить статическую страницу родительским постом. Его вопрос НИЧЕГО не упоминает о том, что он был иерархическим. Возможно, вы могли бы просветить меня о том, как это решение будет плохой практикой?
LateToTheParty

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

Не поддавайтесь критике или разъяснению вашего вопроса или ответа. Это место, где это действительно должно происходить постоянно, чтобы лучшие ответы были успешными, и служить вики-библиотекой, куда можно пойти и мгновенно выяснить, как что-то сделать или получить как можно больше информации о том, как что-то работает. Мы даже призываем людей (таких как вы) комментировать и другие ответы. Имейте в виду, что я нигде не упомянул, что ваш ответ - плохая практика . Это верно во многих отношениях, просто утверждение, что оно делает тип поста иерархическим, не так.
Кайзер
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.