2010-04-03 4 views
2

J'ai ajouté une action "save_post" personnalisée à mon thème (le code est ci-dessous). Toutefois, lorsque je place des images ou du code vidéo dans le message, il est retiré. La seule façon de l'obtenir est de commenter la ligne add_action. Que dois-je faire pour que toutes les informations postales restent intactes?Custom add_action ('save_post') fait disparaître le balisage HTML!

add_action('save_post', 'custom_add_save'); 

function custom_add_save($postID){ 
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) { 
     return $postID; 
    } 
    else 
    { 
     // called after a post or page is saved 
     if($parent_id = wp_is_post_revision($postID)) 
     { 
     $postID = $parent_id; 
     } 

     if ($_POST['my_customHeader']) 
     { 
      update_custom_meta($postID, $_POST['my_customHeader'], 'my_customHeader'); 
     } 
     else 
     { 
      update_custom_meta($postID, '', 'my_customHeader'); 
     } 
     if ($_POST['my_customTitle']) 
     { 
      update_custom_meta($postID, $_POST['my_customTitle'], 'my_customTitle'); 
     } 
     else 
     { 
      update_custom_meta($postID, '', 'my_customTitle'); 
     } 
    } 
} 

function update_custom_meta($postID, $newvalue, $field_name) { 
    // To create new meta 
    if(!get_post_meta($postID, $field_name)){ 
    add_post_meta($postID, $field_name, $newvalue); 
    }else{ 
    // or to update existing meta 
    update_post_meta($postID, $field_name, $newvalue); 
    } 
} 
+0

qu'est-ce que vous vouliez dire par "La seule façon de l'obtenir est de commenter la ligne add_action. " ? Je suis confus – justjoe

Répondre

0

Je ne suis pas très bien familiarisés avec les crochets Wordpress liés à sauver les messages, mais en fonction de votre PHP seul, je vois que votre fonction custom_add_save() ne retourne pas l'identifiant de poste quand il est le traitement d'un sauvegarde manuelle (c'est-à-dire lorsque vous cliquez sur le bouton Enregistrer brouillon/publier sur l'interface utilisateur de Wordpress).

Il renvoie certainement l'ID de publication lors d'une sauvegarde automatique (selon le premier bloc de code lorsque vous entrez custom_add_save).

Peut-être que vous aimeriez examiner cela. :)

0

vous devez également ajouter une valeur nonce pour empêcher concurrency

ajouter une entrée cachée dans votre formulaire:

<input type="hidden" name="customCategory_noncename" id="customCategory_noncename" value="<?= wp_create_nonce('customCategory'); ?>" /> 

et l'ajouter à votre sauvegarde du code

// verify this with nonce because save_post can be triggered at other times 
    if (!wp_verify_nonce($_POST['_noncename'], 'my_customHeader')) return $post_id; 

aussi par défaut je pense que wordpress supprime le formatage html dans l'éditeur en faveur de son propre marquage "intelligent" html

Questions connexes