web-dev-qa-db-fra.com

Post types personnalisés filtrés par taxonomie à l'aide de REST API v2

J'ai la situation suivante:

J'ai créé un nom de type de message personnalisé Works . Et également attaché à la taxonomie personnalisée nommée Types de travail

Voici le code

function rk_work_post_type(){
$labels = array(
    'name'               => 'Work',
    'singular_name'      => 'Work',
    'add_new'            => 'Add Work',
    'all_items'          => 'All Works',
    'add_new_item'       => 'Add Work',
    'edit_item'          => 'Edit Work',
    'new_item'           => 'New Work',
    'view_item'          => 'View Work',
    'search_item'        => 'Search Work',
    'not_found'          => 'No items found',
    'not_found_in_trash' => 'No items found in trash',
    'parent_item_colon'  => 'Parent Item'
);
$args = array(
    'labels' => $labels,
    'public' => true,
    'has_archive' => true,
    'publicly_queryable' => true,
    'query_var' => true,
    'rewrite' => true,
    'capability_type' => 'post',
    'hierarchical' => false,
    'supports' => array(
        'title',
        'editor',
        'excerpt',
        'thumbnail',
        'revisions',
        'comments',
    ),
    // 'taxonomies' => array('category', 'post_tag'),
    'menu_icon' => 'dashicons-hammer',
    'menu_position' => 5,
    'exclude_from_search' => false,
    'show_in_rest'       => true,
    'rest_base'          => 'works',
    'rest_controller_class' => 'WP_REST_Posts_Controller',      
);
register_post_type('work',$args);
}

add_action('init','rk_work_post_type');


function rk_work_taxonomies() {
//add new taxonomy hierarchical
$labels = array(
    'name' => 'Work Types',
    'singular_name' => 'Work type',
    'search_items' => 'Search Types',
    'all_items' => 'All Work Types',
    'parent_item' => 'Parent Type',
    'parent_item_colon' => 'Parent Type:',
    'edit_item' => 'Edit Work Type',
    'update_item' => 'Update Work Type',
    'add_new_item' => 'Add New Work Type',
    'new_item_name' => 'New Work Type Name',
    'menu_name' => 'Work Types'
);

$args = array(
    'hierarchical' => true,
    'labels' => $labels,
    'show_ui' => true,
    'show_admin_column' => true,
    'query_var' => true,
    'rewrite' => array( 'slug' => 'work_type' ),
    'show_in_rest'       => true,
    'rest_base'          => 'work_type',
    'rest_controller_class' => 'WP_REST_Terms_Controller',      
);

register_taxonomy('work_type', array('work'), $args);
}
add_action( 'init' , 'rk_work_taxonomies' );

Le problème que j'ai est que je ne peux pas trouver un moyen d'obtenir le Works filtré par Type de travail using REST API v2

J'ai lu qu'après qu'une requête de filtre de mise à jour wordpress ait été supprimée de l'API REST. Alors, quelle est la bonne façon de faire cela maintenant? Pouvez-vous donner des exemples s'il vous plaît?

Merci d'avance!

5
Robert

Ok, la solution était:

example.com/wp-json/wp/v2/works?work_type=10

Il considère les work_types comme des identifiants. Vous pouvez voir l'identifiant dans:

example.com/wp-json/wp/v2/works
6
Robert

J'ai installé le plugin de filtrage WP REST puis je suis en mesure de filtrer les messages par catégorie, comme:

http://www.example.com/wp-json/wp/v2/my_custom_posts?filter[my_custom_taxomony]=my_custom_taxonomy_slug

dans ton cas:

http://www.example.com/wp-json/wp/v2/works?filter[work_type]=building
0
DARKVIDE

https://developer.wordpress.org/reference/functions/get_posts/

Ce lien aide

Il inclut la méthode get_posts () qui est utilisée pour recevoir

Passer l'argument de type de poste

0
user162539