[wp-hackers] How do filters access variables outside of their function?

Ken Ken at adcSTUDIO.com
Fri Aug 27 21:44:05 UTC 2010


Howdy Hackers,

The apparently recommended way of doing nonce in add_meta_box for custom 
types is something like:

add_action('add_meta_boxes', 'my_add_meta_box');
add_action('save_post', 'my_save_post'), 10, 2 );
function my_save_post( $post_ID, $post ) {
	if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE )
		return;	
	if ( !wp_verify_nonce( $_POST['my_noncename'], 'secret') )
		return;
	if ( $post->post_type != 'custom_post_type' )
		return;
	if ( !current_user_can('edit_post') )
		return;
	$data = array();
	$data[0] = $_POST['my_field_1'];
	$data[1] = $_POST['my_field_2'];
	update_post_meta($post_ID, 'my_post_meta', $data);
}
function my_add_meta_box($post) {
	$value = get_post_meta($post->ID, 'my_post_meta', $data);
	<input type="hidden" name="my_noncename" id="my_noncename" value="<?php 
echo wp_create_nonce( 'secret' ); ?>" />
	<input type="text" id="my_field_1" name="my_field_1" value="<?php echo 
$value['my_field_1']; ?>" />
	<input type="text" id="my_field_2" name="my_field_2" value="<?=@ 
$value['my_field_2']; ?>" /> // example suppression
}

But unfortunately, with WP_DEBUG on, it writes notices (undefined index 
at $_POST line number etc.) on the 'add new' screen and actually breaks 
the "Appearance -> Menus" ajax responses so that you can't "Add to Menu" 
reliably if at all. (If you've got Firebug, the net tab will show the 
ajax request response... starts with "<br />")

@$_POST suppresses on the Add New screen, but with the Menu Admin it 
isn't working as well (I might have some other error I suppose). Seems 
to work just fine and dandy without WP_DEBUG enabled, but it's been 
suggested to develop with it on, so should I just deal with the bugs 
that debugging creates? LOL

Is there better Example code out there? I'd rather do it cleaner then @ 
suppression...



More information about the wp-hackers mailing list