我已经阅读了get_post_permalink()
和get_permalink()
不明白两者之间的区别。可能是因为我不明白$leavename
和$sample
参数。有人能解释这些吗?什么时候一个函数比另一个更有用?谢谢
GET_POST_PERMALINK和GET_PERMALINK有什么不同?
这个get_post_permalink()
funciton根据帖子的“永久”链接以及您的自定义重写规则获取帖子的链接?p=123
例如,进入。my-beautiful-sunday-diary
. 这个get_permalink()
功能更“基本”,但在功能上也更通用:对于post_type
属于
page
, 它使用get_page_link()
attachment
, 它使用get_attachment_link()
post
, 它使用get_post_link()
terms喜欢category
和约会permalinks。最后,它要么替换home_url()
如果没有指定自定义重写规则,则只返回原始链接。最后,它附加了一个通用过滤器:
希望这能澄清问题。/** * Filters the permalink for a post. * * Only applies to posts with post_type of \'post\'. * * @since 1.5.0 * * @param string $permalink The post\'s permalink. * @param WP_Post $post The post in question. * @param bool $leavename Whether to keep the post name. */ return apply_filters( \'post_link\', $permalink, $post, $leavename );
ProTip:如果您需要更改插件中的peramlinks,请使用插件中的特定过滤器
get_attachment_link()
,get_post_link()
, 只有当你在一个网站上工作并且不打算发布你的代码,或者如果你正在编写一个只针对重写内容的插件,那么就使用上面的通用过滤器。否则,您将取消每个主题作者的努力,并开始回调优先级竞赛。
其他人肯定会比我解释得更好。因为我只使用get_permalink()
它们大多相似,因为它们都返回后permalink,get_permalink
使用get_post_permalink
(对于post\\u类型)并可以进行筛选。它还将用于检索页面链接、附件。。。哪里get_post_permalink
似乎专注于post\\u类型。
编辑:
关于使用$leavename
, 根据链接的帖子类型,它返回的是permastructure slug,因此看起来不需要前端(甚至在后端)使用。
echo get_permalink(123, true);
返回链接的重写架构,可以使用帖子:
http://example.com/%postname%/
A产品: http://example.com/%product%/
$LEVENAME在$rewritecode数组的get\\u permalink()中使用,并作为第一个参数放在函数行221中$permalink = home_url( str_replace($rewritecode, $rewritereplace, $permalink) );
为开发人员发现链接的重写段塞非常有用(但我认为有更好的方法)希望有人能提供更多细节。