Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

I want to mark some posts to include them in a featured content slider. For that purpose, I want to include a check box on the new post page, so that if the checkbox is selected the post is marked as featured. Then I can display all marked posts in the slider. How this can be done? Thanks.

share|improve this question
    
This is usually done either placing the featured posts in featured category or tagging them with featured tag. It depends on your theme but 99% of the time its either of the tagging or featured category selection. –  Hameedullah Khan May 25 '11 at 8:53
    
sticky is also sometimes used for this –  anu May 25 '11 at 10:18

1 Answer 1

You can create your own meta box with a checkbox and only select posts that where checked:

Add metabox code

/* Define the custom box */
add_action( 'add_meta_boxes', 'my_slider_add_custom_box' );

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

/* Adds a box to the main column on the Post and Page edit screens */
function my_slider_add_custom_box() {
    add_meta_box( 
        'my_slider_sectionid',
        __( 'my slider', 'my_slider_textdomain' ),
        'my_slider_inner_custom_box',
        'post' 
    );
}

/* Prints the box content */
function my_slider_inner_custom_box() {
    global $post;
    // Use nonce for verification
    wp_nonce_field( plugin_basename( __FILE__ ), 'my_slider_noncename' );
    $saved = get_post_meta($post->ID,'my_slider_field',true);
    // The actual fields for data entry
    echo '<label for="my_slider_field">';
    _e("Check the box if you want this post to show in the slider", 'myplugin_textdomain' );
    echo '</label> ';
    echo '<input type="checkbox" id="my_slider_field" name="my_slider_field" value="yes"';
    echo  ($saved) ? 'checked': '';
    echo '/>';
}

/* When the post is saved, saves our custom data */
function my_slider_save_postdata( $post_id ) {
      // verify if this is an auto save routine. 
      // If it is our form has not been submitted, so we dont want to do anything
      if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) 
          return;

      // verify this came from the our screen and with proper authorization,
      // because save_post can be triggered at other times

      if ( !wp_verify_nonce( $_POST['my_slider_noncename'], plugin_basename( __FILE__ ) ) )
          return;

      // OK, we're authenticated: we need to find and save the data
        $old = get_post_meta($post_id,'my_slider_field',true);
      if (isset($_POST['my_slider_field']) && $_POST['my_slider_field'] == "yes"){
            update_post_meta($post_id,'my_slider_field',true);
      }else{
        if (!empty($old)){
            delete_post_meta($post_id,'my_slider_field');
        }
      }
}

Query posts that were checked

$args = array(
    'posts_per_page' => -1
    'meta_query' => array(
        array(
            'key' => 'my_slider_field',
            'value' => true
        )
    );
$slider_query = new WP_Query($args);
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.