[wp-testers] Custom post type and Custom fields, help

Ezwan Aizat Bin Abdullah Faiz aizat.faiz at gmail.com
Tue Mar 30 08:17:23 UTC 2010


I think this problem happens because of autosave.

Autosave will not save your custom post types.

You can disable autosave by placing this in an init hook
                wp_deregister_script('autosave');

Regards,
Aizat

On Tue, Mar 30, 2010 at 4:08 PM, Patrick Edqvist
<patrick.edqvist at gmail.com>wrote:

> Hello everyone,
>
> What i'm trying to do is some nice custom fields added to my specific
> custom
> post type, in this case it's called "case"..
>
> Using add meta box i add some fields to the post type case and they show up
> just fine. Problem is however that when i update the post no information is
> saved in those fields. also i wondering i'm using the right technique to
> get
> those fields. What am I doing wrong?
>
> Here's the data that i'm using:
>
> *Adding the fields*
>
> /* Use the admin_menu action to define the custom boxes */
> add_action('admin_menu', 'case_add_custom_box');
>
> /* Use the save_post action to do something with the data entered */
> add_action('save_post', 'case_save_postdata');
>
> /* Adds a custom section to the "side" Post edit screens */
> function case_add_custom_box() {
>
>  if( function_exists( 'add_meta_box' )) {
>    add_meta_box( 'case_sectionid', __( 'Case information',
> 'case_textdomain' ),
>                'case_inner_custom_box', 'case', 'side' );
>   } else {
>    add_action('dbx_post_advanced'
> , 'case_old_custom_box' );
>  }
> }
>
> /* Prints the inner fields for the custom post/page section */
> function case_inner_custom_box() {
>
>  // Use nonce for verification
>
>  echo '<input type="hidden" name="case_noncename" id="case_noncename"
> value="' .
>    wp_create_nonce( plugin_basename(__FILE__) ) . '" />';
>
>  // The actual fields for data entry
>
>  echo '<label for="case_new_client" style="margin: 5px 0; display:
> block;">' . __("Who was the client?", 'case_textdomain' ) . '</label> ';
>  echo '<input type="text" name="case_new_client" value="" size="30"
> /><br>';
>
>  echo '<label for="case_new_project" style="margin: 5px 0; display:
> block;">' . __("What was the project name?", 'case_textdomain' ) .
> '</label>
> ';
>  echo '<input type="text" name="case_new_project" value="" size="30"
> /><br>';
>
>  echo '<label for="case_new_year" style="margin: 5px 0; display: block;">'
> . __("What year was this project released?", 'case_textdomain' ) .
> '</label>
> ';
>  echo '<input type="text" name="case_new_field" value="" size="30" /><br>';
>
>  echo '<label for="case_new_partner" style="margin: 5px 0; display:
> block;">' . __("Who were the partner('s)?", 'case_textdomain' ) . '</label>
> ';
>  echo '<input type="text" name="case_new_partner" value="" size="30"
> /><br>';
>
>  echo '<label for="case_new_link" style="margin: 5px 0; display: block;">'
> . __("Is there any link to the project? website?", 'case_textdomain' ) .
> '</label> ';
>  echo '<input type="text" name="case_new_link" value="" size="30" /><br>';
>
>  echo '<label for="case_new_pdf" style="margin: 5px 0; display: block;">' .
> __("Is there a pdf available for this case?", 'case_textdomain' ) .
> '</label> ';
>  echo '<input type="text" name="case_new_pdf" value="" size="30" /><br>';
> }
>
> /* Prints the edit form for pre-WordPress 2.5 post/page */
> function case_old_custom_box() {
>
>  echo '<div class="dbx-b-ox-wrapper">' . "\n";
>  echo '<fieldset id="case_fieldsetid" class="dbx-box">' . "\n";
>  echo '<div class="dbx-h-andle-wrapper"><h3 class="dbx-handle">' .
>        __( 'My Post Section Title', 'case_textdomain' ) . "</h3></div>";
>
>  echo '<div class="dbx-c-ontent-wrapper"><div class="dbx-content">';
>
>  // output editing form
>
>  case_inner_custom_box();
>
>  // end wrapper
>
>  echo "</div></div></fieldset></div>\n";
> }
>
> /* When the post is saved, saves our custom data */
> function case_save_postdata( $post_id ) {
>
>  // verify this came from the our screen and with proper authorization,
>  // because save_post can be triggered at other times
>
>  if ( !wp_verify_nonce( $_POST['case_noncename'], plugin_basename(__FILE__)
> )) {
>    return $post_id;
>  }
>
>  // verify if this is an auto save routine. If it is our form has not been
> submitted, so we dont want
>  // to do anything
>  if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE )
>    return $post_id;
>
>
>  // Check permissions
>  if ( 'post' == $_POST['post_type'] ) {
>    if ( !current_user_can( 'edit_post', $post_id ) )
>      return $post_id;
>  } else {
>    if ( !current_user_can( 'edit_page', $post_id ) )
>      return $post_id;
>  }
>
>  // OK, we're authenticated: we need to find and save the data
>
>  $mycasedata = $_POST['case_new_client'];
>  update_post_meta($pageId, '_'.$name, $mycasedata);
>  // Do something with $mydata
>  // probably using add_post_meta(), update_post_meta(), or
>  // a custom table (see Further Reading section below)
>
>   return $mydata;
> }
>
>
> *Trying to get the data in a template using*
>
> <?php echo get_post_meta( $post_id, 'case_new_client', 'true' ); ?>
>
>
> Kind regards
>
>
> --
> Patrick Edqvist
> _______________________________________________
> wp-testers mailing list
> wp-testers at lists.automattic.com
> http://lists.automattic.com/mailman/listinfo/wp-testers
>



-- 
http://aizatto.com


More information about the wp-testers mailing list