J’ai enregistré un nouveau type de message en tant que :
$this->sconfig= ['post_type'=> 'event', 'slug'=>'events'];
add_action('init', array($this, 'register_event_posttype'));
et
function register_event_posttype()
{
//unregister_post_type($this->sconfig['post_type']);
$args= [
'labels' => [ 'name' => __('Events'), 'singular_name' => __('Event')],
'supports' => ['title', 'editor', 'author', 'thumbnail', 'excerpt', 'custom-fields', 'comments', 'revisions', 'post-formats'],
'query_var' => true,
'show_ui' => true,
'show_in_menu'=> true,
'show_in_nav_menus'=> true,
'exclude_from_search'=> false,
'capability_type' => 'post',
'public' => true,
'publicly_queryable' => true,
'has_archive' => true,
'hierarchical' => false,
'rewrite' => array('slug' => $this->sconfig['slug']),
'taxonomies' => array('category', 'post_tag'),
'rest_base' => $this->sconfig['slug'],
'show_in_rest' => true,
//'rest_controller_class' => 'WP_REST_Posts_Controller'
];
register_post_type($this->sconfig['post_type'], $args);
}
Maintenant, cette URL (http://localhost/install05/wp-json/wp/v2/events/114?_locale=user) donne un statut 404 avec une sortie (déclenchée lors de la tentative d’enregistrement d’un brouillon de publication personnalisée) :
{"code":"rest_no_route","message":"No route was found matching the URL and request method.","data":{"status":404}}
Remarque : J’ai des champs méta personnalisés associés à ce type de publication et ils s’affichent correctement dans la page d’ajout/de modification.
Ce que j’ai essayé jusqu’à présent (sans résultat):
#1: Désenregistrement et enregistrement du type de publication personnalisé et vidage des règles de réécriture (réenregistrement de la structure du permalien)
#2 : Passer à ceci (en cas de conflit): $this->sconfig= ['post_type'=> 'my-event', 'slug'=>'my-events'];
#3 :
Définition de la route personnalisée :
function rest_route_for_events($route, $post) {
if($post->post_type === $this->sconfig['post_type'] ) {
$route="/wp/v2/".$this->sconfig['slug']."https://wordpress.stackexchange.com/" . $post->ID;
}
return $route;
}
add_filter('rest_route_for_post', array($this, 'rest_route_for_events'), 10, 2);
Merci d’avoir lu jusqu’ici et un peu plus pour avoir donné quelques idées à ce sujet :).