函数文档

rest_get_route_for_post()

💡 云策文档标注

概述

rest_get_route_for_post() 函数用于获取文章的 REST API 路由路径。它接受文章 ID 或 WP_Post 对象作为参数,返回带前导斜杠的路由字符串,若无路由则返回空字符串。

关键要点

  • 参数:$post(必需),可以是整数(文章 ID)或 WP_Post 对象。
  • 返回值:字符串,表示文章的路由路径(如 /wp/v2/posts/123),若无路由则返回空字符串。
  • 内部逻辑:通过 get_post() 获取文章对象,调用 rest_get_route_for_post_type_items() 获取文章类型的路由,然后拼接文章 ID。
  • 过滤器:提供 rest_route_for_post 过滤器,允许开发者自定义路由路径。
  • 相关函数:rest_get_route_for_post_type_items()、apply_filters()、get_post()。
  • 引入版本:WordPress 5.5.0。

代码示例

function rest_get_route_for_post( $post ) {
    $post = get_post( $post );

    if ( ! $post instanceof WP_Post ) {
        return '';
    }

    $post_type_route = rest_get_route_for_post_type_items( $post->post_type );
    if ( ! $post_type_route ) {
        return '';
    }

    $route = sprintf( '%s/%d', $post_type_route, $post->ID );

    /**
     * Filters the REST API route for a post.
     *
     * @since 5.5.0
     *
     * @param string  $route The route path.
     * @param WP_Post $post  The post object.
     */
    return apply_filters( 'rest_route_for_post', $route, $post );
}

📄 原文内容

Gets the REST API route for a post.

Parameters

$postint|WP_Postrequired
Post ID or post object.

Return

string The route path with a leading slash for the given post, or an empty string if there is not a route.

Source

function rest_get_route_for_post( $post ) {
	$post = get_post( $post );

	if ( ! $post instanceof WP_Post ) {
		return '';
	}

	$post_type_route = rest_get_route_for_post_type_items( $post->post_type );
	if ( ! $post_type_route ) {
		return '';
	}

	$route = sprintf( '%s/%d', $post_type_route, $post->ID );

	/**
	 * Filters the REST API route for a post.
	 *
	 * @since 5.5.0
	 *
	 * @param string  $route The route path.
	 * @param WP_Post $post  The post object.
	 */
	return apply_filters( 'rest_route_for_post', $route, $post );
}

Hooks

apply_filters( ‘rest_route_for_post’, string $route, WP_Post $post )

Filters the REST API route for a post.

Changelog

Version Description
5.5.0 Introduced.