get_preview_post_link()
云策文档标注
概述
get_preview_post_link() 函数用于获取文章预览的 URL,支持附加查询参数和自定义基础链接。它基于文章对象生成预览链接,并可通过过滤器进行修改。
关键要点
- 函数返回文章预览的 URL,若文章不存在则返回 null。
- 接受三个参数:$post(文章 ID 或 WP_Post 对象,默认 null)、$query_args(附加查询参数数组,默认空数组)、$preview_link(自定义基础预览链接,默认空)。
- 内部使用 get_post() 获取文章对象,检查文章类型是否可查看,并添加 preview=true 参数。
- 提供 'preview_post_link' 过滤器,允许开发者修改预览链接。
- 相关函数包括 is_post_type_viewable()、set_url_scheme()、add_query_arg() 等。
代码示例
function get_preview_post_link( $post = null, $query_args = array(), $preview_link = '' ) {
$post = get_post( $post );
if ( ! $post ) {
return;
}
$post_type_object = get_post_type_object( $post->post_type );
if ( is_post_type_viewable( $post_type_object ) ) {
if ( ! $preview_link ) {
$preview_link = set_url_scheme( get_permalink( $post ) );
}
$query_args['preview'] = 'true';
$preview_link = add_query_arg( $query_args, $preview_link );
}
/**
* Filters the URL used for a post preview.
*
* @since 2.0.5
* @since 4.0.0 Added the `$post` parameter.
*
* @param string $preview_link URL used for the post preview.
* @param WP_Post $post Post object.
*/
return apply_filters( 'preview_post_link', $preview_link, $post );
}注意事项
- 函数自 WordPress 4.4.0 版本引入。
- 在调用前需确保文章对象有效,否则可能返回 null。
- 使用 'preview_post_link' 过滤器时,注意参数顺序和类型。
原文内容
Retrieves the URL used for the post preview.
Description
Allows additional query args to be appended.
Parameters
$postint|WP_Postoptional-
Post ID or
WP_Postobject. Defaults to global$post.Default:
null $query_argsarrayoptional-
Array of additional query args to be appended to the link.
Default:
array() $preview_linkstringoptional-
Base preview link to be used if it should differ from the post permalink. Default empty.
Source
function get_preview_post_link( $post = null, $query_args = array(), $preview_link = '' ) {
$post = get_post( $post );
if ( ! $post ) {
return;
}
$post_type_object = get_post_type_object( $post->post_type );
if ( is_post_type_viewable( $post_type_object ) ) {
if ( ! $preview_link ) {
$preview_link = set_url_scheme( get_permalink( $post ) );
}
$query_args['preview'] = 'true';
$preview_link = add_query_arg( $query_args, $preview_link );
}
/**
* Filters the URL used for a post preview.
*
* @since 2.0.5
* @since 4.0.0 Added the `$post` parameter.
*
* @param string $preview_link URL used for the post preview.
* @param WP_Post $post Post object.
*/
return apply_filters( 'preview_post_link', $preview_link, $post );
}
Hooks
- apply_filters( ‘preview_post_link’, string $preview_link, WP_Post $post )
-
Filters the URL used for a post preview.
Changelog
| Version | Description |
|---|---|
| 4.4.0 | Introduced. |