web-dev-qa-db-fra.com

comment attribuer un statut/marque à poster?

Je souhaite marquer certains messages pour les inclure dans un curseur de contenu en vedette. À cette fin, je souhaite inclure une case à cocher sur la nouvelle page de publication afin que, si cette case est cochée, la publication soit marquée comme étant en vedette. Ensuite, je peux afficher tous les articles marqués dans le curseur. Comment cela peut être fait? Merci.

7
Oram

Vous pouvez créer votre propre méta-case avec une case à cocher et sélectionner uniquement les publications où elles ont été cochées:

Ajouter le code metabox

/* 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');
        }
      }
}

Requête des messages qui ont été vérifiés

$args = array(
    'posts_per_page' => -1
    'meta_query' => array(
        array(
            'key' => 'my_slider_field',
            'value' => true
        )
    );
$slider_query = new WP_Query($args);
9
Bainternet