web-dev-qa-db-fra.com

Comment vérifier la valeur d'une méta-boîte spécifique sur le front-end et la sortie en conséquence

J'ai une méta-boîte personnalisée avec deux boutons radio différents qui peuvent être sélectionnés. L'une est destinée à afficher le contenu dans un "grand" format, l'autre à afficher le contenu dans un "petit" format au début.

Je sais déjà comment récupérer les données d'une méta-boîte et les afficher, mais pas comment "vérifier" quelles données spécifiques ont été sélectionnées, ni comment obtenir cette sortie en fonction de la valeur sélectionnée. ( Il convient de noter que je vais utiliser ces données pour générer une classe CSS spécifique qui peut ensuite être appliquée à un autre bloc de code désigné pour cette sélection )

Voici ce que j'ai pour ma boîte à méta (MISE À JOUR):

<?php
// Register Custom Post Type Meta Box for EPR Music Releases CPT -- Album Sizes
add_action( 'add_meta_boxes', 'musicreleases_albumsize_meta_box_add' );
function musicreleases_albumsize_meta_box_add()
{
    add_meta_box( 'musicreleases_albumsize_meta_id', 'Album Size', 'musicreleases_albumsize_meta_box_cb', 'eprmusicrelease', 'normal', 'low' );
}

function musicreleases_albumsize_meta_box_cb( $post )
{
    $value = get_post_meta( $post->ID,'meta_box_musicreleases_albumsize',true );
    wp_nonce_field( 'my_meta_box_nonce', 'meta_box_nonce' );
    ?>
    <p>
        <input type="radio" name="albumsize" value="album_small" <?php echo ($value == 'album_small')? 'checked="checked"':''; ?>/> Small<br />
        <input type="radio" name="albumsize" value="album_large" <?php echo ($value == 'album_large')? 'checked="checked"':''; ?>/> Large<br />
    </p>
    <?php   
}

add_action( 'save_post', 'musicreleases_albumsize_meta_box_save' );
function musicreleases_albumsize_meta_box_save( $post_id ){
    if( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;
    if( !isset( $_POST['meta_box_nonce'] ) || !wp_verify_nonce( $_POST['meta_box_nonce'], 'my_meta_box_nonce' ) ) return;
    if( !current_user_can( 'edit_post' ) ) return;

    //accepted values whitelist
    $allowed = array('album_small','album_large');

    if( isset( $_POST['albumsize'] )  && in_array($_POST['albumsize'], $allowed))
        update_post_meta( $post_id, 'meta_box_musicreleases_albumsize',  $_POST['albumsize'] );
}
?>

... Comme vous pouvez le constater, la boîte aux lettres méta permet à l'utilisateur de choisir si l'album doit être affiché sous forme de version LARGE ou SMALL.

Ceci est mon modèle actuel auquel je dois ajouter ces données pour le front-end (UPDATED):

<?php
/*
Template Name: Music Releases
*/
?>

<div class="widget_wrapper">

    <h2 class="widgettitle">Releases</h2>

    <?php $music_releases = new WP_Query(array('post_type' => 'eprmusicrelease')); ?>
    <?php if($music_releases->have_posts()): while ($music_releases->have_posts() ) : $music_releases->the_post(); ?>

        <?php if($album_url = get_post_meta($post->ID, 'meta_box_musicreleases_url', true)): ?>

            <?php $album_size = get_post_meta( $post->ID,'meta_box_musicreleases_albumsize',true ); ?>
            <?php if($album_size == 'album_small'): ?>

                    <div class="release_small">
                        <a href="<?php echo esc_url($album_url); ?>" title="<?php the_title_attribute(); ?>" target="_blank"></a>
                        <?php if($url_type = get_post_meta($post->ID, 'meta_box_musicreleases_linktype', true)): ?>
                            <div class="<?php echo ($url_type); ?>"></div>
                        <?php else: ?>
                        <?php endif; ?>
                        <?php the_post_thumbnail('music-release-img-sm'); ?>
                    </div>

            <?php elseif($album_size == 'album_large'): ?>

                <div class="release_large">
                    <a href="<?php echo esc_url($album_url); ?>" title="<?php the_title_attribute(); ?>" target="_blank"></a>
                    <?php if($url_type = get_post_meta($post->ID, 'meta_box_musicreleases_linktype', true)): ?>
                        <div class="<?php echo ($url_type); ?>"></div>
                    <?php else: ?>
                    <?php endif; ?>
                    <?php the_post_thumbnail('music-release-img-lrg'); ?>
                </div>

            <?php else: ?>

                <!-- no radio button selected -->
                <div class="release_large">
                    <a href="<?php echo esc_url($album_url); ?>" title="<?php the_title_attribute(); ?>" target="_blank"></a>
                    <?php if($url_type = get_post_meta($post->ID, 'meta_box_musicreleases_linktype', true)): ?>
                        <div class="<?php echo ($url_type); ?>"></div>
                    <?php else: ?>
                    <?php endif; ?>
                    <?php the_post_thumbnail('music-release-img-lrg'); ?>
                </div>

            <?php endif; ?>

        <?php else: ?>

            <?php $album_size = get_post_meta( $post->ID,'meta_box_musicreleases_albumsize',true ); ?>
            <?php if($album_size == 'album_small'): ?>

                    <div class="release_small">
                        <?php if($url_type = get_post_meta($post->ID, 'meta_box_musicreleases_linktype', true)): ?>
                            <div class="<?php echo ($url_type); ?>"></div>
                        <?php else: ?>
                        <?php endif; ?>
                        <?php the_post_thumbnail('music-release-img-sm'); ?>
                    </div>

            <?php elseif($album_size == 'album_large'): ?>

                <div class="release_large">
                    <?php if($url_type = get_post_meta($post->ID, 'meta_box_musicreleases_linktype', true)): ?>
                        <div class="<?php echo ($url_type); ?>"></div>
                    <?php else: ?>
                    <?php endif; ?>
                    <?php the_post_thumbnail('music-release-img-lrg'); ?>
                </div>

            <?php else: ?>

                <!-- no radio button selected -->
                <div class="release_large">
                    <?php if($url_type = get_post_meta($post->ID, 'meta_box_musicreleases_linktype', true)): ?>
                        <div class="<?php echo ($url_type); ?>"></div>
                    <?php else: ?>
                    <?php endif; ?>
                    <?php the_post_thumbnail('music-release-img-lrg'); ?>
                </div>

            <?php endif; ?>

        <?php endif; ?>

    <?php endwhile; else: // NO POSTS // ?> 
    <?php endif; ?>
    <?php wp_reset_query(); ?>

</div>
1
Mr.Brown

Est-ce ce dont vous avez besoin?

$size = get_post_meta( $post->ID,'meta_box_musicreleases_featrelease',true );

if ($size == "display_lrg_release") {

    //do your large thing here

} elseif ($size == "display_sm_release") {

    //do your small thing here

} else {

    //do something when no radio is checked

}

...Je le pense.

1
userabuser