我已经阅读了文档,get_post_permalink()
并且get_permalink()
不了解两者之间的区别。可能是因为我不了解$leavename
and $sample
参数的目的。谁能解释这些,何时一个功能比另一个更有用?谢谢!
我已经阅读了文档,get_post_permalink()
并且get_permalink()
不了解两者之间的区别。可能是因为我不了解$leavename
and $sample
参数的目的。谁能解释这些,何时一个功能比另一个更有用?谢谢!
Answers:
该get_post_permalink()
功能可按获取的链接,这取决于它的“永久”链接加上您的自定义重写规则改变后?p=123
成如my-beautiful-sunday-diary
。该get_permalink()
功能是更“基本”,但它做什么,以及更灵活:对于post_type
中
page
, 它用 get_page_link()
attachment
, 它用 get_attachment_link()
post
, 它用 get_post_link()
它还可以处理term
s category
和日期永久链接的显示。最后,home_url()
如果没有分配自定义重写规则,它要么替换您的“ pretty”链接,要么仅返回原始链接。最后,它附加一个通用过滤器:
/**
* 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:如果您需要更改插件中的链接,请在get_attachment_link()
,get_post_link()
等内使用特定的过滤器。仅当您在单个站点上工作且不打算分发代码时,或者正在编写仅针对重写的插件时,的东西,然后使用上面的通用过滤器。否则,您将打击每个主题作者的工作,并开始进行回调优先级竞赛。
肯定有人会比我解释得更好。因为我只用get_permalink()
它们大多数都相似,因为它们都返回post永久链接,get_permalink
使用get_post_permalink
(用于post_types)并且可以过滤。它还将用于检索页面链接,附件... get_post_permalink
似乎专用于post_types。
编辑:
关于的使用$leavename
,看起来好像不需要前端(甚至在后端)使用,因为它根据链接的发布类型返回了永久结构块。
echo get_permalink(123, true);
返回链接的重写架构,可以使用
一个帖子:
http://example.com/%postname%/
一个产品:
http://example.com/%product%/
$ leavename用于$ rewritecode数组的get_permalink()中,并作为第一个参数放在函数行221中
$permalink = home_url( str_replace($rewritecode, $rewritereplace, $permalink) );
为开发人员的链接发现重写段可能很有用(但我认为有更好的方法可以做到这一点)
希望有人能提供更多细节。
$leavename
用于admin,以获取永久链接结构,以便它可以生成用于编辑帖子的条目的接口。