how to assign a status/mark to post?

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.

Related posts

Leave a Reply

1 comment

  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);