web-dev-qa-db-ja.com

最新のWordpress RESTful APIでカスタム分類を使ってカスタム投稿タイプをフィルタする方法を教えてください。

私は私のウェブサイト上でclockというカスタム投稿タイプとclock_categoryという分類法を持っています。それはうまく機能しており、すべてのクロックはRESTエンドポイントからアクセスできます https://myapp.dev/wp-json/wp/v2/clock

しかし、私は時計のカテゴリでそれらをフィルタリングする方法がわからない、私は木で作られているすべての時計を取得したいと言う

私は別のURLを試してみましたが、どれも動いていないようです https://myapp.dev/wp-json/wp/v2/clock?clock_category=woodhttps://myapp.dev/wp-json/wp/v2/clock?clock_category = 10

などなど。私が得たのは完全な結果セットだけでした。

これがコードです

<?php
add_action( 'init', 'clock' );

function clock() {
    $labels = array(
        "name" => __( 'Clock', 'mywp' ),
        "singular_name" => __( 'clock', 'mywp' ),
        "menu_name" => __( 'Clock', 'mywp' ),
        "all_items" => __( 'All Clock', 'mywp' ),
        "add_new" => __( 'Add New Clock', 'mywp' ),
        "add_new_item" => __( 'Add New Clock', 'mywp' ),
        "edit_item" => __( 'Edit Clock', 'mywp' ),
        "new_item" => __( 'New Clock', 'mywp' ),
        "view_item" => __( 'View Clock', 'mywp' ),
        "search_items" => __( 'Search Clock', 'mywp' ),
        "not_found" => __( 'No Clock Found', 'mywp' ),
        "not_found_in_trash" => __( 'No Clock found in trash', 'mywp' ),
        "parent_item_colon" => __( 'Parent Clock', 'mywp' ),
        "featured_image" => __( 'Feature Image for Clock', 'mywp' ),
        "set_featured_image" => __( 'Set featured Clock image', 'mywp' ),
        "remove_featured_image" => __( 'Remove featured image for Clock', 'mywp' ),
        "use_featured_image" => __( 'Use featured image for Clock', 'mywp' ),
        "archives" => __( 'Clock archives', 'mywp' ),
        "insert_into_item" => __( 'Insert into Clock', 'mywp' ),
        "uploaded_to_this_item" => __( 'Uploaded to this Clock', 'mywp' ),
        "items_list_navigation" => __( 'Clock list navigation', 'mywp' ),
        "items_list" => __( 'Clock List', 'mywp' ),
        "parent_item_colon" => __( 'Parent Clock', 'mywp' ),
        );

$args = array(
    "label" => __( 'Clock', 'mywp' ),
    "labels" => $labels,
    "description" => "Clock",
    "public" => true,
    "publicly_queryable" => true,
    "show_ui" => true,
    "show_in_rest" => true,
    "rest_base" => "clock",
    "has_archive" => false,
    "show_in_menu" => true,
            "exclude_from_search" => false,
    "capability_type" => "post",
    "map_meta_cap" => true,
    "hierarchical" => false,
    "rewrite" => array( "slug" => "clock", "with_front" => true ),
    "query_var" => true,

    "supports" => array( "title", "editor", "thumbnail", "custom-fields", "page-attributes", "post-formats" ),      
    "taxonomies" => array( ),
        );
register_post_type( "clock", $args );

}

add_action( 'init', 'create_clock_tax' );

function create_clock_tax() {
    register_taxonomy(
        'clock_category',
        'clock',
        array(
            'label' => __( 'Clock Category' ),
            'rewrite' => array( 'slug' => 'clock_category' ),
            'hierarchical' => true,
        )
    );
}

誰かが私を助けてくれることを願っています。私は5時間これを解決しようとしましたが、何も働いていないようです。

3
user3407278

/wp/v2/clockエンドポイントの引数をここでチェックすることができます。

https://myapp.dev/wp-json/wp/v2/

カスタムの'show_in_rest' => true,分類法を登録するときにclock_category引数を追加すると、このGET/POST引数のサポートが追加されます。

clock_category: {
    required: false,
    default: [ ],
    description: "Limit result set to all items that have the 
        specified term assigned in the clock_category taxonomy.",
    type: "array",
    items: {
        type: "integer"
    }
},

そしてこのGET引数:

clock_category_exclude: {
    required: false,
    default: [ ],
    description: "Limit result set to all items except those that have the 
        specified term assigned in the clock_category taxonomy.",
    type: "array",
    items: {
        type: "integer"
    }
}

/wp/v2/clock_categoryエンドポイントも追加されます。

そのため、単一のクロックカテゴリIDでクロックポストをフィルタリングするには、次の手順に従います。

https://myapp.dev/wp-json/wp/v2/clock?clock_category=10

または複数のクロックカテゴリIDによって:

https://myapp.dev/wp-json/wp/v2/clock?clock_category=10,11,12

単一のカテゴリIDから除外するには

https://myapp.dev/wp-json/wp/v2/clock?clock_category_exclude=13

または複数のクロックカテゴリIDから除外します。

https://myapp.dev/wp-json/wp/v2/clock?clock_category_exclude=13,14
2
birgire