Support » Allgemeine Fragen » „advancedcustomfields“ -> If Abfrage

  • Hallo Community,

    kann mir jemand bei der Umsetzung von „advancedcustomfields“ behilflich sein?

    Ich würde zum Beispiel gerne eine Farbauswahl anlegen.

    Ein Material gibt es beispielsweise in den Farben: Schwarz und Blau.

    Ich habe nun eine Checkbox mit den dementsprechenden Werten angelegt.

    Wenn diese nun ausgewählt werden, dann würde ich gerne anstatt der Werte einen Farbcode im Kästchen ausgeben.

    Mit folgenden Code werden mir zwar die Farben als Kästchen angezeigt, jedoch immer und überall alle. Also wenn es ein Material nur in den Farben „Blau“ und „Schwarz“ gibt, werden dennoch alle anderen angezeigt.
    Hier liegt wohlmöglich ein Fehler in der „if-Abfrage“ vor.
    Kann mir dabei jemand behilflich sein?

    <?php $field = get_field_object('3DMaterialien');
    			if( $field['farben'] != "Vollfarbig"): ?>
            			<div style="float: left; width: 10px; height: 10px; margin-right: 3px; border: 1px solid #000000; background-image: url(./wp-content/uploads/vollfarbig.png); background-size: 100% auto" title="Vollfarbig"></div>
              	<?php endif; ?>
             	<?php $field = get_field_object('3DMaterialien');
    			if( $field['farben'] != 'Transparent'): ?>
            			<div style="float: left; width: 10px; height: 10px; margin-right: 3px; border: 1px solid #000000; background-image: url(./wp-content/uploads/transparent.png); background-size: 100% auto" title="Transparent"></div>
              	<?php endif; ?>          	
              	<?php $field = get_field_object('3DMaterialien');
    			if( $field['farben'] != 'Schwarz'): ?>
    					<div style="float: left; width: 10px; height: 10px; margin-right: 3px; border: 1px solid #000000; background-color: #1E1E1E" title="Schwarz"></div>
    			<?php endif; ?>
              	<?php $field = get_field_object('3DMaterialien');
    			if( $field['farben'] != 'Blau'): ?>
                      <div style="float: left; width: 10px; height: 10px; margin-right: 3px; border: 1px solid #000000; background-color: #3072B5" title="Blau"></div>
    			<?php endif; ?>
              	<?php $field = get_field_object('3DMaterialien');
    			if( $field['farben'] != 'Braun'): ?>
                      <div style="float: left; width: 10px; height: 10px; margin-right: 3px; border: 1px solid #000000; background-color: #461E23" title="Braun"></div>
    			<?php endif; ?>		
              	<?php $field = get_field_object('3DMaterialien');
    			if( $field['farben'] != 'Grau'): ?>
                      <div style="float: left; width: 10px; height: 10px; margin-right: 3px; border: 1px solid #000000; background-color: #797979" title="Grau"></div>
    			<?php endif; ?>			
              	<?php $field = get_field_object('3DMaterialien');
    			if( $field['farben'] != 'Grün'): ?>
                      <div style="float: left; width: 10px; height: 10px; margin-right: 3px; border: 1px solid #000000; background-color: #2B5033" title="Grün"></div>
    			<?php endif; ?>		
              	<?php $field = get_field_object('3DMaterialien');
    			if( $field['farben'] != 'Elfenbein'): ?>
                      <div style="float: left; width: 10px; height: 10px; margin-right: 3px; border: 1px solid #000000; background-color: #FFECC3" title="Elfenbein"></div>
    			<?php endif; ?>		
              	<?php $field = get_field_object('3DMaterialien');
    			if( $field['farben'] != 'Sand-Metallic'): ?>
                      <div style="float: left; width: 10px; height: 10px; margin-right: 3px; border: 1px solid #000000; background-color: #ADB4B4" title="Sand-Metallic"></div>
    			<?php endif; ?>												
              	<?php $field = get_field_object('3DMaterialien');
    			if( $field['farben'] != 'Limettengrün'): ?>
                      <div style="float: left; width: 10px; height: 10px; margin-right: 3px; border: 1px solid #000000; background-color: #AEB544" title="Limettengrün"></div>
    			<?php endif; ?>	
              	<?php $field = get_field_object('3DMaterialien');
    			if( $field['farben'] != 'Orange'): ?>
                      <div style="float: left; width: 10px; height: 10px; margin-right: 3px; border: 1px solid #000000; background-color: #EB5D26" title="Orange"></div>
    			<?php endif; ?>		
              	<?php $field = get_field_object('3DMaterialien');
    			if( $field['farben'] != 'Rot'): ?>
                      <div style="float: left; width: 10px; height: 10px; margin-right: 3px; border: 1px solid #000000; background-color: #95030E" title="Rot"></div>
    			<?php endif; ?>				
              	<?php $field = get_field_object('3DMaterialien');
    			if( $field['farben'] != 'Lila'): ?>
                      <div style="float: left; width: 10px; height: 10px; margin-right: 3px; border: 1px solid #000000; background-color: #7133AC" title="Lila"></div>
    			<?php endif; ?>		
              	<?php $field = get_field_object('3DMaterialien');
    			if( $field['farben'] == "Weiß"): ?>
                      <div style="float: left; width: 10px; height: 10px; margin-right: 3px; border: 1px solid #000000; background-color: #FFFFFF" title="Weiß"></div>
    			<?php endif; ?>			
              	<?php $field = get_field_object('3DMaterialien');
    			if( $field['farben'] != 'Gelb'): ?>
                      <div style="float: left; width: 10px; height: 10px; margin-right: 3px; border: 1px solid #000000; background-color: #FFCC19" title="Gelb"></div>
    			<?php endif; ?>	

    Danke und schöne Grüße

Ansicht von 5 Antworten - 1 bis 5 (von insgesamt 5)
  • Hallo,
    wenn Du dann noch die URL oben einträgst, dann kann man sich das auch ansehen und Dir sicher besser helfen.
    Am besten nennst Du auch zusätzlich die Webseite, auf der Du das bewerkstelligen willst bzw. bereits eingebaut hast.
    Viele Grüße
    Hans-Gerd

    Hallo,
    ich habe mir gerade nur mal den Code angesehen. Mir erschließt sich nicht, warum Du jedes Mal vor einer IF-Abfrage die Zeile <?php $field = get_field_object('3DMaterialien'); schreibst. Das ist völlig überflüssig. Es reicht, wenn der Inhalt des Felds 3DMaterialien einmal am Anfang zugewiesen wird.
    Außerdem können die IF-Schleifen wesentlich kompakter in einer switch case – Abfrage gepackt werden.
    Aber das wird alles natürlich nicht das Problem lösen. Dazu kenne ich ACF nicht genug, weil ich es derzeit nicht einsetze.
    Viele Grüße
    Hans-Gerd

    ach, Entschuldigung ….

    das ganze erfolgt auf https://dein-3d.com

    Der dazugehörige Artikel ist: https://dein-3d.com/material/polyamid/

    Das mit der switch-Case-Anfrage will ich mir mal anschauen. Danke dafür!

    Womit ich mich nur sehr schwer tue ist, dass die Abfrage vernünftig funktioniert… also wenn ein Material nur in schwarz verfügbar ist, dass dann auch lediglich nur das schwarze icon zu sehen ist… ich habe wahrscheinlich irgendwo einen Denkfehler 😉

    ich bekomme auf den genannten Seiten gerade die folgende Fehlermeldung:
    503 - Service Unavailable - The server is temporarily busy, try again later!

    Einfacher wäre es vermutlich, wenn du als Custom Field gleich einen Farbwert verwendest. ACF bietet dir dafür einen Color-Picker an: https://www.advancedcustomfields.com/resources/color-picker/

    Auf der Seite der Dokumentation findest du auch Angaben, wie das in HTML-Tags oder einem Stylesheet genutzt werden kann.

Ansicht von 5 Antworten - 1 bis 5 (von insgesamt 5)