GET_POST_PERMALINK和GET_PERMALINK有什么不同?

时间:2016-11-17 作者:Michelle

我已经阅读了get_post_permalink()get_permalink() 不明白两者之间的区别。可能是因为我不明白$leavename$sample 参数。有人能解释这些吗?什么时候一个函数比另一个更有用?谢谢

2 个回复
SO网友:kaiser

这个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(), 只有当你在一个网站上工作并且不打算发布你的代码,或者如果你正在编写一个只针对重写内容的插件,那么就使用上面的通用过滤器。否则,您将取消每个主题作者的努力,并开始回调优先级竞赛。

SO网友:Benoti

其他人肯定会比我解释得更好。因为我只使用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) );
为开发人员发现链接的重写段塞非常有用(但我认为有更好的方法)

希望有人能提供更多细节。

相关推荐

Force pretty permalinks?

我正在构建一个插件,该插件将用于单个站点,并依赖于add_rewrite_rule 要工作,需要打开永久链接。打开它们并不困难,因为它只是一个站点,但我担心其中一个管理员可能会在不知道自己在做什么的情况下关闭它,并破坏该站点。如何以编程方式强制保持漂亮的永久链接?