Original Question:
I’m trying to add an input field to ‘Pages > Edit Page’. The use of this input field will be for a user to add an ID of a slider, so that that slider will be page specific.
Example:
- User adds slide ID to input field on Edit Page screen.
- Page pulls in that ID.
Thank you to all of you who have responded, you are a wonderful community, I have received excellent help from this site, thank you!
FINAL RESULT
functions.php
// Add custom Slider ID field to 'Edit Page'
add_action( 'add_meta_boxes', 'cd_meta_box_add' );
function cd_meta_box_add() {
add_meta_box( 'my-meta-box-id', 'Slider', 'cd_meta_box_cb', 'page', 'normal', 'high' );
}
function cd_meta_box_cb( $post ) {
$values = get_post_custom( $post->ID );
$text = isset( $values['my_meta_box_text'] ) ? esc_attr( $values['my_meta_box_text'][0] ) : '';
wp_nonce_field( 'my_meta_box_nonce', 'meta_box_nonce' );
?>
<p>
<label for="my_meta_box_text">Add a slider ID</label>
<input type="text" name="my_meta_box_text" id="my_meta_box_text" value="<?php echo $text; ?>" />
</p>
<?php
}
add_action( 'save_post', 'cd_meta_box_save' );
function cd_meta_box_save( $post_id ) {
// Bail if we're doing an auto save
if( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;
// if our nonce isn't there, or we can't verify it, bail
if( !isset( $_POST['meta_box_nonce'] ) || !wp_verify_nonce( $_POST['meta_box_nonce'], 'my_meta_box_nonce' ) ) return;
// if our current user can't edit this post, bail
if( !current_user_can( 'edit_post', $post_id ) ) return;
// now we can actually save the data
$allowed = array(
'a' => array( // on allow a tags
'href' => array() // and those anchords can only have href attribute
)
);
// Probably a good idea to make sure your data is set
if( isset( $_POST['my_meta_box_text'] ) )
update_post_meta( $post_id, 'my_meta_box_text', wp_kses( $_POST['my_meta_box_text'], $allowed ) );
}
Page.php
<?php echo do_shortcode( '[cycloneslider id="' . get_post_meta(get_the_ID(), 'my_meta_box_text', true) . '"]'); ?>
functions.php
Page.php
First of all, you should use custom fields, if you want to assign some additional value to post/page and not globally for site.
Then you should use
add_meta_box
function to register your custom meta box, which will allow to edit these custom fields easily.Here is a sample code:
It’s only basic example how to do this. You should take care of security (use nonces) and other things, I guess. But the idea should be clear now.
(6 chars)
If you want to save slider id for the page specific for all pages then you should go with using post meta boxes instead of wp options.
To get value from post meta use get_post_meta() function in place of get_option() function.