Support » Fixing WordPress » Add an extra text input field on admin post page

  • Resolved Matt

    (@webmasterifcj)


    Hello,

    What i would like to do is add another section of the admin post page template that would allow for a second excerpt of sorts.

    With this new field I would like to display this extra excerpt on our home page. The excerpt that is already available to us is being used right now and we would like to add an extra one.

    Is this an easy thing to do?

Viewing 15 replies - 1 through 15 (of 23 total)
  • Justin Tadlock

    (@greenshady)

    WordPress God

    Not extremely hard. Use the Second Excerpt custom field key to grab the information on the frontend.

    add_action( 'admin_menu', 'my_create_post_meta_box' );
    add_action( 'save_post', 'my_save_post_meta_box', 10, 2 );
    
    function my_create_post_meta_box() {
    	add_meta_box( 'my-meta-box', 'Second Excerpt', 'my_post_meta_box', 'post', 'normal', 'high' );
    }
    
    function my_post_meta_box( $object, $box ) { ?>
    	<p>
    		<label for="second-excerpt">Second Excerpt</label>
    		<br />
    		<textarea name="second-excerpt" id="second-excerpt" cols="60" rows="4" tabindex="30" style="width: 97%;"><?php echo wp_specialchars( get_post_meta( $object->ID, 'Second Excerpt', true ), 1 ); ?></textarea>
    		<input type="hidden" name="my_meta_box_nonce" value="<?php echo wp_create_nonce( plugin_basename( __FILE__ ) ); ?>" />
    	</p>
    <?php }
    
    function my_save_post_meta_box( $post_id, $post ) {
    
    	if ( !wp_verify_nonce( $_POST['my_meta_box_nonce'], plugin_basename( __FILE__ ) ) )
    		return $post_id;
    
    	if ( !current_user_can( 'edit_post', $post_id ) )
    		return $post_id;
    
    	$meta_value = get_post_meta( $post_id, 'Second Excerpt', true );
    	$new_meta_value = stripslashes( $_POST['second-excerpt'] );
    
    	if ( $new_meta_value && '' == $meta_value )
    		add_post_meta( $post_id, 'Second Excerpt', $new_meta_value, true );
    
    	elseif ( $new_meta_value != $meta_value )
    		update_post_meta( $post_id, 'Second Excerpt', $new_meta_value );
    
    	elseif ( '' == $new_meta_value && $meta_value )
    		delete_post_meta( $post_id, 'Second Excerpt', $meta_value );
    }
    Matt

    (@webmasterifcj)

    Great,

    I will look into this a little further. Thanks for the reply.

    Matt

    (@webmasterifcj)

    I’m sorry can you help me out here. I’m a little confused as to were this needs to go and or be.

    What file am I updating here.

    Your theme’s functions.php would be the easiest..

    You need ensure code is correctly inserted inside the PHP tags..

    <?php

    and

    ?>

    Matt

    (@webmasterifcj)

    Thanks!

    Matt

    (@webmasterifcj)

    Okay last question. I have added this to functions.php now if I want to display this on my post.php page what would the call be?

    <?php Second Excerpt(); ?>

    Is that right?

    Matt

    (@webmasterifcj)

    Any ideas?

    See using get_post_meta, info below.

    http://codex.wordpress.org/Custom_Fields#PostMeta_Functions
    http://codex.wordpress.org/Function_Reference/get_post_meta

    Simply reference the name you used in the above provided code by Justin.

    Matt

    (@webmasterifcj)

    Thanks guys I did figure this out after a while of staring at the code and my screen.

    If I wanted to add the tool bar that allows to add images, video, etc to this extra input box just like the main content box… how can I do that?

    I’m going to look around but just thought I would start by asking here.

    thanks again!

    Matt

    (@webmasterifcj)

    Last question can this value be saved into the wp_post table if I insert a new column on the database side?

    The information is already stored in your DB, in the meta table.

    Matt

    (@webmasterifcj)

    Okay I have the box and everything is working just fine. Thanks guys! I had one more question regarding this newly added box to the admin post page.

    I would like to add the upload and insert toolbar to this newly added box. Is this something that can be done? if so can someone point me in the right direction. I have been looking for something on this and haven’t found anything.

    Thanks for your help 🙂

    Look at how the QuickPress widget does it.. (to save you looking though)

    if ( current_user_can( 'upload_files' ) ) {
    			?>
    			<div id="media-buttons" class="hide-if-no-js">
    				<?php do_action( 'media_buttons' ); ?>
    			</div>
    			<?php
    		}

    I’d imagine (in theory) that adding the above where you want the buttons would be sufficient..

    Matt

    (@webmasterifcj)

    t31os_ – Thanks a lot I will try this right now.

    Thanks again for the quick responses

    Matt

    (@webmasterifcj)

    Alright I have this working for the new meta box that I have created.

    When I click to add image the syntax gets added to the main post box and not the box that I would like it to be added to. here is a look at my code again thanks for any insight you guys may have:

    add_action( 'admin_menu', 'my_create_post_meta_box' );
    add_action( 'save_post', 'my_save_post_meta_box', 10, 2 );
    
    function my_create_post_meta_box() {
    	add_meta_box( 'my-meta-box', 'Second Excerpt', 'my_post_meta_box', 'post', 'normal', 'high' );
    }
    
    function my_post_meta_box( $object, $box ) { ?>
        <p>
        	<?php if ( current_user_can( 'upload_files' ) ) : ?>
               <div id="media-buttons" class="hide-if-no-js">
    		   <?php do_action( 'media_buttons' ); ?>
               </div>
               <?php endif; ?>
            <br />
    		<label for="second-excerpt">Second Excerpt With Images for Post List Page</label>
    		<textarea name="second-excerpt" id="second-excerpt" cols="60" rows="4" tabindex="30" style="width: 97%;"><?php echo wp_specialchars( get_post_meta( $object->ID, 'Second Excerpt', true ), 1 ); ?></textarea>
    		<input type="hidden" name="my_meta_box_nonce" value="<?php echo wp_create_nonce( plugin_basename( __FILE__ ) ); ?>" />
    	</p>
    <?php }
    
    function my_save_post_meta_box( $post_id, $post ) {
    
    	if ( !wp_verify_nonce( $_POST['my_meta_box_nonce'], plugin_basename( __FILE__ ) ) )
    		return $post_id;
    
    	if ( !current_user_can( 'edit_post', $post_id ) )
    		return $post_id;
    
    	$meta_value = get_post_meta( $post_id, 'Second Excerpt', true );
    	$new_meta_value = stripslashes( $_POST['second-excerpt'] );
    
    	if ( $new_meta_value && '' == $meta_value )
    		add_post_meta( $post_id, 'Second Excerpt', $new_meta_value, true );
    
    	elseif ( $new_meta_value != $meta_value )
    		update_post_meta( $post_id, 'Second Excerpt', $new_meta_value );
    
    	elseif ( '' == $new_meta_value && $meta_value )
    		delete_post_meta( $post_id, 'Second Excerpt', $meta_value );
    }

Viewing 15 replies - 1 through 15 (of 23 total)
  • The topic ‘Add an extra text input field on admin post page’ is closed to new replies.