Intereting Posts

Почему WP_Post не содержит постоянной ссылки?

Когда я делаю что-то вроде:

$prevPost = get_previous_post(); 

Тогда я могу:

 $prevPost->post_title; $prevPost->post_content; ... 

Почему я не могу получить постоянную ссылку?

 $prevPost->post_url; // NULL $prevPost->post_permalink; // NULL 

Очевидно, что, как указано в кодексе , этот класс не обладает этими свойствами. Однако представляется логичным, чтобы URL-адрес сообщения был включен в сообщение . Почему это не так?

Чтобы получить постоянную ссылку, мне нужно сделать:

 get_permalink($prevPost); 

Но тогда я не могу сделать что-то подобное, чтобы получить название:

 get_title($prevPost); 

Вопросов

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

  2. Существуют ли какие-либо другие типы данных, которые разделяют эти несоответствия? Кто они такие?

Solutions Collecting From Web of "Почему WP_Post не содержит постоянной ссылки?"

WP_Post является представлением сообщения, поскольку он существует в базе данных, а постоянная ссылка не сохраняется в базе данных.

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

Но тогда я не могу сделать что-то подобное, чтобы получить название:

get_title ($ prevPost);

Ты можешь

get_the_title($prevPost);

Для согласованности вы также можете:

get_the_permalink($prevPost);

Хотя можно получить доступ к постсодержащему содержимому непосредственно из объекта post, вы не должны этого делать. Все данные должны быть доступны через функции API-заголовки, контент и т. Д., Поэтому будут применяться все применимые фильтры. Доступ к данным напрямую нарушит форматирование и многие функции плагина.