Skip to content

Instantly share code, notes, and snippets.

@csbeck
Created May 18, 2013 18:37

Revisions

  1. csbeck created this gist May 18, 2013.
    78 changes: 78 additions & 0 deletions gistfile1.txt
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,78 @@
    <?php

    /** Add custom meta box **/
    add_action( 'add_meta_boxes', 'myplugin_add_custom_box' );

    // backwards compatible (before WP 3.0)
    // add_action( 'admin_init', 'myplugin_add_custom_box', 1 );

    /* Do something with the data entered */
    add_action( 'save_post', 'myplugin_save_postdata' );

    /* Adds a box to the main column on the Post and Page edit screens */
    function myplugin_add_custom_box() {
    $screens = array( 'post', 'page' );
    foreach ($screens as $screen) {
    add_meta_box(
    'myplugin_sectionid',
    __( 'Custom Sub-Title Text', 'myplugin_textdomain' ),
    'myplugin_inner_custom_box',
    $screen
    );
    }
    }

    /* Prints the box content */
    function myplugin_inner_custom_box( $post ) {

    // Use nonce for verification
    wp_nonce_field( plugin_basename( __FILE__ ), 'myplugin_noncename' );

    // The actual fields for data entry
    // Use get_post_meta to retrieve an existing value from the database and use the value for the form
    $value = get_post_meta( $post->ID, 'subtitle_text', true );
    echo '<label for="myplugin_new_field">';
    _e("Please enter the custom text that follows the page title.", 'myplugin_textdomain' );
    echo '</label> ';
    echo '<input type="text" id="myplugin_new_field" name="myplugin_new_field" value="'.esc_attr($value).'" size="80" />';
    }

    /* When the post is saved, saves our custom data */
    function myplugin_save_postdata( $post_id ) {

    // First we need to check if the current user is authorised to do this action.
    if ( 'page' == $_POST['post_type'] ) {
    if ( ! current_user_can( 'edit_page', $post_id ) )
    return;
    } else {
    if ( ! current_user_can( 'edit_post', $post_id ) )
    return;
    }

    // Secondly we need to check if the user intended to change this value.
    if ( ! isset( $_POST['myplugin_noncename'] ) || ! wp_verify_nonce( $_POST['myplugin_noncename'], plugin_basename( __FILE__ ) ) )
    return;

    // Thirdly we can save the value to the database

    //if saving in a custom table, get post_ID
    $post_ID = $_POST['post_ID'];
    //sanitize user input
    $mydata = sanitize_text_field( $_POST['myplugin_new_field'] );

    // Do something with $mydata
    update_post_meta($post_ID, 'subtitle_text', $mydata);
    }

    /**
    * @author Brad Dalton - WP Sites
    *
    * @link http://wpsites.net/web-design/code-snippets-for-adding-custom-functions/
    */
    add_action( 'genesis_after_post_title', 'custom_field_before_content' );
    function custom_field_before_content() {
    if(is_page() || is_single() ) {
    genesis_custom_field('subtitle_text');
    }
    }