簡體   English   中英

Wordpress REST API端點

[英]Wordpress REST API Endpoint

我正在寫一個Angular WP主題,我正在嘗試減少帖子頁面上的HTTP請求數量。

在帖子頁面上,我想列出所有不同的分類,最近的帖子,獲取特色圖片和其他一些東西。 我可以使用REST API v2插件執行所有這些操作,但這是很多請求。

我希望為我的主題創建一個端點,解析post slug並在一個請求中將其全部恢復,但我似乎無法弄明白。

我正在考慮使用查詢字符串來獲取slug。 以下是我用來測試它的內容:

function app_get_post($data) {
    global $wp_query;

    return [
        'test' => $data,
        'vars' => $wp_query->query_vars
    ];
}

add_action( 'rest_api_init', function () {
    register_rest_route( 'app/v1', '/post', [
        'methods' => 'GET',
        'callback' => 'app_get_post',
    ] );
} );

這是它產生的東西:

{
test: { },
vars: [ ]
}

我嘗試使用query_vars鈎子添加查詢var,但它也不起作用。

有什么建議? 我是以正確的方式來做這件事的嗎?

你應該傳遞參數

function app_get_post($data) {

    return [
        'test' => $data["postid"]        
    ];
}

add_action( 'rest_api_init', function () {
    register_rest_route( 'app/v1', '/post/(?P<postid>\d+)', [
        'methods' => 'GET',
        'callback' => 'app_get_post',
    ] );
} )

例如,請參閱http://wiki.workassis.com/wordpress-create-rest-api/

所以我也在了解這一切,但尚未取得成功,但會提供我的研究方向。 我知道要進入自定義帖子類型,您需要將show_in_rest=true添加到register_post_type()數組或稍后掛鈎。

然而你的例子顯示了我猜的應該有show_in_rest注冊的帖子的使用...我決定檢查wp-includes / post.php並且它不存在。

// ACCESSING A CPT FROM ANYWHERE (unable to add show_in_rest=true to the register_post_type() hook into it!)
// http://scottbolinger.com/custom-post-types-wp-api-v2/
function sb_add_cpts_to_api( $args, $post_type ) {
    if ( 'movie' === $post_type ) {
        $args['show_in_rest'] = true;
        $args['rest_base'] = 'movie';
        // $args['rest_controller_class'] = 'WP_REST_Posts_Controller';
    }
    return $args;
}
add_filter( 'register_post_type_args', 'sb_add_cpts_to_api', 10, 2 );

在這里你需要傳遞參數如下所示

//端點: http//wpdadd.com/wp-json/api/v1/getwp/ {parameter 1} / {parameter2}

register_rest_route( 'api', '/v1/getwp/(?P<param1>[a-z0-9\-]+)/(?P<param2>[a-z0-9\-]+)', array(
    'methods' => 'GET',
    'callback' => 'wpdaddStuff'

));

有關更多信息,請查看此示例http://wpdadd.com/create-custom-rest-api-wordpress/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM