Skip to content

Instantly share code, notes, and snippets.

@rbk
Created October 1, 2015 17:06
Show Gist options
  • Save rbk/ed61157c43c890fc3d62 to your computer and use it in GitHub Desktop.
Save rbk/ed61157c43c890fc3d62 to your computer and use it in GitHub Desktop.
Slider metabox for links
<?php
/**
* Generated by the WordPress Meta Box generator
* at http://jeremyhixon.com/tool/wordpress-meta-box-generator/
*/
function slide_link_get_meta( $value ) {
global $post;
$field = get_post_meta( $post->ID, $value, true );
if ( ! empty( $field ) ) {
return is_array( $field ) ? stripslashes_deep( $field ) : stripslashes( wp_kses_decode_entities( $field ) );
} else {
return false;
}
}
function slide_link_get_meta_by_id( $value, $slide_id ) {
global $post;
$field = get_post_meta( $slide_id, $value, true );
if ( ! empty( $field ) ) {
return is_array( $field ) ? stripslashes_deep( $field ) : stripslashes( wp_kses_decode_entities( $field ) );
} else {
return false;
}
}
function slide_link_add_meta_box() {
add_meta_box(
'slide_link-slide-link',
__( 'Slide Link', 'slide_link' ),
'slide_link_html',
'rbk_slides',
'normal',
'core'
);
}
add_action( 'add_meta_boxes', 'slide_link_add_meta_box' );
function slide_link_html( $post) {
wp_nonce_field( '_slide_link_nonce', 'slide_link_nonce' ); ?>
<p>Link this slide to a page</p>
<p>
<label for="slide_link_custom_url"><?php _e( 'Custom Url', 'slide_link' ); ?></label><br>
<input type="text" name="slide_link_custom_url" id="slide_link_custom_url" value="<?php echo slide_link_get_meta( 'slide_link_custom_url' ); ?>">
</p>
<p>
<label for="slide_link_in_page_link"><?php _e( 'In Page Link', 'slide_link' ); ?></label><br>
<select name="slide_link_in_page_link" id="slide_link_in_page_link">
<option value=""></option>
<optgroup label="Pages">
<?php
$id = slide_link_get_meta( 'slide_link_in_page_link' );
$pages = get_posts(array('post_type'=>'page', 'posts_per_page'=> -1));
foreach( $pages as $page ){
if( $page->ID == $id ){
$selected = 'selected';
} else {
$selected = '';
}
echo '<option value="'.$page->ID.'" ' . $selected . '>'.$page->post_title.'</option>';
}
?>
</optgroup>
<optgroup label="Posts">
<?php
$id = slide_link_get_meta( 'slide_link_in_page_link' );
$pages = get_posts(array('post_type'=>'posts', 'posts_per_page'=> -1));
foreach( $pages as $page ){
if( $page->ID == $id ){
$selected = 'selected';
} else {
$selected = '';
}
echo '<option value="'.$page->ID.'" ' . $selected . '>'.$page->post_title.'</option>';
}
?>
</optgroup>
</select>
</p>
<p>
<label for="rbk_slide_button_text"><?php _e( 'Button Text', 'button_text' ); ?></label><br>
<input type="text" name="rbk_slide_button_text" id="rbk_slide_button_text" value="<?php echo slide_link_get_meta( 'rbk_slide_button_text' ); ?>">
</p>
<?php
}
function slide_link_save( $post_id ) {
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;
if ( ! isset( $_POST['slide_link_nonce'] ) || ! wp_verify_nonce( $_POST['slide_link_nonce'], '_slide_link_nonce' ) ) return;
if ( ! current_user_can( 'edit_post', $post_id ) ) return;
if ( isset( $_POST['slide_link_custom_url'] ) )
update_post_meta( $post_id, 'slide_link_custom_url', esc_attr( $_POST['slide_link_custom_url'] ) );
if ( isset( $_POST['slide_link_in_page_link'] ) )
update_post_meta( $post_id, 'slide_link_in_page_link', esc_attr( $_POST['slide_link_in_page_link'] ) );
if ( isset( $_POST['rbk_slide_button_text'] ) )
update_post_meta( $post_id, 'rbk_slide_button_text', esc_attr( $_POST['rbk_slide_button_text'] ) );
}
add_action( 'save_post', 'slide_link_save' );
/*
Usage: slide_link_get_meta( 'slide_link_custom_url' )
Usage: slide_link_get_meta( 'slide_link_in_page_link' )
*/
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment