Récemment, toutes mes demandes d'API REST ont subitement retourné une erreur 404, Chaque demande (peu importe le point de terminaison personnalisé ou intégré).
Ensuite, j'ai pensé que c'était à cause de la structure du permalink. /wp-json/
n'est pas accessible sous permalink, car aucune règle de redirection n'est disponible pour le moment.
Est-il possible d'utiliser les noeuds finaux REST dans cette situation? Personnalisé et intégré.
Oui, vous pouvez. Ajoutez simplement le paramètre de requête rest_route
.
Alors
https://wordpress.org/wp-json/
deviendrait
https://wordpress.org/?rest_route=/
Ou https://wordpress.org/wp-json/wp/v2/
deviendrait https://wordpress.org/?rest_route=/wp/v2
pour vous donner un exemple plus complet.
Alors vous vous demandez comment choisir lequel utiliser? Ne vous inquiétez plus, il existe une fonction pour cela: get_rest_url()
Une autre option est le fait que, par défaut, l'en-tête <link>
donne la racine de l'API.
<link rel='https://api.w.org/' href='https://wordpress.org/wp-json/' />
Donc, au cas où vous auriez besoin de comprendre cela du côté client, JS utilisera simplement quelque chose le long des lignes de
document.querySelectorAll('link[rel="https://api.w.org/"]')[0].getAttribute('href');
Donc, fondamentalement, vous ne devriez pas prendre la partie wp-json
comme donnée (et la coder en dur) mais la construire de manière dynamique, en utilisant get_rest_url()
ou l’approche JS susmentionnée.
Vous pouvez ajouter une réécriture sur votre serveur Web.
E.g pour nginx
location ~ ^/wp-json/ {
rewrite ^/wp-json/(.*?)$ /?rest_route=/$1 last;
}