Den Dialog “Nicht gespeicherte Änderungen” für benutzerdefinierte Post-Meta-Änderungen auslösen

Ich benutze einen benutzerdefinierten Post-Typ mit benutzerdefinierten Meta-Feldern, aber Autosave und der “ungespeicherte Änderungen” -Dialog scheinen nicht für diese benutzerdefinierten Meta-Felder ausgetriggers werden. Autosave ist für mich nicht so wichtig wie der Dialog für ungespeicherte Änderungen – gibt es eine Möglichkeit, sie auszulösen?

function add_meta_boxes() { add_meta_box('places_location', __('Location'), array(&$this, 'location_box'), 'place', 'normal', 'high'); } function location_box($post) { wp_nonce_field(plugin_basename(__FILE__), 'places_location_nonce'); $lat = get_post_meta($post->ID, 'places_lat', true); $lng = get_post_meta($post->ID, 'places_lng', true); ?> 

<?php } function save_place($id) { // skip unverified location nonces if(!wp_verify_nonce($_POST['places_location_nonce'], plugin_basename(__FILE__))) return; // skip autosave calls // commenting this out still doesn't trigger saving these fields on autosave //if(defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return; // update our custom post meta update_post_meta($id, 'places_lat', (float)$_POST['places_lat']); update_post_meta($id, 'places_lng', (float)$_POST['places_lng']); }

Solutions Collecting From Web of "Den Dialog “Nicht gespeicherte Änderungen” für benutzerdefinierte Post-Meta-Änderungen auslösen"

Der Code sieht tatsächlich nur den TinyMCE-Editor oder das Titel- und Inhaltsfeld, wenn der Editor ausgeblendet ist:

 window.onbeforeunload = function(){ var mce = typeof(tinyMCE) != 'undefined' ? tinyMCE.activeEditor : false, title, content; if ( mce && !mce.isHidden() ) { if ( mce.isDirty() ) return autosaveL10n.saveAlert; } else { title = $('#post #title').val(), content = $('#post #content').val(); if ( ( title || content ) && title + content != autosaveLast ) return autosaveL10n.saveAlert; } }; 

Sie können diesen onbeforeunload Handler durch Ihren eigenen ersetzen (achten Sie darauf, dass Sie onbeforeunload die vorhandene functionalität mit onbeforeunload ). Oder spielen Sie mit dem isDirty() des TinyMCE-Editors und dem Wert autosaveLast ?

Ich triggerse dieses Problem mit diesem ausgezeichneten jQuery-Plugin , das den schmutzigen Zustand eines Formulars überprüft. Es enthält Methoden, um hinzugefügte / entfernte / modifizierte Felder über Javascript zu prüfen. Es tritt total Arsch!

Ich habe den “AUTOSAVE” (noch) nicht behandelt. Ich hoffe, dass jemand das nützlich findet.