Eigene Auslesung macht Endlosschleife

  • Moin zusammen,

    ich habe unter: https://rikerandom.de/nerdy/how-to/rezensionsindex-part-4/
    eine Anleitung gefunden für einen Index mit dem man beispielsweise Rezensionen zu Büchern nach Buchautoren sortiert anzeigen lassen können soll. Dazu habe ich ein Seitentemplate erstellt.

    Ich habe die Funktion soweit hinbekommen, dass der Index angezeigt wird und zu den Buchstaben auch mittels Anker gesprungen wird. Nun sollen alle Artikel ausgelesen werden, die als benutzerdefinierte Felder einen Buchautor haben. (Aktuell zu Testzwecken 2 Artikel) Die Auslesung funktioniert. Es werden beide Artikel bei Ihren Buchstaben angezeigt.

    Jetzt kommen wir zu dem was nicht funktioniert. Wenn Ihr auf http://blog.hoerske.de/rezensionsindex/
    schaut, dann seht Ihr, dass der Loop für jeden Buchstaben des Alphabets eine neue Reihe an Buchstaben auf macht. Also läuft der Loop irgendwie unkontrolliert.

    Hier zu nächst mein Code für den Index:

    Dann kommt die Auslesung mit dem ersten Buchstaben A:

    Jeder weitere Buchstabe sieht so aus:

    PHP
    <h3 id="b">B</h3>
    <ul><?php if ($this_letter == B) { ?>
    <li><?php $key="buchautor"; echo get_post_meta($post->ID, $key, true); ?>:
    <?php $key="buchtitel"; echo get_post_meta($post->ID, $key, true); ?> - 
    Artikel: <a href="<?php echo esc_url( get_permalink() ); ?>">
    <?php the_title(); ?></a></li>
    <?php } ?></ul>

    Der Schluss des Skriptes endet mit dem Buchstaben Z:

    Habt Ihr eine Ahnung wo der Fehler liegen könnte? Ich sehe den Wald vor lauter Bäumen nicht.
    Ich danke euch...
    Timo

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • PHP
    <?php $my_query = new WP_Query( array( ‚meta_key‘ => ‚buchautor‘,


    sollte IMHO sein

    PHP
    <?php $my_query = new WP_Query(
    array(
                            'meta_key' => 'buchautor',
                
                        ),

    und

    Code
    $autor = get_post_meta($post->ID, buchautor, true);

    sollte

    Code
    $autor = get_post_meta($post->ID, 'buchautor', true);

    sein. Hier passiert keine Endlosschleife, da Ding bricht wegen Syntax-Error ab :-)

  • Neben den bereits genannten falschen "single quotes" und vorausgesetzt, der restliche Code funktioniert, sollte es pro Buchstabe wohl eher so in der Art aussehen:

    PHP
    <?php if ($this_letter == 'A') { ?>
    <h3 id="a">A</h3>
    <ul>
    <li><?php $key="buchautor"; echo get_post_meta($post->ID, $key, true); ?>:
    <?php $key="buchtitel"; echo get_post_meta($post->ID, $key, true); ?> -
    Artikel: <a href="<?php echo esc_url( get_permalink() ); ?>">
    <?php the_title(); ?></a></li>
    </ul>
    <?php } ?>

    Wenn der entspr. Buchstabe in der Loop nicht vorkommt, wird dann allerdings auch keine "Ansprungstelle" erstellt.

    Weiterhin fehlen bei [FONT=Courier New]get_post_meta($post->ID, [COLOR=#ff0000]'[/COLOR]buchautor[COLOR=#ff0000]'[/COLOR], true);[/FONT] und bei den [FONT=Courier New]if ($this_letter == [COLOR=#ff0000]'[/COLOR]A[COLOR=#ff0000]'[/COLOR])[/FONT] Abfragen die Anführungszeichen.

    5 Mal editiert, zuletzt von b3317133 (17. Dezember 2018 um 18:35)

  • Ich habe das jetzt mal komplett so übernommen, wie ihr es geschrieben habt:

    Nun bekomme ich eine wieder eine weiße Seite, also gar nichts mehr angezeigt...

  • Bis auf die Tatsache, dass Du einige Syntaxfehler hast und viel zu viel redundanten Code in einer viel zu großen Abfrage, macht er genau das was Du programmiert hast. Wenn schon, dann müssten Deine H3 Überschriften, also die Einzelbuchstaben, hinter die IF Abfrage. Die IF Abfrage muss Strings vergleichen, also gehören die Buchstaben in Anführungszeichen. Zudem wiederholt man nicht für jeden Buchstaben die IF Abfrage und Ausgabe. Und einiges ergibt gar keinen Sinn (woher kommt $post, was ist das für ein post_type, wieso steht ein Titel in einer Metainfo usw.).

    Lösungsansatz:

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • Danke an Alle für die bisherigen Antworten. Irgendwie bekomme ich es noch nicht so richtig hin.

    Zu euren Fragen: Ich habe mich an den oben genannten Link und die Anleitung darin gehalten. Wenn es einen anderen Weg gibt, dies umzusetzen dann gerne.

    Der Buchtitel steht in den benutzerdefinierten Feldern, weil ich meine Artikel nicht umschreiben möchte und nicht alle Rezensionen im Titel Autor und Buchtitel in der gleichen Art und Weise enthalten. Daher wollte ich es gerne über die benutzerdefinierten Felder lösen.

    Die Anführungsstriche und auch die <h3> hinter den if, haben nur zu einer weißen Seite geführt.

    @mensmaximu wie und wo müsste ich deinen Lösungsteil einfügen. Ich habe es jetzt in einigen Varianten probiert, komme aber über eine weiße Seite nicht hinaus.

    Hier mal das komplette Seitentemplate entfernt um den nicht funktionierenden Auslesebereich aber noch mit dem Index. Als Vorlage habe ich für das Seitentemplate, dass originale vom Theme Merlin Pro genommen:

  • So für euch zur Rückmeldung und falls wer anderes ebenfalls so eine Herrausforderung hat, nach langem probieren und hin und her:

    Ich habe ausgehend von der ursprünglichen Konfiguration ganz oben nur die if Abfrage über die h3 Überschrift gesetzt und darin den Buchstaben in ' ' . Jetzt funktioniert alles. Die restlichen Anführungsstriche habe ich belassen. Sobald ich diese auch auf ' ' geändert hatte, war nur eine weiße Seite zu sehen. Ich habe keine Ahnung warum es so funktioniert... Danke euch allen für die Hilfe...

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!