J'ai un dossier personnalisé appelé xxxx_url
. xxxx_url
devrait être unique.
Donc, avant de publier le message, je veux m'assurer qu'il xxxx_url
est unique ou non? S'il n'est pas unique, la publication de l'article doit être refusée.
J'ai essayé publish_post
. Mais ce n'est pas le bon, car il se déclenche lorsque nous publions le message. Je veux exécuter mon code juste avant la publication.
custom-field
filters
hooks
actions
Je suis la personne la plus stupide
la source
la source
132_url
où132
est l'ID du message. Que vous avez toujours ici une valeur unique. En plus de cela: les champs personnalisés doivent être enregistrés dans l'save_post
action. Dans cette action, vous pouvez vérifier le champ personnalisé (s'il n'est pas vide et a une valeur unique par exemple), et basé sur celaupdate_post_meta
ou non. Je suppose que vous pouvez également vérifier le champ personnalisé et s'il n'a pas de valeur unique, définissez lepost-status
surdraft
ou autre chose pour désactiver la publication. Sinon, je pense que vous avez besoin de jQuery pour ce faire.Réponses:
Au début de
wp_insert_post
, la fonction qui sauvegarde / met à jour une publication, il y a un filtre appeléwp_insert_post_empty_content
. Par défaut, ce filtre vérifie si les champs titre, éditeur et extrait sont tous vides, auquel cas le processus d'enregistrement sera interrompu.Cependant, étant donné que tous les champs à enregistrer sont passés à ce filtre, vous pouvez développer ce filtre pour inclure tout autre test afin de déterminer si la publication doit être considérée comme vide. Ce serait quelque chose comme ceci:
Remarque: la fonction doit retourner 'true' pour arrêter le processus d'enregistrement.
Si le champ personnalisé n'est pas unique, vous pouvez également faire écho à un avertissement.
la source
wp_insert_post_empty_content
est sémantiquement destiné au contenu vide . Cela dit, je n'ai pas non plus trouvé de crochet sémantiquement approprié.wp_insert_post_valid_content
pour exprimer cela, mais pour le reste, il est exactement au bon endroit.wp_insert_post_empty_content
filtre?Que diriez-vous d'utiliser AJAX pour vérifier l'unicité avant même de soumettre le message pour publication?
Bien que le code ne soit pas testé, il devrait fonctionner. Vous devrez peut-être jouer avec pour obtenir le résultat souhaité.
la source
Je me connecterais au filtre wp_insert_post_data et gérerais cela de la manière la moins intrusive possible, car si je comprends bien, vous ne voulez pas bloquer l'insertion d'une publication, vous voulez simplement éviter de publier une publication avec des méta-valeurs en double.
Je ne peux pas en épargner trop dans ce cas car vous n'avez partagé aucun code mais voici un pseudo-code d'un filtre qui fonctionnerait:
Une autre grande chose à propos de ce filtre est qu'il est séparé de celui des pièces jointes
wp_insert_attachment_data
.J'espère que ça aide, et quoi que vous fassiez, ça a l'air génial!
la source
$data['post_status']
estpublish
et l' utilisateur est sa mise à jour? Est-ce que la création du message nedraft
créerait pas de404
problème pour ce message?Le chèque doit être envoyé à
wp_insert_post
. Ce crochet est déclenché chaque fois que le post est publié ou modifié.Là, vous pouvez faire une requête personnalisée pour vérifier si un article a déjà la même
xxxx_url
valeur ou non.la source
wp_insert_post
action se déclenche une fois le post enregistré, il ne peut pas bloquer la publication ou l'insertion du post.If it isn't unique it should reject publishing post.
dans ma question.