Extra Loop $myQuery = new WP_Query konfigurieren

  • In meiner Sidebar lasse ich folgendes Extra-Loop anzeigen:

    PHP
    <ul><?php
    $myQuery = new WP_Query('showposts=10&category_name=allgemein');
    while ($myQuery->have_posts()) : $myQuery->the_post();
    ?>
    <li><a href="<?php the_permalink() ?>"><?php the_field('name'); ?></a></li>
    <?php endwhile; ?>
    </ul>

    Das funktioniert sehr gut. Ich möchte jetzt folgendes ändern:

    Code
    showposts=10&category_name=allgemein

    soll ersetzt werden durch:

    PHP
    showposts=10&category_name=<?php the_field('name'); ?>

    Das Feld <?php the_field('name'); ?> soll sich auf den aktuellen Beitrag beziehen und nicht auf den Beitrag im Loop. So funktioniert das nicht.

    wie geht das?

    • 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

  • Erklär mal lieber, welche Absichten du damit verfolgst.

    [size=10]Bitte immer zuerst die Forensuche nutzen und erst danach Deine Fragen hier im Forum stellen, denn sehr vieles wurde schon mehrfach beantwortet. Bitte dabei auch die Forenregeln beachten.
    Kein Support per PN - Fragen gehören ins Forum.[/SIZE]
    [size=8]Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)[/SIZE]

  • Ich möchte am Ende von Beiträgen verschiedende Beiträge einer bestimmten Kategorie anzeigen lassen. Um welche Kategorie es sich jeweils handelt soll aus dem Inhalt von zwei benutzerdefinierten Feldern + einer Zahl abgeleitet werden.
    Beispiel:
    in dem Beitrag "berlin" (enhält benutzerdefinierte Felder "menschen" -> Inhalt "1000000"; benutzerdefinierte Felder "flüsse" -> Inhalt "4") sollen alle Beiträge aus der Kategorie 1000000-4-100 angezeigt werden. In dem Beispiel soll die Zahl 100 sein.

    Meine Idee war diese:

    PHP
    <?php
    $myQuery = new  WP_Query('showposts=10&category_name=<?php the_field('menschen');  ?>-<?php the_field('fluesse'); ?>-1000');
    while ($myQuery->have_posts()) : $myQuery->the_post();
    ?>
    <li><a href="<?php the_permalink() ?>"><?php the_field('name'); ?></a></li>
    <?php endwhile; ?>


    Das funktioniert aber nicht.

    Einmal editiert, zuletzt von webciti (5. Januar 2015 um 11:45)

  • Ein PHP Tag im PHP-Tag funktioniert natürlich auch nicht.
    category_name darf nur einen Wert haben. Ich könnte es mir so vorstellen aber verstanden hab ich es noch nicht so recht:

    PHP
    <?php
    $field = the_field('fluesse');
    
    
    $myQuery = new  WP_Query('showposts=10&category_name=' . $field);
    while ($myQuery->have_posts()) : $myQuery->the_post();
    ?>
    <li><a href="<?php the_permalink() ?>"><?php the_field('name'); ?></a></li>
    <?php endwhile; ?>

    [size=10]Bitte immer zuerst die Forensuche nutzen und erst danach Deine Fragen hier im Forum stellen, denn sehr vieles wurde schon mehrfach beantwortet. Bitte dabei auch die Forenregeln beachten.
    Kein Support per PN - Fragen gehören ins Forum.[/SIZE]
    [size=8]Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)[/SIZE]

  • PHP
    <?php 
    $zahl = 100; // woher auch immer die kommen soll
    $cat = the_field('menschen') . '-' . the_field('fluesse') . '-' . $zahl; 
    $myQuery = new  WP_Query('showposts=10&category_name=' . $cat); 
    while ( $myQuery->have_posts() ) { 
    	$myQuery->the_post(); 
    	echo '<li><a href="' . the_permalink() . '">' . the_field('name') .'</a></li>';
    }
    ?>

    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!

    Leider wird nur der Inhalt der beiden Felder Menschen und Fluesse ausgegeben als Text (ohne Bindestrich). Und die Zahl 100 kommt gar nicht vor :(

  • Das ist unlogisch. Wo kann man das sehen?

    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.

  • Ich hab den Code in das Themes eingegeben. Dann einen Test-Beitrag erstellt, der das Feld "menschen" und "fluesse" hat. Dann einen zweiten Beitrag, der in der Kategorie menschen-flusse-100 gespeichert ist. Angezeigt wird nur:

    "menschenfluesse" als Text

  • Möglicherweise hätte ich fragen sollen wie gut Du Dich mit PHP und WordPress auskennst (meine Annahme war gut weil Du ja schon mit einem Extra Loop arbeitest)? ACF scheint ja installiert zu sein, sonst gäbe es keine Ausgabe. Wo wurde der Code eingegeben?

    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.

  • Kann es sein, das der Fehler in der Zeile

    Code
    myQuery = new  WP_Query('showposts=10&category_name=' . $cat);


    liegt? Duch das ' nach dem name= ist der Ausdruck doch beendet???

  • Hab jetzt folgendes hinbekommen:

    PHP
    [SIZE=-1]<?php $field = get_post_meta($post->ID,       'menschen', true); ?>
          <?php $myQuery = new        WP_Query('showposts=10&category_name=' . $field);
          while ($myQuery->have_posts()) : $myQuery->the_post();
          ?>
          <li><a href="<?php the_permalink() ?>"><?php       the_field('name'); ?></a></li>
          <?php endwhile; ?> [/SIZE]

    So funktioniert es, dass eine Variable verwendet wird. Ich bekomme es aber nicht hin, dass ich zwei benutzerdefinierte Felder auslese und noch eine Zahl zusätzlich. Wer kann helfen?

  • Ich kann mir schon vorstellen wo das Problem liegt. Dazu muss man aber die Programmierung sehen und die Logik verstanden haben. Hier kann man immer nur auf dem aufsetzen, was Du vorgibst und das scheint nicht richtig durchdacht zu sein.

    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.

  • Dazu muss man aber die Programmierung sehen und die Logik verstanden haben.


    Ich habe nur den Code eingesetzt, der mir hier empfohlen wurde!!

    PHP
    [SIZE=-1]<?php $field = get_post_meta($post->ID,       'menschen', true); ?>
          <?php $myQuery = new        WP_Query('showposts=10&category_name=' . $field);
          while ($myQuery->have_posts()) : $myQuery->the_post();
          ?>
          <li><a href="<?php the_permalink() ?>"><?php       the_field('name'); ?></a></li>
          <?php endwhile; ?> [/SIZE]


    zum Beispiel! Diesen Code habe ich in die Sidebar.php eingebaut.
    Warum nicht richtig durchdacht?
    @mensmaximus hast du den Code selber mal probiert? Was denkst du, wo das Problem ist?
    Danke.

  • Ich habe nur den Code eingesetzt, der mir hier empfohlen wurde!!

    Stop. Und alles auf Anfang. Du hast einen Code gepostet und behauptet es funktioniere ganz gut. Maxe und ich haben versucht Dir bei Deinem Änderungswunsch zu helfen. Jeglicher Code den wir schreiben basiert also auf Deinem Code unter der Annahme, dass dieser richtig ist. Wir prüfen nicht, dazu fehlen uns wesentliche Informationen.


    @mensmaximus hast du den Code selber mal probiert? Was denkst du, wo das Problem ist?

    Natürlich nicht. Schließlich kenne ich Deine Konfiguration nicht. Das Problem liegt aus meiner Sicht daran, dass Du versuchst nach etwas zu filtern, was in der Form zum Zeitpunkt der Filterung so nicht existiert.

    Grundsätzlich müsste man also erst einmal den Aufbau eines Beitrags sehen und die darin enthaltenen ACF Felder. Dann müsste man den Inhalt des Main Query auslesen um zu sehen wo die Informationen gespeichert sind. Dann muss man prüfen ob der Main Query zum Zeitpunkt des Extra Query überhaupt noch gültig ist, die Inhalte als Verfügbar sind. Dann kann man die Daten für den Extra Query aufbereiten.

    Die Ausrufezeichen hinter Deinen Antworten sind also überflüssig. Wenn Du einmal detailliert beschreibst welche Informationen wo zu finden sind und welche Zusammenhänge existieren, dann kann man sicherlich auch die Logik entwickeln die für eine Lösung benötigt wird.

    Hier einmal ein Beispiel für einen Shortcode, mit dem man unter einem Beitrag die Titel von drei weiteren Beiträgen anzeigen lassen kann, die mit den gleichen Tags versehen sind wie der Beitrag selbst. Und falls keine Tags übereinstimmen wird auf die Kategorie zurückgegriffen. Bei Dir soll das ja so ähnlich aussehen, nur das die Kategorie nicht aus der Kategorie des Beitrags kommt, sondern anhand der ACF Felder zusammen gebaut werden muss:

    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.

  • Schade, dass man hier als der Blödmann hingestellt wird :(
    Aber der Fehler lag auch bei mir, denn ich hab vorausgesetzt, dass man hier Bescheid weiß was der Unterschied zwischen
    [SIZE=-1]

    PHP
    [SIZE=-1]<?php get_post_meta($post->ID,       'menschen', true); ?>[/SIZE]


    und
    [/SIZE]

    PHP
    <?php the_field('menschen'); ?>

    [SIZE=-1]
    ist.

    Ich habe es übrigens vorgestern selber hinbekommen.

    PHP
    <?php
    $feld1 = get_post_meta($post->ID,       'menschen', true);
    $feld2 = get_post_meta($post->ID,       'fluesse', true);
    $zahl = 100;
    $cat = $zahl . $feld1 . $feld2; 
    $myQuery = new  WP_Query('showposts=1&category_name=' . $cat); while ($myQuery->have_posts()) : $myQuery->the_post(); ?>
    <a href="<?php the_permalink() ?>">[SIZE=-1]<?php the_permalink() ?>[/SIZE]</a><?php endwhile; ?>

    [SIZE=-1]
    [/SIZE]
    Danke trotzdem für eure Hilfe!
    [/SIZE]

  • Schade, dass man hier als der Blödmann hingestellt wird :(

    Es tut mir leid wenn Du das Gefühl hast. Anhand der Zeit die wir in Deine Frage investiert haben und der Ausführlichkeit der Antworten, ist sicherlich schon erkennbar das wir Dich ernst nehmen. Weiterhin viel Erfolg!

    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.

  • oft ist es halt so, wenn man nicht selber im eigenen Code steckt bzw. die Absicht dahinter kennt, ist es schwer sich da rein zu finden.

    [size=10]Bitte immer zuerst die Forensuche nutzen und erst danach Deine Fragen hier im Forum stellen, denn sehr vieles wurde schon mehrfach beantwortet. Bitte dabei auch die Forenregeln beachten.
    Kein Support per PN - Fragen gehören ins Forum.[/SIZE]
    [size=8]Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)[/SIZE]

Jetzt mitmachen!

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