Skip to content

Instantly share code, notes, and snippets.

@jocastaneda
Last active March 19, 2017 17:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jocastaneda/f093a00b369fa2f49bb411cc7ef7e8e3 to your computer and use it in GitHub Desktop.
Save jocastaneda/f093a00b369fa2f49bb411cc7ef7e8e3 to your computer and use it in GitHub Desktop.
<?php
/**
* deargodwhy Metabox
*
* @package deargodwhy
*/
add_action( 'add_meta_boxes', 'deargodwhy_add_sidebar_layout_box', 10, 2 );
function deargodwhy_add_sidebar_layout_box( $type, $post ) {
add_meta_box(
'deargodwhy_sidebar_layout',
__( 'Sidebar Layout', 'deargodwhy' ),
'deargodwhy_sidebar_layout_callback',
'page',
'normal',
'high'
);
}
function deargodwhy_sidebar_layout_callback( $post ) {
$layouts = array(
'right-sidebar' => array(
'value' => 'right-sidebar',
'label' => __( 'Right Sidebar(default)', 'deargodwhy' ),
'thumbnail' => get_template_directory_uri() . '/images/right-sidebar.png',
),
'no-sidebar' => array(
'value' => 'no-sidebar',
'label' => __( 'No Sidebar','deargodwhy' ),
'thumbnail' => get_template_directory_uri() . '/images/no-sidebar.png',
),
);
wp_nonce_field( basename( __FILE__ ), 'deargodwhy_nonce' );
?>
<table class="form-table">
<tr>
<td colspan="4"><em class="f13"><?php esc_html_e( 'Choose Sidebar Template', 'deargodwhy' ); ?></em></td>
</tr>
<tr>
<td>
<?php
// Create a default value for the setting.
$layout = get_post_meta( $post->ID, 'deargodwhy_sidebar_layout', true );
if ( empty( $layout ) ) {
$meta = 'right-sidebar';
}
foreach ( $layouts as $field ) {
?>
<div class="radio-image-wrapper">
<label class="description">
<span><img src="<?php echo esc_url( $field['thumbnail'] ); ?>"/></span><br/>
<input type="radio" name="deargodwhy_sidebar_layout" value="<?php echo esc_attr( $field['value'] ); ?>" <?php checked( $field['value'], $layout ); ?>/>&nbsp;<?php echo esc_html( $field['label'] ); ?>
</label>
</div>
<?php } // End foreach().
?>
<div class="clear"></div>
</td>
</tr>
</table>
<?php
}
/**
* save the custom metabox data
* @hooked to save_post hook
*/
function deargodwhy_save_sidebar_layout( $post_id ) {
// Verify the nonce before proceeding.
if ( ! isset( $_POST['deargodwhy_nonce'] ) || ! wp_verify_nonce( $_POST['deargodwhy_nonce'], basename( __FILE__ ) ) ) {
return;
}
// Stop WP from clearing custom fields on autosave
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
return;
}
if ( 'page' === $_POST['post_type'] ) {
if ( ! current_user_can( 'edit_page', $post_id ) ) {
return $post_id;
}
} elseif ( ! current_user_can( 'edit_post', $post_id ) ) {
return $post_id;
}
if ( ! empty( $_POST['deargodwhy_sidebar_layout'] )
&& in_array( $_POST['deargodwhy_sidebar_layout'], array( 'right-sidebar', 'no-sidebar' ), true )
) {
update_post_meta( $post_id, 'deargodwhy_sidebar_layout', $_POST['deargodwhy_sidebar_layout'] );
}
}
add_action( 'save_post' , 'deargodwhy_save_sidebar_layout' );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment