is_page() funktioniert nicht bei k2

  • Hallo zusammen!
    Ich habe wirklich gesucht und außer einem Forumeintrag ohne Lösung von vor einem Jahr nix gefunden.

    Problem: In meiner header.php will ich abfragen welche Seite grad aktiviert ist um dann eine Klasse zuzufügen.
    Das ganze brauche ich deshalb weil meine Navigation Bilder sind und ein anderes Bild zu sehen sein soll, wenn ich auf dieser Seite bin.

    <li id="xxx"><a href="?page_id=3" class="<?php if (is_page('3')) { ?>current<?php } ?>"></a></li>

    kein Fehlermeldung, nix, so als ob es einfach ignoriert wird. Im Seitenquelltext steht auch nur:
    <li id="xxx"><a href="?page_id=3" class=""></a></li>

    Ähnliches Problem (oder sogar gleiches?) auch in der widget.php, wo ich alle Seiten zu den entsprechenden Eltern auflisten will.

    $out = wswwpx_fold_page_list( 'title_li=&echo=0&child_of='.$parent.'&sort_column=' . $sortby );

    $parent wollte ich einen Wert über is_page zuweisen. Nix.

    Habt ihr Ideen? Kennt ihr das Problem? Lösungsvorschläge? Denkansätze?

    • 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

  • Beim erstem versuch mal so:

    PHP
    <?php if (is_page('3')) { echo 'current'; } ?>


    Zum zweiten, genauso mit echo irgendwo prüfen ob $parent überhaupt gefüllt ist.

  • Das Problem ist der Aufruf is_page().
    Wenn ich <?php if (1==1) { ?>current<?php } ?> eingeb, dann funktionierts.

    Wie kann man sonst auslesen auf welcher Seite man sich befindet?

  • Könnte mal wieder ein Problem mit dem Scope sein, obwohls über eine Funktion aufgerufen wird. Egal. Probiers mal so, vielleicht funktionierts:

    PHP
    <?php global $post;
    $currentpageid = $post->ID; ?>
    
    
    <li id="xxx"><a href="?page_id=3" class="<?php if ($currentpageid == '3') { ?>current<?php } ?>"></a></li>

    Gruß Jeriko

    Jeriko - Design, Style, Photographie

  • Hm, leider immernoch nix. Genau wie vorher eine leere Klasse.
    Was ist denn das für ein Problem mit scope?

    Ist es möglich, dass man selbst irgendwas am theme oder wordpress verändert hat ohne es zu merken, was jetzt den Aufruf blockiert?? Wo müsste man dann nachschauen?

  • Habs noch mal mit der Version [COLOR=#000000][COLOR=#0000CC]$currentpageid [/COLOR][COLOR=#006600]= [/COLOR][COLOR=#0000CC]$post[/COLOR][COLOR=#006600]->[/COLOR][COLOR=#0000CC]ID[/COLOR][COLOR=#006600]; [/COLOR][COLOR=#0000CC]?> [/COLOR][/COLOR][FONT=monospace]versucht[/FONT][COLOR=#000000][COLOR=#0000CC].

    [/COLOR][/COLOR][FONT=monospace]Es [/FONT][FONT=monospace]funkioniert [/FONT][COLOR=#000000][/COLOR][COLOR=#000000][/COLOR][FONT=monospace]auf allen Seiten, außer auf der, die ich heute morgen getestet habe.

    Grund: [COLOR=Red]Es wird die ID der Posts auf dieser Seite ausgelesen.[/COLOR] Kann man das irgendwie umgehen?

    Kann sein, dass es damit zusammenhängt, das ich gepfuscht habe beim Einstellen der Startseite... die Page mit der ID=3 ist meine Startseite. Die ich im Backend bei "static page" festgelegt habe, aber bei "front page" hab ich nix gewählt und bei "post page" die Seite mit ID=3.

    Trotzdem brauche ich für meine Startseite ein ausgewähltes Bild. Vorschläge?

    Schon mal Vielen Dank für die bisherige Hilfe!
    [/FONT][COLOR=#000000][/COLOR]

  • Zitat

    die Page mit der ID=3 ist meine Startseite


    Nee, ebend nicht, das trifft nur wenn du dies auch bei "Startseite:" angibst. Und dann klappts auch mit is_page wieder...
    Wenn du das bei "Beitragsseite:" angibst, dann bist du nicht auf einer Page/Seite sondern in einem Beitrag/Post

  • ok, das hab ich soweit verstanden.
    Dann funktioniert auch is_page() wieder.

    Aber: Ich komme so nicht zu meiner gewünschten Startseite.

    Der Menupunkt "Syndikat" ist als statische Seite angelegt, weil er noch Unterpunkte enthält. Gleichzeitig sollen hier, also auf Syndikat, aber die neuesten Beiträge gezeigt werden.

    alle Auswahlmöglichkeiten für die Startseite führen nicht zum gewünschten Ergebnis. Wie kann ich die neuesten Beiträge auf der statischen Seite einfügen, damit der Menupunkt aktiviert ist und meine Unterpunkt richtig angezeigt werden. Wie kann ich ein entsprechendes Template bauen. Kann man das Problem nicht irgendwie umgehen. Auch in der Breadcrumb-navigation steht Weblog und nicht syndikat.

    Wisst ihr was ich meine? Schaut hier

  • Ick versteh nur Bahnhof, aktuell ist "Startseite" und "Syndikat" identisch, von der ID her und vom Inhalt, was mir dann auch logisch erscheint. Wo liegt das Problem?
    Aktive Seite, meinst du in der Sidebar? Dann musst du da an die CSS:
    <li class="page_item current_page_item">

    PHP
    #pages li.current_page_item a{
    background:#f00;
    }
  • Wollte mich mal noch bedanken für die Unterstützung.
    Das mit der Startseite hab ich jetzt auch hinbekommen, lag nicht am CSS.

    Habe aber mal noch eine Verständnisfrage.

    Dieses "$currentpageid = $post->ID;" gibt ja immer die ID zurück. Was ja gut ist. Aber wenn ich auf einer statischen Seite durch ein spezielles Template eine Kategorie einbau, wird ja nicht mehr die Seiten-id ausgelesen, sondern die ID der posts.
    Kann man das nicht umgehen? Ich brauche die pageid für meine Navigation, die nun nicht mehr angezeigt wird, wenn ID von Post genommen wird.

    Also unter der page "Aktuelles" gibt es die Untermenupunkt "News" und "Neuerscheinungen". Diese Untermenupunkte sind auch statische Seiten auf denen Posts aus entsprechenden Kategorien mittels Templates erscheinen. Alles klar? Wäre schön, wenn jemand helfen kann.

Jetzt mitmachen!

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