Erweiterte benutzerdefinierte Felder – Überprüfen mehrerer leerer Felder

Ich baue ein Verzeichnis in WordPress und benutze erweiterte benutzerdefinierte Felder für den Client, um die Verzeichniseinträge aufzufüllen. Einer der Abschnitte ist für Social Media-Symbole.

Mit dem folgenden Code kann ich prüfen, ob eines der drei Felder (twitter / facebook / linked-in) leer ist und leer, um kein Symbol anzuzeigen:

  • <a href="https://wordpress.stackexchange.com/questions/85544/advanced-custom-fields-check-multiple-empty-fields/" class="twitter">Twitter
  • <a href="https://wordpress.stackexchange.com/questions/85544/advanced-custom-fields-check-multiple-empty-fields/" class="facebook">Facebook
  • <a href="https://wordpress.stackexchange.com/questions/85544/advanced-custom-fields-check-multiple-empty-fields/" class="linked">Linked In
  • Ich brauche Hilfe bei der Überprüfung, ob alle 3 Felder leer sind, um zusätzlichen Text anzuzeigen. (ZB Es gibt keine sozialen Symbole zum Anzeigen).

    Ich habe derzeit:

      There are no Social Media links to display 

    Die Verwendung dieses Codes zeigt jedoch nichts, wenn alle 3 Felder leer sind – aber zeigt den Text “Es gibt keine soziale …”, wenn alle 3 Felder stattdessen Werte haben !

    Ich wäre sehr dankbar, wenn mich jemand in die richtige Richtung schicken könnte. Ich bin immer noch ein Neuling, aber ich versuche, es zu lernen, sei bitte sanft!

    Solutions Collecting From Web of "Erweiterte benutzerdefinierte Felder – Überprüfen mehrerer leerer Felder"

    Beachten Sie, dass get_field false und keine leere Zeichenfolge zurückgibt, wenn kein Wert gefunden wird. Es ist nicht in den Dokumenten geschrieben, aber Sie können versuchen, einen var_dump auf einem leeren get_field Element zu bestätigen.

    Also sollten Sie sie gegen false prüfen. Ich habe jede Bedingung aus Gründen der Einfachheit in eine eigene Zeile zerlegt:

     < ?php if( ( false === get_field('linked_in') ) && #no linked_in value ( false === get_field('twitter') ) && #no twitter value ( false === get_field('facebook') ) #no facebook value ): ?> There are no Social Media links to display < ?php endif; ?> 

    Testen Sie den Rückgabewert von get_field für einen Artikel, der nicht existiert:

     var_dump( get_field('dummy_string',232) ); // results: bool(false) 

    Ihre if-statement funktioniert nicht so, wie Sie es möchten.

    Ändern Sie diesen Teil des Codes

     if(get_field('linked_in') && get_field('twitter') && get_field('facebook') != "") 

    In

     if(empty(get_field('linked_in')) && empty(get_field('twitter')) && empty(get_field('facebook'))) 

    Auf diese Weise werden alle drei Felder überprüft, ob sie leer sind oder nicht.

    Da dies bei Google-Ergebnissen immer noch ziemlich hoch ist, dachte ich, ich würde die alternative Antwort hinzufügen, die mir geholfen hat. Nicht sicher, ob ACF ihre Codierung aktualisiert hat, da dies beantwortet wurde, aber nur das Folgende funktionierte für mich:

     < ?php if( ( !get_field('linked_in') ) && #no linked_in value ( !get_field('twitter') ) && #no twitter value ( !get_field('facebook') ) && #no facebook value ): ?> 

    There are no Social Media links to display

    < ?php endif; ?>