3

スキーマに基づいて、Wordpress Rest API v2 から投稿のリストを返すことは可能ですか:

スキーマのリスト: http://v2.wp-api.org/reference/posts/

スティッキー フィールドでフィルタリングしたいのですが、残りのフィールドについても同じことが言えます。

これまでのところ、私は持っています:

/wp-json/wp/v2/posts?filter[sticky]=true
/wp-json/wp/v2/posts?filter[sticky]=1

どちらも標準エンドポイントと同じ応答を返します。

/wp-json/wp/v2/posts

メタまたはカスタム分類法でソートする方法を詳しく説明している他の資料を読んだことがありますが、それがこれと同じだとは思いません。

4

2 に答える 2

1

ドキュメントを読み、WP-API Github リポジトリで問題を調べて投稿した後filter[ignore_sticky_posts]、期待される並べ替え動作を切り替える必要があることが明らかになりましたfilter[ignore_sticky_posts]=true

ただし、現在 WP APIにはfilter[ignore_sticky_posts]フラグを使用できないバグがあります。

これを修正する最善の方法は、独自のカスタム エンドポイントを作成して、データベース内のすべての固定投稿のデータまたは ID を取得することです。このスレッドWP-API ドキュメントで説明されているコードを見ると、次のコードを に追加するとうまくいくと思いますfunctions.php

// Sticky posts in REST - https://github.com/WP-API/WP-API/issues/2210
function get_sticky_posts() {
    $posts = get_posts(
        array(
            'post__in' => get_option('sticky_posts')
        )
    );

    if (empty($posts)) {
        return null;
    }

    return $posts;
}
add_action( 'rest_api_init', function () {
    register_rest_route( 'THEME_NAME/v1', '/sticky', array(
        'methods' => 'GET',
        'callback' => 'get_sticky_posts',
    ));
});

GET /wp-json/THEME_NAME/v1/stickyの場合、すべてのスティッキー投稿の配列を取得する必要があります。

これが役立つことを願っています。

于 2016-02-02T01:59:39.680 に答える
0

Laust Deleuran の回答 (Laust に感謝します!) に加えてembeddedREST-api.

これは「最もクリーンな」ソリューションではないかもしれませんが、wp-jsonの機能を十分に活用できます。


function get_sticky_posts(WP_REST_Request $request) {

    $request['filter'] = [
        'post__in' => get_option('sticky_posts')
    ];

    $response = new WP_REST_Posts_Controller('post');
    $posts = $response->get_items($request);

    return $posts;
}

add_action( 'rest_api_init', function () {
    register_rest_route( 'THEME_NAME/v1', '/sticky', array(
        'methods' => 'GET',
        'callback' => 'get_sticky_posts',
    ));
});

これにより、通常のクエリが応答するpostsのと同じようにスティッキーが出力されます。schema/wp-json/wp/v2/posts

于 2016-07-27T13:13:52.160 に答える