web-dev-qa-db-fra.com

Comment utiliser update_post_meta dans wp_trash_post

J'ai des métadonnées sur ma page d'édition post qui enregistre parfaitement en utilisant le hook et la fonction ci-dessous:

    add_action('save_post', 'save_meta_data');
    function save_meta_data($post_id){
      if(isset($_POST['target_url'])) {
        update_post_meta($post_id, 'target_url', $_POST['target_url']);
      }
    };

Cependant, la même logique ne parvient pas à enregistrer les métadonnées avant une publication est supprimée, ce à quoi sert ce crochet (pensai-je).

    add_action('wp_trash_post', 'save_meta_data');
    function save_meta_data($post_id){
      if(isset($_POST['target_url'])) {
        update_post_meta($post_id, 'target_url', $_POST['target_url']);
      }
    };

Dans le second cas, il semble que tout le tableau $ _POST soit vide, mais je sais que la fonction est activée.

Une bonne âme pourrait-elle indiquer ce que je fais de mal et quelle est la bonne façon de le faire?

Merci Ron

1
Ron

Les liens "Corbeille" de base dans la section "Modification rapide" de edit.php et dans le formulaire "Avancé" de la méta-boîte "Publier" fonctionnent sur GET et non pas POST. À moins que vous n'ayez modifié le ou les formulaires, il n'y a pas de données POST. Tout ce que vous avez, c'est l'identifiant du post.

Pour sauvegarder les données quand un article est supprimé, vous ne pourrez pas utiliser la fonctionnalité par défaut "supprimer/corbeille". Tu devras:

  1. Enregistrez votre message avec la description (je suppose) du champ méta personnalisé "supprimer/supprimer", puis supprimez le message.
  2. Soumettez votre description "supprimer/corbeille" via AJAX lorsque vous remplissez la description ou cliquez sur le lien "supprimer/corbeille".
  3. Modifiez le formulaire de sorte que le lien "supprimer/corbeille" soumette le formulaire en entier sur POST
  4. Supprimez les liens "Supprimer/Corbeille" et remplacez-les par une case à cocher afin de pouvoir soumettre le formulaire normalement et si la case "Supprimer/Corbeille" est coché un filtre sur save_post peut faire la suppression réelle.

De mémoire, je ne peux pas vous dire à quel point il sera difficile de modifier le formulaire, mais ce ne sera probablement pas simple. Les options AJAX sont probablement plus simples, mais peuvent être facilement désactivées en désactivant Javascript dans le navigateur.

1
s_ha_dum