it-swarm.com.de

Wie filtere ich benutzerdefinierte Beitragstypen nach benutzerdefinierter Taxonomie in der neuesten RESTful-API von Wordpress?

Ich habe auf meiner Website einen benutzerdefinierten Beitragstyp namens "clock" und eine Taxonomie namens "clock_category". Es funktioniert gut und auf alle Uhren kann vom REST -Endpunkt zugegriffen werden https://myapp.dev/wp-json/wp/v2/clock

Aber ich weiß nicht, wie ich sie nach der Uhrenkategorie filtern soll. Ich möchte alle Uhren aus Holz haben

Ich habe verschiedene URLs ausprobiert, aber keine davon scheint zu funktionieren https://myapp.dev/wp-json/wp/v2/clock?clock_category=woodhttps://myapp.dev/wp-json/wp/v2/clock? clock_category = 10

und viele mehr. Alles was ich bekam war die vollständige Ergebnismenge.

Hier ist der Code

<?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,
        )
    );
}

Hoffe, jemand hilft mir dabei. Ich habe versucht, dies für 5 Stunden zu lösen und nichts scheint zu funktionieren.

3
user3407278

Wir können die Argumente des /wp/v2/clock-Endpunkts hier überprüfen:

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

Wenn wir beim Registrieren der benutzerdefinierten 'show_in_rest' => true,-Taxonomie das Argument clock_category hinzufügen, wird dieses GET/POST-Argument unterstützt:

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"
    }
},

und dieses GET-Argument:

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"
    }
}

Außerdem wird der Endpunkt /wp/v2/clock_category hinzugefügt.

So filtern Sie die Zeitangaben nach einer einzelnen Zeitkategorie-ID:

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

oder nach mehreren Uhrenkategorie-IDs:

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

So schließen Sie eine einzelne Kategorie-ID aus:

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

oder von mehreren Uhrenkategorie-IDs ausschließen:

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