X

API REST de type de publication personnalisée 404 : Échec de la mise à jour. Aucune route n’a été trouvée correspondant à l’URL et à la méthode de requête


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 :).