L'API REST WP récupère les publications à partir du type de publication

12

Comment puis-je obtenir toutes les publications d'un type de publication personnalisé spécifique avec l'API WP REST (v1 ou v2)? Je suis très novice dans ce domaine et j'essaie de comprendre comment faire cela.

J'utilise actuellement l'API WP REST v2 et j'ai réussi à récupérer une liste de tous les types de publication avec cette

.
http://domain.com/wp-json/wp/v2/types

et ensuite réussi à obtenir le type de message qui m'intéresse

http://domain.com/wp-json/wp/v2/types/the-icons-update

Comment puis-je obtenir tous les messages de ce type de contenu spécifique?

j'ai essayé avec

http://domain.com/wp-json/wp/v2/posts?filter[post_type]=the-icons-update

Mais il renvoie un tableau vide (je suppose qu'il renvoie les publications par défaut et que sur mon site, il n'y a que des publications dans le type de publication personnalisé que j'essaie de récupérer).

Peut-il y avoir un problème avec la façon dont j'ai enregistré le type de message?

function custom_post_type() {
$labels = array(
    'name'               => _x( 'The Icons Update', 'post type general name' ),
    'singular_name'      => _x( 'The Icons Update', 'post type singular name' ),
    'add_new'            => _x( 'Add Page', 'magazine' ),
    'add_new_item'       => __( 'Add New Page' ),
    'edit_item'          => __( 'Edit Page' ),
    'new_item'           => __( 'New Page' ),
    'all_items'          => __( 'All Pages' ),
    'view_item'          => __( 'View Page' ),
    'search_items'       => __( 'Search Pages' ),
    'not_found'          => __( 'No Page found' ),
    'not_found_in_trash' => __( 'No Page found in the Trash' ), 
    'parent_item_colon'  => '',
    'menu_icon'          => '',
    'menu_name'          => 'The Icons Update'
);
$args = array(
    'labels'        => $labels,
    'description'   => 'Holds our projects and project specific data',
    'public'        => true,
    'menu_position' => 5,
    'supports'      => array( 'title', 'editor', 'thumbnail', 'excerpt', 'custom-fields' ),
    'has_archive'   => true,
    'taxonomies'    => array('post_tag', 'category'),
    'hierarchical'  => false,
    'query_var'     => true,
    'queryable' => true,
        'searchable'    => true,
    'rewrite'       => array( 'slug' => 'the-icons-update' )
);
register_post_type( 'magazine', $args );
flush_rewrite_rules();
}
add_action( 'init', 'custom_post_type' );

Toute aide à cet égard est vraiment appréciée.

    
posée Jeff 04.09.2015 - 09:50

4 réponses

15

Il suffit d’ajouter le prochain paramètre dans la fonction register_post_type, cela peut être avant le paramètre 'menu_position'. 'show_in_rest' = > vrai

sivousutilisezunpluginpourenregistrervotretypepostal,vouspouvezutiliserlecodesuivant:

add_action('init','add_anuncios_to_json_api',30);functionadd_anuncios_to_json_api(){global$wp_post_types;$wp_post_types['anuncio']->show_in_rest=true;}

aprèscela,vouspourrezlistervosmessagesdemydomain.com/wp-json/wp/v2/posttype_slug

dansmoncas:mydomain.com/wp-json/wp/v2/anuncio

vouspouvezégalementenregistrerunenouvellebaseenutilisantlecodesuivant:

add_action('init','add_anuncios_to_json_api',30);functionadd_anuncios_to_json_api(){global$wp_post_types;$wp_post_types['anuncio']->show_in_rest=true;$wp_post_types['anuncio']->rest_base='clasi';$wp_post_types['anuncio']->rest_controller_class='WP_REST_Posts_Controller';}

remplacezsimplementanuncioparvotreslugdetypedemessageet"clasi" sera votre route. mydomain.com/wp-json/wp/v2/clasi

    
réponse donnée Dioni Mercado 08.09.2015 - 03:48
3

Pour afficher les types de publication personnalisés dans la version 2, vous devez ajouter 'show_in_rest' => true dans les arguments de la fonction register_post_type. Vos publications contenant ce type de publication personnalisée seront disponibles au noeud final: wp-json / wp / v2 / your-custom-post-type .

Source: enlace

    
réponse donnée kabisote 21.09.2015 - 14:31
0

Vous devriez utiliser ceci: -

http://domain.com/wp-json/wp/v2/posts?job-type=your-post-type 

J'espère que ça marche :))

    
réponse donnée dev 04.09.2015 - 10:05
0

Ok, voici ma réponse complète: -

function prefix_register_post_type()
{
  register_post_type(
    'prefix_portfolio',
    array(
      'labels'        => array(
        'name'               => __('Portfolio', 'text_domain'),
        'singular_name'      => __('Portfolio', 'text_domain'),
        'menu_name'          => __('Portfolio', 'text_domain'),
        'name_admin_bar'     => __('Portfolio Item', 'text_domain'),
        'all_items'          => __('All Items', 'text_domain'),
        'add_new'            => _x('Add New', 'prefix_portfolio', 'text_domain'),
        'add_new_item'       => __('Add New Item', 'text_domain'),
        'edit_item'          => __('Edit Item', 'text_domain'),
        'new_item'           => __('New Item', 'text_domain'),
        'view_item'          => __('View Item', 'text_domain'),
        'search_items'       => __('Search Items', 'text_domain'),
        'not_found'          => __('No items found.', 'text_domain'),
        'not_found_in_trash' => __('No items found in Trash.', 'text_domain'),
        'parent_item_colon'  => __('Parent Items:', 'text_domain'),
      ),
      'public'        => true,
      'menu_position' => 5,
      'supports'      => array(
        'title',
        'editor',
        'thumbnail',
        'excerpt',
        'custom-fields',
      ),
      'taxonomies'    => array(
        'prefix_portfolio_categories',
      ),
      'has_archive'   => true,
      'rewrite'       => array(
        'slug' => 'portfolio',
      ),
    )
  );
}

add_action('init', 'prefix_register_post_type');


function prefix_register_taxonomy()
{
  register_taxonomy(
    'prefix_portfolio_categories',
    array(
      'prefix_portfolio',
    ),
    array(
      'labels'            => array(
        'name'              => _x('Categories', 'prefix_portfolio', 'text_domain'),
        'singular_name'     => _x('Category', 'prefix_portfolio', 'text_domain'),
        'menu_name'         => __('Categories', 'text_domain'),
        'all_items'         => __('All Categories', 'text_domain'),
        'edit_item'         => __('Edit Category', 'text_domain'),
        'view_item'         => __('View Category', 'text_domain'),
        'update_item'       => __('Update Category', 'text_domain'),
        'add_new_item'      => __('Add New Category', 'text_domain'),
        'new_item_name'     => __('New Category Name', 'text_domain'),
        'parent_item'       => __('Parent Category', 'text_domain'),
        'parent_item_colon' => __('Parent Category:', 'text_domain'),
        'search_items'      => __('Search Categories', 'text_domain'),
      ),
      'show_admin_column' => true,
      'hierarchical'      => true,
      'rewrite'           => array(
        'slug' => 'portfolio/category',
      ),
    )
  );
}

add_action('init', 'prefix_register_taxonomy', 0);

Vous devez également enregistrer la taxonomie lors de l'enregistrement de la publication personnalisée.

Après cela, la requête serait:

wp-json/wp/v2/posts/?taxonomy=prefix_portfolio_categories'&term=your-any-category

J'espère que cela vous aidera:)

    
réponse donnée dev 04.09.2015 - 11:19

Lire d'autres questions sur les étiquettes