# RW Meta Box ,Problem setting post title

I'm using RW_Meta_Box plugin by Rilwis.

I'm using a CPT and added a custom meta-box and removed the title and editor.

But I still want to set the title for some obvious reasons.

I created the CPT and meta-box and everything worked perfectly including the all posts page using custom column hooks.

As soon as I sat to set post title to one of the fields in the meta-box, I failed to get the desired results.I tried to solutions I picked by searching through this Q&A site.

Initially I tried:

SOLUTION1:

add_action('submitpost_box', 'hidden_type_title');

function hidden_type_title() {
global $current_user,$post, $post_type; global$prefix;
$md = rwmb_meta($prefix . 'name', array('type' => 'text'), $post->ID); if ($post->post_type == 'MY_CPT_NAME') {
?>
<input type="hidden" name="post_title" value="<?php echo esc_attr(htmlspecialchars($md)); ?>" id="title" /> <?php } else { return; } }  The above code works fine but it has a problem I am unable to detect. which is, I need to update the post twice to set the post title. Therefore I went on to try the save_post hook like so: SOLUTION2: add_action('save_post', 'post_updated'); function post_updated($post_id) {
global $current_user,$post;
if ($post->post_type != 'MY_CPT_NAME') { return; } global$prefix;
$md = rwmb_meta($prefix . 'name', array('type' => 'text'), $post_id); // verify post is not a revision & not an autosave if (!wp_is_post_revision($post_id) && !(defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)) {
// set the new post title
$post->ID =$post_id;
$post->post_title =$md;

// update the post, removing the action to prevent an infinite loop
remove_action('save_post', 'post_updated');
wp_update_post($post); add_action('save_post', 'post_updated'); return; } }  Now, I'm in a worse situation, the post title is instantly set but my meta-box data is somehow not being saved. What might be wrong with the first solution? - On the first block of code : echo esc_attr(htmlspecialchars($md)); won't have a value in your hidden input until you save... hence needing to save twice to set the title. What is the name of the field you want to base the post title off of? –  helgatheviking Jul 16 '13 at 13:48
@helgatheviking No I think, $md has value after submtting the form. just checkecd. – JeyKeu Jul 16 '13 at 14:29 yes, that's what you said in your question: "I need to update the post twice to set the post title." On a new post this hidden field isn't populated until the post is saved the first time, requiring you to save a second time to trigger the post title. – helgatheviking Jul 16 '13 at 14:34 ## 1 Answer Here's a solution that take's advantage of Rilwis' action hook... so you can profit from his nonce checking without needing to add your own. add_action('rwmb_after_save_post', 'post_updated'); function post_updated($post_id) {

// verify post is not a revision & not an autosave
if (!wp_is_post_revision($post_id) && !(defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)) { global$prefix;
$prefix . 'name'; // check that the custom field is being POSTED if( isset($_POST[$prefix . 'name'] ) ){$my_post = array();
$my_post['ID'] =$post_id;
$my_post['post_title'] = sanitize_title($_POST[$prefix . 'name'] ); // Update the post into the database wp_update_post($my_post );

}

}
}


To limit this function to only run for a specific metabox, you could use this add_action instead:

add_action("rwmb_{\$meta_box['id']}_after_save_post", 'post_updated');


Without seeing your metabox definitions, I don't know what to change the ID to, so you will have to do that.

NB: Untested, but I think it is close. Please see wp_update_post() in the codex for how that function works.

-
Thanks! That Solved my problem. –  JeyKeu Jul 16 '13 at 14:39