web-dev-qa-db-fra.com

Comment WordSave AutoSave peut enregistrer les champs de plugin?

Configuration:

  • WordPress Ajouter/Modifier le message/la page
  • Un plugin qui a sa propre boîte aux lettres avec plusieurs champs cachés.

Problème:

Comment ces champs masqués personnalisés peuvent-ils être enregistrés avec les autres données de publication dans la fonctionnalité Enregistrement automatique ?

Merci

2
diosney

Je viens de faire un plugin qui devait être sauvegardé automatiquement, alors j'ai commencé à creuser dans le code. Je pensais maintenant que cela devait être déclenché par du javascript. J'ai donc commencé à regarder dans la console de Chrome lorsque le système de sauvegarde automatique est activé. J'ai alors vu que autosave.js cherche une classe tags-input dans admin-filters.php vous pouvez voir le commentaire:

// NOTE: the class "tags-input" allows to include the field in the autosave $_POST (see autosave.js)

Donc, je viens d'ajouter la classe tags-input à mes champs cachés et cela enregistre maintenant le moment où la sauvegarde automatique est activée!

Voici mon exemple: <input type="hidden" class="tags-input" name="key" value="value" />

Mise à jour:

Maintenant, vous devez ajouter vos données par votre propre fonction ajax. (ajoutez un nouveau fichier js et ajoutez-le au pied de page. admin_enqueue_scripts)

jQuery(document).ajaxSend(function(e, x, a) {
    var data = 1;
    a.data += '&' + jQuery.param( {test_data: data} );
});

Et l'économie:

add_action('save_post', 'autosave_save_custom');

function autosave_save_custom( $post ) {
    if( wp_is_post_autosave($post) && isset( $_POST['test_data'] ) ) {
        $test_data = intval( $_POST['test_data'] );
        $post_id = $post->ID;
        update_metadata( $post->post_type, $post_id, 'test_data', $test_data );
    }
}
2
Pontus Abrahamsson