web-dev-qa-db-fra.com

Obtenir "Le lien que vous avez suivi a expiré" lors de l'ajout d'un message personnalisé

EDIT: J'ai complètement réécrit cette question car elle a été fermée hors sujet. À mon avis, il comporte deux points très pertinents qui pourraient aider d’autres développeurs, mais dans leur forme originale, ces points ne sont pas très clairs. Par conséquent, j'ai coupé toutes les informations de base que je sais maintenant être sans rapport avec la solution. J'ai également modifié ma réponse pour qu'elle soit complète (une partie de la réponse figurait précédemment dans une mise à jour de la question).

Je développe un plugin qui crée un type de message personnalisé (CPT). Mon CPT utilise une méta-boîte pour les métadonnées personnalisées. Je crée un nonce dans la fonction qui affiche la boîte de méta. La fonction qui enregistre les métadonnées personnalisées et vérifie le nonce (via check_admin_referer) est appelée par le hook save_post. Lorsque j'essaie d'ajouter un message de mon CPT, le message "Le lien que vous avez suivi a expiré" s'affiche lorsque je clique sur Ajouter nouveau .

3
GeeC

Le message "Le lien que vous avez suivi a expiré" se trouve dans la fonction wp_nonce_ays à la ligne 2607 de wp-includes/functions.php. Apparemment, le message "Etes-vous sûr de vouloir faire ça?" dans 4.9.5. La fonction wp_nonce_ays est appelée par check_admin_referer si la vérification de nonce échoue. C'est le seul endroit du code Wordpress où ce message est utilisé. Par conséquent, si vous voyez ce message, vous savez qu'un contrôle nonce échoue quelque part dans votre code.

Lorsque vous enregistrez des métadonnées personnalisées, utilisez le hook post_updated, plutôt que le crochet save_post. Pour une raison quelconque, le hook save_post est appelé lorsqu'une page de création de publication est affichée (c'est-à-dire avant que quoi que ce soit ne soit enregistré). À ce stade, le nonce n'a pas été créé. Le contrôle de nonce échoue.

2
GeeC