2017-06-05 4 views
0

Ich habe eine und if-Anweisung für eine Schaltfläche.If-Anweisung mit PHP und erweitert benutzerdefinierte Felder in WordPress - leere Felder ausblenden

Wenn beide erweiterte benutzerdefinierte Felder vorhanden sind, möchte ich, dass es den Button anzeigt, und wenn nicht, möchte ich, dass es sich versteckt, aber ich kämpfe hier.

Ich habe auf dieser Seite sah:

https://www.advancedcustomfields.com/resources/hiding-empty-fields/

Hier ist mein Code:

<?php if(get_field('button_link') && get_field('button_text')): ?> 
    <a href="<?php the_field('button_link'); ?>" class="btn third-btn mx-auto"> 
    <?php the_field('button_text');?> <i class="fa fa-arrow-circle-right" aria-hidden="true"></i> 
    </a> 
<?php endif; ?> 

Wer bitte einen Vorschlag bekam?

Prost :)

+0

Ich mag stattdessen get_post_meta() verwenden, scheint viel klarer zu mir aber Kasse die Option „Wert vorhanden ist“ hier: https: // www .advancedcustomfields.com/resources/get_field/- Ihre Felder button_link und button_text geben möglicherweise ein leeres Array oder eine leere Zeichenfolge zurück, nicht einen booleschen Wert false - damit wird Ihr if-Block ausgewertet. – JDev518

+0

Sowohl der Link als auch der Text müssen ausgefüllt werden, damit die Anweisung als wahr ausgewertet werden kann. Sagen Sie, dass Ihre Schaltfläche auch dann gerendert wird, wenn diese Werte leer sind? Ich würde diese Anweisung (xdebug, var_dump oder echo die Ergebnisse von 'get_field ('button_link')' und 'get_field ('button_text')' debuggen, weil sie einen wahren ish-Wert enthalten müssen (boolean true, nichtleere Zeichenfolge, oder positive ganze Zahl). –

+0

Ich sehe nichts falsch mit Ur-Code es sollte Schaltfläche anzeigen, wenn button_link und button_text Feld nicht leer sind, verwenden Sie print_r (get_filed ('button_link')); und print_r (get_filed ('button_text')); zu sehen Wenn sie Werte haben –

Antwort

1

Ich bin kein Experte ACF aber am Get_Field() Funktion Beschreibung hier https://www.advancedcustomfields.com/resources/get_field/ es sieht aus wie die Funktion sucht, wird nie einen boolean zurück, wie auf der Beschreibung erwähnt und ich zitiere:

Gibt den Wert des angegebenen Feldes

Da es nicht einen booleschen Wert zurückgibt, können Sie nicht Get_Field (‚etwas‘) & versichern & get_field ('something2') ist der korrekte boolesche Wert. Es gibt bestimmte Werte, die die if-Anweisung als boolean true oder false interpretiert. Zum Beispiel werden null und 0 als falsch interpretiert, aber -1 wird als wahr interpretiert. Ich würde empfehlen, eine

var_dump(get_field('button_link')) 

zu tun, um die Ausgabe zu erkunden. Auch nach https://www.advancedcustomfields.com/resources/get_field/ unter ‚Überprüfen Sie, ob Wert vorhanden‘ Sie können überprüfen, ob ein Wert vorhanden ist, so dass dies funktionieren könnte:

<?php if (get_field('button_link')) : ?> 
    <?php if (get_field('button_text')) : ?> 
     <a href="<?php the_field('button_link') ?>" class="btn third-btn mx-auto"> 
      <?php the_field('button_text') ?> <i class="fa fa-arrow-circle-right" aria-hidden="true"></i> 
     </a> 
    <?php endif ?> 
<?php endif ?> 

Es ist wie eine verschachtelte ist und ohne die & & Operator. Wenn dies wir mehr Informationen über nicht arbeiten müssen, was Sie erhalten von:

var_dump(get_field('button_link')); 
var_dump(get_field('button_text')); 
+0

Máximo du hast den Tag gerettet! Danke für die Antwort, ich habe das einfach in meine Vorlage eingefügt und es aus der Sicht des Benutzers getestet und funktioniert perfekt! Ich habe gedacht, es so zu nisten, aber ich habe es nicht versucht! Prost für die Hilfe. - wird dies als beantwortet markieren :) Prost !! – user3502952

+0

Gern geschehen, froh, dass ich helfen konnte. Wenn Sie mehrere verschachtelte ANDs vermeiden wollen, können Sie eine Minifunktion programmieren: 'Funktion is_field_set ($ field) {return ($ field)?wahr falsch; } 'Auf diese Weise können Sie sicher das' if (is_field_set (get_field ('one')) && is_field_set (get_field ('two'))) ... ' –

+0

Yeah, dass die erste Lösung ist perfekt - Prost wieder :) – user3502952

Verwandte Themen