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.
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:
/* 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');
}
}
}
$args = array(
'posts_per_page' => -1
'meta_query' => array(
array(
'key' => 'my_slider_field',
'value' => true
)
);
$slider_query = new WP_Query($args);