为什么WP_Post不包含其永久链接?

时间:2017-06-30 作者:dodov

当我做以下事情时:

$prevPost = get_previous_post();
然后我可以做:

$prevPost->post_title;
$prevPost->post_content;
...
为什么我不能得到permalink?

$prevPost->post_url; // NULL
$prevPost->post_permalink; // NULL
显然,正如codex, 该类没有这些属性。然而,将帖子URL作为帖子的一部分似乎是合乎逻辑的。为什么不是这样?

要获得永久链接,我需要执行以下操作:

get_permalink($prevPost);
但是,我不能这样做来获得这个头衔:

get_title($prevPost);
这些不一致的原因是什么?为什么我必须通过post对象和其他对象获取一些post数据get 功能?我对WordPress比较陌生,所以如果能写一篇文章来解释这一切,我将不胜感激。

是否有其他类型的数据共享这些不一致?它们是什么?

2 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

WP\\u Post是Post在数据库中的表示形式,permalink不存储在数据库中。

它没有存储在数据库中,因为它不是帖子的属性。永久链接由站点地址、永久链接结构和帖子的slug决定。想象一下,如果更新站点上的permalink结构需要更新数据库中的每个帖子。

但是,我不能这样做来获得这个头衔:

get\\u标题($prevPost);

你可以

get_the_title($prevPost);

为了保持一致性,您还可以:

get_the_permalink($prevPost);

SO网友:Milo

虽然可以直接从post对象访问post内容,但不应该这样做。所有数据都应通过API函数(标题、内容等)访问,因此将应用所有适用的过滤器。直接访问数据将破坏格式和许多插件功能。

结束

相关推荐

Get posts by birthday

我正在开发一个博客网站,它是一个传记目录,我如何才能获得特定出生日期的帖子,以及如何获取今天出生日期的帖子。例如:在5月17日,may想要为5月17日出生的人展示传记帖子。并于5月18日为5月18日出生的人张贴传记。我附上了一张图片,还链接了一个具有类似功能的网站,我想知道如何做到这一点。 http://frostsnow.com/