Der erste benutzerdefinierte Feldwert (von mehreren) wird nach der Abfrage zweimal angezeigt

Ich habe den folgenden Code, der auf der Lösung dieser Frage basiert:

 'release', 'tax_query' => array( array( 'taxonomy' => 'game', 'field' => 'slug', 'terms' => $game_title->slug, ), ), ); unset($game_titles); $loop = new WP_Query($args); if($loop->have_posts()) { echo '

' . $game_title->name . '

'; echo ''; } } ?>

Jetzt bekomme ich eine Liste aller Begriffe in der Spieltaxonomie und unter jedem Begriff bekomme ich den Titel und den Permalink zu jedem Beitrag, der mit dem Begriff verbunden ist. Dieser Teil funktioniert gut.

Das Problem ist der kleine Absatz, den ich unter jedem Posttitel / Link zurückgeben möchte. Aus irgendeinem Grund gibt es den ersten Wert im Absatz zweimal zurück.

Ie für das Code-Bit, das liest:

 $number = intval(get_post_meta(get_the_ID(), 'number', true)); if($number > 1){ echo $number . 'x'; } 

Wenn $ number = 1, wird 1 angezeigt (was $number ), wenn nichts angezeigt werden soll. Wenn $ number = 2, wird 22x (das ist $number . $number . 'x' ), wenn es 2x anzeigen soll.

Wenn ich das Codebit komplett mit $ number auskommentiere, wird 'Array' . $val . ', ' 'Array' . $val . ', ' 'Array' . $val . ', ' , weil das nächste Codebit das Array $ val zurückgibt.

Wenn ich alle php im Absatz auskommentiere, bekomme ich den berühmten weißen Bildschirm. Vermutlich, weil versucht wird, einen nicht existenten Wert anzuzeigen.

Anfangs dachte ich, es könnte ein Fehler wie der hier beschriebene sein , weshalb ich unset () an verschiedenen Stellen platziert habe, aber das scheint nichts zu beeinflussen, was auf der Seite angezeigt wird.

Ich könnte etwas offensichtliches vermissen, aber ich kann wirklich nicht herausfinden, warum es den ersten Wert zurückgibt. Kann jemand den Fehler im Code erkennen?

Solutions Collecting From Web of "Der erste benutzerdefinierte Feldwert (von mehreren) wird nach der Abfrage zweimal angezeigt"

Ich habe es geschafft, es zu reparieren! Wie ich vermutete, hatte das nichts mit dem Code zu tun, der sich auf $number bezieht, sondern eher den echo Aufruf davor.

Mein Anfangscode sah so aus (ich überspringe einen Teil des Schleifeninhalts, um es einfach zu halten):

 echo '

(' . $number = intval(get_post_meta(get_the_ID(), 'number', true)); if($number > 1){ echo $number . 'x'; } echo ')

';

Wenn $number = 1 , würde es $number anzeigen und wenn $number > 1 ) würde $number . $number . 'x' angezeigt werden $number . $number . 'x' $number . $number . 'x'

Als ich später den Code durchgesehen habe, ist mir etwas aufgefallen. In meinem ersten echo Anruf beende ich mit einem . daher könnte der folgende Code in meinem Absatz hinzugefügt werden. Aber wenn ich den Absatz fertiggestellt habe, habe ich einen neuen echo Call hinzugefügt, anstatt den Loop-Code mit zu verfolgen . '

' . '' .

Was ich getan habe, um es zu beheben, war, meinen anfänglichen echo zu beenden, anstatt ihn fortzusetzen. Um ihn zu beheben, musste ich nur ein Zeichen ändern und ein Leerzeichen in der ersten Zeile entfernen, so dass es so aussieht:

echo '

(';

Beachten Sie das Ende dieses Codeabschnitts im Vergleich zu dem, wie er aussah, bevor ich ihn behoben habe. Ich habe einfach ersetzt . mit ; .

Ich weiß nicht genug PHP, um dieses Verhalten zu erklären, obwohl ich vermute, dass es etwas damit zu tun hat, das echo richtig zu beenden / zu schließen. Wenn jemand anderes genauer erklären kann, bitte zögern Sie nicht, einen Kommentar hinzuzufügen, und ich werde diese Antwort entsprechend aktualisieren.