IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WordPress PHP Discussion :

Répéter un champ ACF dans la query PHP


Sujet :

WordPress PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de Reggio
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juin 2009
    Messages : 17
    Par défaut Répéter un champ ACF dans la query PHP
    Bonjour à tous,

    J'ai créé un champ ACF de type bouton radio afin d'appliquer une note sur 5 à mes articles. Je l'ai d'abord fait de manière laide :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
                        <div class="card_title"><?php the_title(); ?></div>
                        <?php if( get_field('note') == '1' ): ?>
                            <i class="fas fa-star"></i>
                            <i class="far fa-star"></i>
                            <i class="far fa-star"></i>
                            <i class="far fa-star"></i>
                            <i class="far fa-star"></i>
                        <?php endif; ?>
                        <?php if( get_field('note') == '2s' ): ?>
                            <i class="fas fa-star"></i>
                            <i class="fas fa-star"></i>
                            <i class="far fa-star"></i>
                            <i class="far fa-star"></i>
                            <i class="far fa-star"></i>
                        <?php endif; ?>                    
                        <?php if( get_field('note') == '3s' ): ?>
                            <i class="fas fa-star"></i>
                            <i class="fas fa-star"></i>
                            <i class="fas fa-star"></i>
                            <i class="far fa-star"></i>
                            <i class="far fa-star"></i>
                        <?php endif; ?>
                        <?php if( get_field('note') == '4s' ): ?>
                            <i class="fas fa-star"></i>
                            <i class="fas fa-star"></i>
                            <i class="fas fa-star"></i>
                            <i class="fas fa-star"></i>
                            <i class="far fa-star"></i>
                        <?php endif; ?>                   
                        <?php if( get_field('note') == '5s' ): ?>
                            <i class="fas fa-star"></i>
                            <i class="fas fa-star"></i>
                            <i class="fas fa-star"></i>
                            <i class="fas fa-star"></i>
                            <i class="fas fa-star"></i>
                        <?php endif; ?>
                    </div>
    Pour optimiser j'ai essayé de faire comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $note = the_field('note');
    for ($i=1; $i<=$note; $i++) { echo '<i class="fas fa-star"></i>';}  
    for ($i=1; $i<=5-$note; $i++) { echo '<i class="far fa-star"></i>';}
    Mais j'obtiens le chiffre de mon champ avec les 5 étoiles vides... Une idée ?

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 666
    Par défaut
    déjà convertissez la valeur en un entier pour l'utiliser dans les boucles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $note = (int) the_field('note');
    si ça ne change rien, affichez le contenu de la variable pour vérifier qu'elle contient bien la valeur attendue.

  3. #3
    Membre averti Avatar de Reggio
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juin 2009
    Messages : 17
    Par défaut
    Merci pour le retour, le (int) ne change rien et le vardump me donne une valeur de 0

  4. #4
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 666
    Par défaut
    je viens de voir le soucis, vous n'avez pas utilisé la même fonction entre votre 1er et votre 2e bout de code.
    "the_field" affiche la valeur alors que "get_field" le retourne donc vous devez utiliser cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $note = (int) get_field('note');

  5. #5
    Membre averti Avatar de Reggio
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juin 2009
    Messages : 17
    Par défaut
    Effectivement ça fonctionne désormais, merci beaucoup mathieu

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Optimisation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $note = get_field('note');
    echo str_repeat( '<i class="fas fa-star"></i>', $note );
    echo str_repeat( '<i class="far fa-star"></i>', 5-$note );
    N.B. ajouter (int) suppose que tu as fait une erreur de conception...
    Il faut enregistrer une note de 1 à 5.
    Pas 1s, 2s ou autre.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SQL-Server] Affichage / récupération champ text dans un tableau php
    Par jeeps64 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 20/07/2011, 14h30
  2. champ vide dans un formulaire php
    Par Daniela dans le forum Langage
    Réponses: 25
    Dernier message: 10/06/2010, 01h34
  3. champ recuperé dans une query
    Par Daniela dans le forum IHM
    Réponses: 7
    Dernier message: 05/06/2009, 12h22
  4. Répéter les champs regrouper dans un TCD
    Par richardprod dans le forum Excel
    Réponses: 1
    Dernier message: 13/09/2007, 08h08
  5. [PHP-JS] Récupérer champ checkbox dans une fonction php
    Par Tyler Durden dans le forum Langage
    Réponses: 7
    Dernier message: 09/11/2006, 00h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo