Une meta box pour ses articles à la une

Des articles à la une

Ici on va voir comment on peut rajouter une meta box dans la page d’édition d’un article.
Cette nouvelle box nous permettra de classer les articles en « articles recommandés »

reco

Voici le code à insérer dans functions.php

function recommandations_meta() {
add_meta_box( 'recommandations_meta', __( 'Recommandations', 'site' ), 'recommandations_meta_callback', 'post', 'side', 'high' );
}
add_action( 'add_meta_boxes', 'recommandations_meta' );

/**
* Outputs the content of the meta box
*/

function recommandations_meta_callback( $post ) {
wp_nonce_field( basename( __FILE__ ), 'recommandations_nonce' );
$recommandations_stored_meta = get_post_meta( $post->ID );
?>

<p>
<span class="site-row-title"><?php _e( 'Cochez pour l&apos;inclure dans les recommandations: ', 'site' )?></span>
<div class="site-row-content">
<label for="recommandations-checkbox">
<input type="checkbox" name="recommandations-checkbox" id="recommandations-checkbox" value="yes" <?php if ( isset ( $recommandations_stored_meta['recommandations-checkbox'] ) ) checked( $recommandations_stored_meta['recommandations-checkbox'][0], 'yes' ); ?> />
<?php _e( 'Recommandation', 'site' )?>
</label>

</div>
</p>

<?php
}

/**
* Saves the custom meta input
*/
function recommandations_meta_save( $post_id ) {

$is_autosave = wp_is_post_autosave( $post_id );
$is_revision = wp_is_post_revision( $post_id );
$is_valid_nonce = ( isset( $_POST[ 'recommandations_nonce' ] ) && wp_verify_nonce( $_POST[ 'recommandations_nonce' ], basename( __FILE__ ) ) ) ? 'true' : 'false';

if ( $is_autosave || $is_revision || !$is_valid_nonce ) {
return;
}

if( isset( $_POST[ 'recommandations-checkbox' ] ) ) {
update_post_meta( $post_id, 'recommandations-checkbox', 'yes' );
} else {
update_post_meta( $post_id, 'recommandations-checkbox', 'no' );
}

}
add_action( 'save_post', 'recommandations_meta_save' );

Ce code va donc automatiquement rajouter la box dans chaque article à droite de l’éditeur de texte.

Comment utiliser notre meta box

Ensuite, pour en faire bon usage, il va falloir utiliser notre meta box comme argument dans nos boucles.Voici donc la partie de la boucle qui nous interesse, à placer dans le fichier concerné (index.php, pages d’archives, ou single.php)

$args = array(
'post_type' =>'post', 'posts_per_page'=> 6, 'post__not_in' => array($post->ID), 'meta_query' => array(
array(
'key' => 'recommandations-checkbox',
'value' => 'yes'
)
)
);

$featured_query = new WP_Query($args);

while ($featured_query->have_posts()) : $featured_query->the_post();

c’est l’argument meta_query qui nous permet ici de cibler les articles dans lesquels on aura coché la case « recommandations » et qui va modifier la boucle pour n’afficher que les « articles recommandés »

L’argument post__not_in’ => array($post>ID)), est ici pour éviter d’ afficher l’article en cours