web-dev-qa-db-fra.com

champ personnalisé avancé Afficher la catégorie dans la catégorie spéciale

Je suis un grand fan du plugin Advanced Custom Fields
http://www.advancedcustomfields.com/

J'ai développé un site où il y a 2 types de catégories: normal et "personnalisé". La plupart des catégories s'affichent normalement comme tout autre site affichant les publications dans la page archive.php et certaines archives affichent dans un modèle spécial de "catégorie" qui J'ai créé ce qui s'appelle différemment: “ category-projects.php

il s'agit d'une page spéciale "archive" ou "catégorie" qui affiche un modèle d'archive différent pour les publications spéciales.

ce modèle fonctionne bien et en utilisant une fonction que j'ai créée et tout semble bien.

Maintenant, j'essaie de créer un curseur ACF en utilisant le répéteur génial que j'ai dans ce modèle de catégorie spéciale. J'ai donc créé ce nouveau groupe appelé " post_slider_projects " et un champ de répéteur simple pour les images appelé: " post_slide_projects "

Maintenant, j’ai assigné les règles à afficher dans la catégorie et je le vois lorsque je navigue dans la section des catégories de mon administrateur.

jusqu'à ce point tout fonctionne. le seul problème est qu'il ne s'affiche pas lorsque je regarde le site dans cette page de catégorie spéciale.

voici le code que j'utilisais pour l'afficher:

<?php if(get_field('post_slider_projects')){ ?>
<div class="post-section">
      <section class="flexslider">
        <ul class="slides">
          <?php while( has_sub_field('post_slider_projects') ){ 
            $post_slide_projects = get_sub_field('post_slide_projects');
            ?>
          <li class="latest-post"> <img alt="" src="<?php echo $post_slide_projects;?>"/> </li>
          <!--latest-post-->
          <?php } ?>
          <?php } else{ ?>
           <img alt="" src="<?php bloginfo('template_directory'); ?>/assets/images/slider-img1.jpg"/>
           <?php } ?>
        </ul>
      </section>
    </div>
<?php } ?>

Toute aide serait appréciée
Merci beaucoup

1
gil hamer

Les fonctions de l'API ACF fonctionnent normalement avec l'ID de la publication actuelle. Les taxonomies et les utilisateurs fonctionnent un peu différemment, vous devez fournir l'ID de l'objet pour lequel vous voulez récupérer les champs.

$category_id = 'category_' . get_queried_object_id();
$field = get_field( 'post_slider_projects', $category_id );

Voir get_field dans la documentation pour plus d'informations.

1
Milo

Donc, avec le conseil que j'ai reçu de @Milo ci-dessus et après quelques modifications, je me suis retrouvé avec le code de travail suivant :

<div class="post-section">
      <section class="flexslider">
        <ul class="slides">
          <?php 
          $category_id = 'category_' . get_queried_object_id();
          $field = get_field( 'post_slider_projects', $category_id );
          if($field){
          while( has_sub_field('post_slider_projects', $category_id) ){ 
          $post_slide_projects = get_sub_field('post_slide_projects', $category_id);
         ?>
          <li class="latest-post"> <img alt="" src="<?php echo $post_slide_projects;?>"/> </li>
          <?php } ?>
          <?php } else{ ?>
           <img alt="" src="<?php bloginfo('template_directory'); ?>/assets/images/slider-img1.jpg"/>
           <?php 
        } ?>
        </ul>
      </section>
    </div>

J'espère que ça aide n'importe qui!

0
gil hamer