current-page-item wird nicht generiert

  • Hi,
    ich habe das Problem das bei dem Aufruf

    PHP
    <?php wp_list_pages('title_li=' ); ?>

    kein current-page-item generiert wird. Woran könnte das liegen?
    Der Quelltext zeigt das:



    Ich habe, um die Reihenfolge im Menü festzulegen, für die Seiten immer übergeordnete Seiten angegeben - kann das das Problem sein?
    In Wordpress sieht es so aus:

    AKTUELLES
    -SPIELPLAN
    --TICKETS
    ---HAUS

    und so weiter...

    Wie kann ich jetzt active in CSS definieren, so dass es funktioniert?

    Mit besten Grüßen,
    m

    Einmal editiert, zuletzt von marX (20. August 2008 um 15:35)

    • 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

  • Ich habe, um die Reihenfolge im Menü festzulegen, für die Seiten immer übergeordnete Seiten angegeben - kann das das Problem sein?


    Möglich. Ich hab noch nie so ne tiefe Schachtelung gesehen...

    Warum machst du das auch? Du kannst doch für jede Seite (im Schreiben-Dialog -> Box "Reihenfolge") eine Zahl angeben, nach der dann sortiert wird. Größere Zahlen stehen dann weiter unten. Die Reihenfolge muss nicht fortlaufend sein, du kannst also "Lücken" für spätere Seiten lassen.

    Zusätzlich im Theme noch das hier ändern, und du hast die Reihenfolge die du möchtest:

    PHP
    <?php wp_list_pages('title_li=[COLOR="Red"]&sort_column=menu_order[/COLOR]' ); ?>
  • In Ordnung, ich änder die Verschachtelung, ich war vor dem Punkt zurückgeschreckt da er als "Notlösung" bezeichnet wurde.

    Auf dieser Seite wird so ziemlich das Problem beschrieben, mit dem ich zu kämpfen habe, als Lösung wird angeboten
    Betsy Kimak’s Blog » Blog Archive » Wordpress’ current_page_item Selector Got You Down?


    In fact, for pages with posts, Wordpress doesn’t pass the current_page_item class in the HTML at all:

    <div id="navlnks">
    <ul>
    <li class="page_item page-item-1"><a href="http://www.umaitech.com" title="Home">Home</a></li>
    <li class="page_item page-item-2"><a href="http://www.umaitech.com /about/" title="About">About</a></li>
    <li class="page_item page-item-3"><a href="http://www.umaitech.com /portfolio/" title="Portfolio">Portfolio</a></li>
    <li class="page_item page-item-4"><a href="http://www.umaitech.com /news/" title="News">News</a></li>
    <li class="page_item page-item-5"><a href="http://www.umaitech.com /blog/" title="Blog">Blog</a></li>
    </ul>
    </div>

    Interestingly, if you go back to Options > Reading and don’t select a posts page, it works. To replicate this, just leave the default – Select – option for the Posts page as shown here:
    [Blockierte Grafik: http://www.umaitech.com/images/wp_admin3.jpg
    After doing this, Wordpress properly outputs the current_page_item class in the HTML:


    Das ist so ziemlich genau mein Problem, leider funktioniert die Lösung nicht. Mir ist aufgefallen, dass der current-page-item tag dann gesetzt wird, wenn ich Post auslese, da ich aber ausschließlich mit statischen Seiten arbeite und dies nie tue, wird auch der POST tag nicht gesetzt.

    Leider funktioniert nach der "entschachtelung" der current-page-item Tag immer noch nicht.

    Danke für jede Idee / Hilfe!

  • Im Quelltext bekomme ich jetzt eine etwas sauberere Anzeige, jedoch nach wie vor kein current-page-item

    Livedemo auf B•N » AKTUELLES

  • Ich habe inzwischen herausgefunden, dass durch das Filtern der Posts durch

    query_posts(cat=10);

    der current-page-item tag gekillt wird. Welche Andere Möglichkeit gibt es nur die Posts aus Kategorie 10 zu erhalten?

    Mit freundlichen Grüßen,
    Machiavel

  • Genau da liegt das Problem, sagt dir ja auch die Quelle die du oben verlinkt hast:

    Zitat

    In fact, for pages with posts, Wordpress doesn’t pass the current_page_item class in the HTML at all:

    Abhilfe schafft hier wahrscheinlich die Verwendung eines neuen WP_Query-Objekts statt einem einfachen query_posts():

    PHP
    <?php $my_query = new WP_Query('cat=10'); ?>
    <?php while ($my_query->have_posts()) : $my_query->the_post(); ?>
      <!-- Do special_cat stuff... -->
    <?php endwhile; ?>

    Und nicht gleich meckern, wenn du nicht nach 5 Minuten ne passende Antwort kriegst... :|

  • Entschuldige bitte, ich wollte meine Fortschritte zur Kenntnis geben (aber natürlich auch Aufmerksamkeit.. da hast du schon recht, sorry dafür).

    Ich habe jetzt folgende 3 Varianten ausprobiert, und bei keiner wird der current-post-item Tag angezeigt:

    PHP
    <?php $my_query = new WP_Query('cat=11'); ?>
    <?php while ($my_query->have_posts()) : $my_query->the_post(); ?> 
     <?php the_content('(mehr lesen)'); ?>
     </p>
    <?php endwhile; ?>
    PHP
    <?php query_posts('cat=11');?>
    <?php    #$posts = get_posts('category=11'); ?>
    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
     <?php  
            the_content('<div id="mehr_lesen"><p>mehr lesen...</p></div>');  
            global $more;
            $more = 0; 
        ?>  
    <?php endwhile; endif; ?>
    PHP
    <?php
     $lastposts = get_posts('category=11');
     foreach($lastposts as $post) :
        setup_postdata($post);
     ?>
     <?php the_content('(mehr lesen)'); ?>
     </p>
     <?php endforeach; ?>


    Leider ist keine der Varianten von Erfolg gekrönt. Funktioniert hat es aus unerklärlicher Art und Weise mit der letzten Version auf der Startpage, jedoch nicht bei den anderen Menüpunkten.

    Im Menüpunkt TICKETS benutze ich genau den selben Aufruf

    PHP
    <?php
     $lastposts = get_posts('category=10');
     foreach($lastposts as $post) :
        setup_postdata($post);
     ?>
    <p><b><a id="post-<?php the_ID(); ?>" href="<?php the_permalink() ?>" rel="bookmark" title=" <?php the_title(); ?>"><div id="titles"><?php the_title(); ?></div></a></b>
     <?php the_content('(mehr lesen)'); ?>
     </p>
     <?php endforeach; ?>

    wie auf der Startseite "AKTUELLES". Unter AKTUELLES wird das current-page-item gesetzt, bei TICKETS nicht.

    Langsam werde ich immer ratloser... ach ja, und der "mehr lesen" Tag funktioniert bei der letzten Variante auch nicht (mehr).

    Vielen Dank für weitere Ideen und Vorschläge!

  • Jetzt gehts?

    Code
    <li class="page_item page-item-105"><a href="http://berlinerwaende.de/wordpress" title="AKTUELLES">AKTUELLES</a></li>
    <li class="page_item page-item-107"><a href="http://berlinerwaende.de/wordpress/spielplan" title="SPIELPLAN">SPIELPLAN</a></li>
    [COLOR="Red"]<li class="page_item page-item-111 [B]current_page_item[/B]"><a href="http://berlinerwaende.de/wordpress/tickets" title="TICKETS">TICKETS</a></li>[/COLOR]
    <li class="page_item page-item-114"><a href="http://berlinerwaende.de/wordpress/haus" title="HAUS">HAUS</a></li>
    <li class="page_item page-item-117">
  • Also ich kann es mir absolut nicht erklären aber auf einmal funktioniert diese Variante:

    PHP
    <?php
     $lastposts = get_posts('category=45');
     foreach($lastposts as $post) :
        setup_postdata($post);
     ?>
     <?php the_content('(mehr lesen)'); ?>
    
    
     <?php endforeach; ?>

    Das Einzige was mir nicht gegönnt ist, ist der (mehr lesen) tag. Woran kann das jetzt liegen?

    und an dem global ding liegts nicht, das hab ich schon ausprobiert..

    edit:

    Mir gefällt die Lösung nach wie vor nicht wirklich gut, ist es denn unmöglich durch query_posts('cat=10'); usw. auch ein current-page-item zu erhalten?
    Warum ist das überhaupt von einander abhängig! Ich hab noch so viele andere Fragen und halt mich ewig mit dem active element auf..

    Einmal editiert, zuletzt von machiavel (21. August 2008 um 14:12)

  • Was soll eigentlich genau gekürzt werden? Da stehen ja eh nur 3 Zeilen auf "Tickets"...

    query_posts() beeinflusst den Loop. Ohne jetzt näher in den Core zu schauen würde ich behauptet, dabei werden u.a. auch die "Page"-Eigenschaften überschrieben, auf die wegen .current_page_item aber geprüft werden muss. Die statische Seite wird so ja zu einer Artikelseite, ist also (im WP-Sinne) nicht mehr "statisch". Nimm es einfach wo hin, Lösungen dafür hast du ja (get_posts() bzw. new WP_Query()).

  • Zitat

    Ohne jetzt näher in den Core zu schauen würde ich behauptet, dabei werden u.a. auch die "Page"-Eigenschaften überschrieben, auf die wegen .current_page_item aber geprüft werden muss.

    Ich habe nachgeschaut und es stimmt... :mrgreen:

  • gekürzt werden soll unter "AKTUELLES", wenn ich dort (get_posts() bzw. new WP_Query()) benutze, dann funktioniert der current-page-item tag wieder nicht...

    Wie kann ich denn verhindern, dass die "Page"-Eigenschaften überschrieben werden? Gar nicht bei query_posts() ich würde ja mit get_posts() arbeiten wenn der more tag funktionieren würde.

    Und - in den Bereichen Spielplan und Künstlerinnen sind etwas aufwändige Script dahinter, welche ich mit query_posts realisiert habe. Das jetzt alles zu ändern ist echt nicht einfach...
    Vor allem habe ich es schon probiert und es läuft einfach irgendwie nicht mit get_posts().

  • gekürzt werden soll unter "AKTUELLES", wenn ich dort (get_posts() bzw. new WP_Query()) benutze, dann funktioniert der current-page-item tag wieder nicht...


    Also "theoretisch" solltest du query_posts() 1:1 mit new WP_Query() ersetzen können. Es müssen eigentlich je nur 2 Zeilen geändert werden.

    Zum Verständnis: die Funktionaltität ist gleich, query_posts() ändert das "Standard"-Loop-Objekt, WP_Query() legt ein neues Loop-Objekt an. .current-page-item benötigt den Standard-Loop, ein mit new WP_Query() erzeugter Loop beeinflusst die Funktion dann nicht.

  • HEY!

    Das Funktioniert soweit klasse.
    Ich habe alle [COLOR=#000000][COLOR=#0000CC]query_posts[/COLOR][/COLOR] durch [COLOR=#000000][COLOR=#006600]new [/COLOR][COLOR=#0000CC]WP_Query [/COLOR][/COLOR]ersetzt, nun vermute ich jedoch, dass der Loop komplett fehlt, d.h. es wird nur der Erste (bzw. Ein einziger) Eintrag aus der Kategorie ausgegeben.

    Wie kann ich alle Posts anzeigen lassen?

  • Ich hab dir ziemlich weit oben schonmal folgendes gegeben:

    PHP
    <?php [COLOR="Red"]$my_query[/COLOR] = [COLOR="Blue"]new WP_Query('cat=10');[/COLOR] ?> 
    <?php while ([COLOR="#ff0000"]$my_query->[/COLOR]have_posts()) : [COLOR="#ff0000"]$my_query->[/COLOR]the_post(); ?>


    Ich hab die relevanten Teile mal farbig markiert. ;-)

  • Wer lesen kann ist klar im Vorteil!

    Super, echt super, jetzt scheinen alle Probleme erledigt sein. Nun kommt das Submenü (die Querleiste). Leider wird diese ganz und gar nicht ausgelesen sondern ist per Hand geschrieben - sollte ich das mit Child Pages (hab das noch nie gemacht, nur mal kurz etwas drüber gelesen) realisieren?

    Ich möchte halt einen Hauptmenüpunkt und Menüunterpunkte in der Leiste (also das Submenü) bei TICKETS

    TICKETS PREISE SERVICE GRUPPEN

    Wer natürlich toll, wenn ich die auch "automatisch auslesen lassen könnte".

    Oder geht das jetzt zu weit hier?

Jetzt mitmachen!

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