• Resolved dotnetchic

    (@dotnetchic)


    I’m writing a custom events plugin that integrates to the WordPress edit post/page admin screen, and it works like a charm…
    that is, until you leave the post open in the editor for “too long” (i’m guessing over 2 minutes, though I haven’t verified this yet…that’s the length of my autosave interval). Here’s the gist:

    My plugin adds an event box to the sidebar of the edit post/page screen using the following hooks/filters:
    edit_post, publish_post, save_post, delete_post, admin_menu, manage_posts_columns, manage_pages_columns

    When a post/page is published, if this event box is checked, then I write some stuff to the database and add 2 custom fields to the post/page: _bec_expiration (the expiration date of the event) and _bec_id (the db id of the event). (The underscores are so WordPress doesn’t display in the standard custom field section).

    However, if I then leave the post up in the editor for a few minutes (?2 or longer?), then return and leave the page (without changing and/or updating my post), my custom fields, and hence my event information, is gone! -poof!-

    I’m unable to find a hook into the autosave feature of WordPress, and I’m unable to disable this functionality. (I already had to disable revisioning which interfered with my plugin also by pulling the post revision id instead of the post id).

    Any ideas?

Viewing 13 replies - 1 through 13 (of 13 total)
  • Thread Starter dotnetchic

    (@dotnetchic)

    anybody?? sorry to bump, I’m on a deadline…

    Normally don’t like to do this, but you might join the wp-hackers email list and ask that question.

    Thread Starter dotnetchic

    (@dotnetchic)

    Thanks, MichaelH. Joined the wp-hackers list, submitted my question, still hasn’t posted yet…

    Yeah I haven’t seen anything from wp-hackers today, yet.

    http://lists.automattic.com/pipermail/wp-hackers/2009-September/date.html

    Are you sure you sent the email to wp-hackers@lists.automattic.com from the email account you signed up with?

    Thread Starter dotnetchic

    (@dotnetchic)

    I’ve checked…
    Let me try re-sending

    Thread Starter dotnetchic

    (@dotnetchic)

    Many thanks. Never thought to check but my IT guy has changed outgoing mail from brewerradio.com to brewermediagroup.com with recent company change…think I just saw it post.

    Cheers!

    Just adding this link to the wp-hackers archive for your topic:
    http://lists.automattic.com/pipermail/wp-hackers/2009-September/027594.html

    Thread Starter dotnetchic

    (@dotnetchic)

    Again, I appreciate your help…
    Any suggestions on better formatting my emails for display on the wp-hackers list?

    Wouldn’t worry about the look–at the end of the month someone posts a summary of statistics for the list and it details all the different email clients peopled used when posting to the list…

    Content is king…or queen…

    Thread Starter dotnetchic

    (@dotnetchic)

    Wow! For anyone with similar problem, discovered the fix…

    The hook save_post is fired for autosave; however, any custom data won’t be attached to the post at that point. So, the plugin must do 3 things to work with this design: (1) add a hidden input field to the custom data form, (2) check for that hidden field before doing anything (simply return the post id if not found), and (3) check for autosave before doing anything (again, return the post id if autosave is defined).

    This was recently added to add_meta_box page:
    http://codex.wordpress.org/Function_Reference/add_meta_box#Example

    Finally found this topic, but aww man…

    The autosave request (admin-ajax.php action=autosave) only includes “blessed” parameters in the post data? There is no hook to “bless” form elements from plugins so they will be sent too? At least there is a work around…

    My suggestions for 2.8.5 or greater…

    • Let me give my form elements a specific class that the autosave function will look for and include the corresponding form el’s name/value in autosave request.
    • Make the save_post hook a little more easy. Maybe pass an extra argument to the hook function to indicate whether or not an autosave is in progress.
    • Submit the whole form on autosave. Why not?

    I’m adding a bunch of custom field boxes for some of my custom post types, but I’m a bit unsure about the hidden field and it’s check (steps 1 and 2 mentioned by dotnetchic).

    I understand that you have to put something like:
    echo '<input type="hidden" name="mytheme_meta_box_nonce" value="', wp_create_nonce(basename(__FILE__)), '" />

    But, if I have more than one custom field box, do I need to add it to each one? And if so, how do I customize each one? Is the name “mytheme_meta_box_nonce” customizable, or is that the name it should always have?

    Then, to check the hidden field you need:

    if (!wp_verify_nonce($_POST['mytheme_meta_box_nonce'], basename(__FILE__))) {
    	        return $post_id;
    }

    But if each box has a different hidden field, do you need to check them all, or you use the same one for all boxes, and then you just check one?

    Thanks

Viewing 13 replies - 1 through 13 (of 13 total)
  • The topic ‘Custom Fields – Lost by Autosave??’ is closed to new replies.