web-dev-qa-db-fra.com

Afficher un message personnalisé sur la page d'accueil en fonction d'une sélection de métabox

J'essaie d'afficher un message sur ma page d'accueil en fonction d'une sélection. Ce que je veux dire, c’est que dans le backend, j’ai une publication personnalisée avec une métabox intitulée Assign to Home avec une liste déroulante avec une sélection de Oui ou de Non. sera affiché sur la page d'accueil. Quand une sélection dit non, elle ne sera pas affichée.

Le code ci-dessous correspond à ce que j'essaie d'utiliser pour appeler mon message. Le type de message et la clé méta sont corrects, mais lorsque j'essaie d'afficher mon message, je reçois un tableau.

page d'accueil

 <?php function posts_draft($meta_values) {
    $args_draft = array(
      'numberposts'   => 3,
      'post_type'     => 'fe', // set you custom post type
      'meta_key'      => '_cmb_homeDisplay',
      'meta_value'    => $meta_values,
    );
     $my_posts_draft = get_posts( $args_draft ); 
     $posts_draft = get_posts($my_posts_draft);
       return $posts_draft;
     }
     {
      echo posts_draft('yes');}
 ?>

  <?php if ( $fleet->have_posts() ) : while ( $fleet->have_posts() ) : $fleet->the_post(); ?>     
    <div class="fleetBox">
    <img src="<?php echo get_post_meta($post->ID, "_cmb_limoThumbnail", true); ?>" />
       <ul>
            <li><h3><?php the_title( '' ); ?></h3></li>
            <li><h4>Luxury <?php echo get_post_meta($post->ID, '_cmb_limo_select', true); ?></h4></li>
            <li><a href="<?php echo get_permalink(); ?>">More Details</a></li>
        </ul>
    </div>
 <?php endwhile; endif; ?>

Je sais que cela n’est peut-être pas utile, car c’est une quantité importante de code, mais c’est ce que j’utilise pour afficher ma liste déroulante. Ce code est un petit extrait du type de message personnalisé complet que j'utilise.

Le type de message utilisé pour cet extrait est fe et la clé méta affectée à tous mes ID préfixe est cmb

  array(
    'name'    => 'Display Home',
    'desc'    => 'Select an option',
    'id'      => $prefix . 'homeDisplay',
    'type'    => 'select',
    'options' => array(
       'custom' => __( 'Select...', 'cmb' ),
       'standard'   => __( 'Yes', 'cmb' ),
       'none'     => __( 'No', 'cmb' ),
 ),
       'default' => 'custom',
 ),
2
user3756781

On dirait que vous utilisez les boîtes à méta personnalisées et les champs github repo, qui sont une bibliothèque géniale. Je pense que la principale chose que vous devez faire est un nouveau WP_Query. Vous trouverez ci-dessous un exemple de cette action. La seule différence est que, dans mon exemple, j'ai coché la case "Attribuer à la page d'accueil" dans le type de publication personnalisé.

<?php
   $args = array(
   'post_type'  => 'testimonial',
   'meta_key'   => '_wla_homepage_slider_checkbox',
   'meta_value' => 'on',
   'post_per_page' => 100, /* add a reasonable max # rows */
   'no_found_rows' => true, /* don't generate a count as part of query, unless you need it. */
   );
 $testimonials = new WP_Query( $args );
?>

À partir de là, vous pouvez parcourir votre boucle personnalisée et extraire les métadonnées si nécessaire.

2
mrbobbybryant