Highlighting bei wp_get_archives

  • Hallo liebe Leser,

    ich hoffe, mir kann jemand helfen. Wordpress gibt ja von Hause aus sowie für die statischen Seiten (page_item current_page_item) als auch für die Kategorien (current-cat) eine Klasse zum Highlighten der aktuell besuchten Seite mit.

    Bei den chronologisch geordneten Archiven, die mit wp_get_archives() aufgerufen werden, habe ich diese Funktion allerdings nicht gefunden.

    Gibt es eine Möglichkeit, aktuell besuchte Links aus dem wp_get_archives() - Archiv per CSS hervorzuheben? Ich bin auch für jegliche Hacks dankbar.

    Vielen Dank für Eure Antworten

    • 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

  • Müsste man "selbst stricken" ...

    Anregung: single_month_title(' ',false) gibt Monat und Jahr zurück, in dem man gerade herumsurft. Vielleicht kann man daraus ja einen "Filter" bauen, der innerhalb der Funktion wp_get_archives() danach sucht, ob diese Zeichenkette darin auftaucht - und dann ggf. den betreffenden Listenpunkt irgendwie umformatiert ...

    Sollte hinzukriegen sein.

  • "Filtern" klappt leider nicht, da man scheinbar nicht für jedes Template-Tag bzw. jede Funktion einen Filter schreiben kann. wp_get_archives(); und get_archives_link(); gehören dann wohl dazu, sonst würde es um Einiges einfacher gehen.

    Frage an die Allgemeinheit: Kann man das System irgendwie austricksen? Beziehungsweise selbst irgendwie festlegen, dass gewisse Funktionen DOCH "filterbar" sind?

  • Ersteinmal danke für die Antwort. Jetzt habe ich selbst etwas "herumgestrickt" und bin zu dem Entschluß gekommen, dass innerhalb der Template-Dateien einfach kein Weg rein führt.

    In die general-template.php wollte ich nicht unbedingt vordringen. Dort könnte man dies sicher mit Hilfe von

    PHP
    <?php
    basename(getenv("REQUEST_URI"));
    ?>

    oder ähnlichem lösen, was ich aber noch nicht ausprobiert habe. Vorerst werde ich wohl darauf verzichten. Vielleicht aber hat ja jemand noch die entscheidene Idee?

    Mich wundert, dass dies noch keiner wirklich vermisst hat (Google liefert hierzu 1 Seite aus Italien, wo man sich diese Frage stellt) und warum wurde meine Frage eigentlich von Konfiguration in die Rubrik Design verschoben? :mrgreen:

    Beste Grüße aus NRW/Lippe

  • Statt die Originaldateien zu ändern, finde ich es besser, die beiden Funktionen wp_get_archives() und get_archives_link() in einem Plugin durch überarbeitete Funktionen zu ersetzen und dann statt der Originale diese veränderten Funktionen zu nehmen.

  • Statt die Originaldateien zu ändern, finde ich es besser, die beiden Funktionen wp_get_archives() und get_archives_link() in einem Plugin durch überarbeitete Funktionen zu ersetzen und dann statt der Originale diese veränderten Funktionen zu nehmen.

    Meinst Du, der Aufwand eines Plugins würde sich lohnen? Ich hoffe doch, dass Wordpress diese Funktion innerhalb der nächsten Versionen berücksichtigt. Es wäre ja wirklich nur eine ganz kleine Sache zu erledigen. Einen aktiven Link hervorheben zu können gehört heutzutage einfach in einen modernen Blog bzw. in ein modernes CMS rein.

  • Zitat

    der Aufwand eines Plugins würde sich lohnen?


    Ich glaube nicht, dass das so aufwändig ist, vor allem nicht, wenn man sich nur auf einen Typ Archive, z.B. Monatsarchive beschränken kann. Ob es lohnt? Kommt drauf an :-)

  • Systemdateien ändern find ich auch nicht so gut, man weiß nie wie sich das im Zusammenspiel mit irgendwelchen PlugIns etc. auswirkt ...

    Am Einfachsten ist meistens ein "Filter". Beispiel: Man schreibt eine Funktion wie ...

    Code
    function change_Greeting($Text) {
    	$Text = preg_replace("/(Servus)/i","Moinmoin",$Text);
    	return $Text;
    }

    ... legt dann fest, auf welche Template-Tags sich diese Änderung auswirken soll ...

    Code
    add_filter('the_excerpt', 'change_Greeting');
    add_filter('the_content', 'change_Greeting');

    ... und schon wird in allen Beiträgen "Servus" durch "Moinmoin" ausgetauscht. Damit kann man natürlich auch sinnvollere Sachen anstellen, klar.

    :-)

    Nur lassen sich manche Wordpress-Funktionen irgendwie nicht filtern. Da passiert dann einfach nichts. Darunter auch wp_get_archives(); und was sonst noch so dazugehört. Da wirst Du dann wohl wp_get_archives(); und vermutlich auch get_archives_link(); kompletto in ein "eigenes PlugIn" kopieren müssen - dort dann umbenennen - z.B. in wp_get_archivesNeu(); - das Ganze ein bisschen umarbeiten - und dann in der Sidebar (oder wo auch immer) eben "Deine" neue Funktion aufrufen.

    Das klappt auf jeden Fall. Nur hatte ich gehofft, dass man das auch irgendwie ein bisschen eleganter hinkriegen kann ...

  • Oh, erstmal vielen Dank fürs Mitdenken :)
    Wie ich jedoch weiter oben schon erwähnt habe, verzichte ich zunächst darauf. Wenn ich jetzt noch anfange, eine neue Funktion zu schreiben, wird meine Webseite nie fertig. Gerade die Archivfunktionen sind insbesondere wegen der vielen Einstellungsmöglichkeiten von Haus aus nicht gerade winzig angelegt, soweit ichs überfliegen konnte.

    In der Zwischenzeit hoffe ich, dass WP dies ggf. in der nächsten Version berücksichtigt. Das wäre doch eine schöne Ergänzung oder? Gibt es hier eigentlich eine Wunschliste?

  • ... sind aber eigentlich echt nur ein paar Zeilen, die man verändern müsste ...

    Man muss in der Funktion get_archivelinkdings nur vergleichen, ob die aktuelle Adresse gleich dem Ergebnis von dem get_archivelinkdings sind - wenn ja, machmer nen Fettdruck, wenn nein, dann eben nicht. Wenn es denn nur irgendwie möglich wäre, diese Funktion mit einem "Filter" zu bearbeiten ...

    Ansonsten (ich hab ja wirklich schon n büschn probiert) kann man die Funktionen get_month_link und get_day_link filtern. Davon hat man allerdings nichts: Es nutzt herzlich wenig, wenn man alles zwischen href=" und dem nächsten " verändern kann ... ich hab zwar versucht, ein bisschen herumzutricksen ... den Inhalt durch ein Anführungszeichen, Leerzeichen, class="aktiv und zwei Anführungszeichen zu ersetzen etc. - Aber datt klappt nur fast ... wird immer in ganz merkwürdige andere Sachen umgewandelt ...

    :-)

    Im Grunde genommen bin ich immerhin so weit gekommen, dass jedes "aktive" Archiv durch einen nicht-funktionstüchtigen Link gekennzeichnet wird. Das ist doch schon mal was ...

    *lol*

  • Kleiner Nachtrag noch:

    Vielleicht hat sich das sehr kompliziert angehört von wegen "Funktionen kopieren und in ein neues PlugIn setzen" ... Das ist aber in Wirklichkeit überhaupt kein Problem. Du öffnest Dir den Simple-Text, kopierst beide Dinger da rein - einmal "Strg-H" (Suchen und Ersetzen) drücken, "wp_get_archives" durch "wp_get_archivesNeu" ersetzen - das gleiche mit "get_archives_link" - Hochladen, aktivieren - und fertig. Zeit zum Dran-Rumspielen.

    Okay ...

    Na gut. Bei solchen Aktionen kommt meistens erst eine Fehlermeldung. Aber die sagt einem dann auch ziemlich genau, was man "vergessen" hat. "Cannot redeclare Blablabla in Dingelskirchen" - Dann hat man beim Umbenennen doch irgendetwas vergessen.

    Manchmal kommen auch andere lustige Meldungen, die man aber meistens dadurch beheben kann, dass man die angemäkelten fehlenden Variablen o.ä. vorne in die kopierte Funktion kopiert - und "global" davorschreibt - das passiert z.B. gerne, wenn man sich Teilstücke aus größeren Zusammenhängen "klaut"

    ... Aber nichts, woran man verzweifeln müsste.

  • Hallo Pufaxx,

    ich finde es ja total klasse, dass Du Dir so viele Gedanken zum Thema gemacht hast. Wenn ich mich richtig ransetzen würde, käme ich sicherlich auch irgendwie zum gewünschten Ergebnis. Mein Problem heißt aber Zeit;-)

    Jetzt ist es eh zu spät. Ursprünglich stellte ich diese Frage, weil ich meine Webseite prüfen lasse. Die Prüfung läuft nun bereits. Ein Versuch, mit Hilfe von Wordpress ernsthafte barrierefreie Seiten zu erstellen. Ich habe ganz schön viel herumgehackt. Mal sehen, was bei raus kommt. Aus diesem Grunde habe ich die Navigation vorübergehend manuell erstellt. Die Ausgabe als NICHTLINK auf aktuell besuchten Seiten ist gefordert. Ein Highlighting ist zwar nicht schlecht, es sollte jedoch nicht auf sich selbst verwiesen werden.

    Wenn das alles überstanden ist, setze ich mich ganz bestimmt an eine Lösung für das Problemchen.

  • Aha? Aktiv gleich NICHTLINK? Das soll barrierefrei sein?

    Also ganz abgesehen davon, dass ich kaum ein CMS kenne, dass man für "Nichtlink-bei-Aktiv" nicht irgendwie bearbeiten müsste, ist das doch der totale Quatsch, aktive Menüpunkte zu einfachem Text zu machen ...

    Ich mein, es kann ja auch mal passieren, dass man sich aus irgendeinem Grund auf einer Website "verläuft" ... Entweder in lauter Untermenüpunkten oder weil mal irgendwas nicht geladen wird, weil zwischendrin vier mal das Telefon klingelt "wo war ich grad?" oder-oder-oder ... Und wenn man dann wieder auf den nächst-übergeordneten, bekannten Punkt zurück will, kann man den nicht anklicken. Jippie.

    "barrierefrei" ... Oder vielleicht nur eine "mal sehen, was die für Gegenargumente bringen"-Fangfrage? ... Oder sitz ich am Ende gar zu selten am Rechner und kann einfach nicht surfen?

    Wenn ich auf m Klo das Licht anmache, ist der Lichtschalter doch auch nicht plötzlich weg, bloß weil das Licht "aktiv" ist?

    pfff ... da staunt aber einer ...

    :-)

  • So sehe ich das auch wie Du, aber die persönliche Meinung zählt hier nicht. Wenn es danach ginge, würde ich viele Dinge sicher ganz anders realisieren. Das mit dem Nichtlink ist mir leider erst im letzten Mement über den Weg gelaufen. Eine Funktion, die ich so nicht erwartet hätte. Beinahe hätte ich es verkehrt gemacht.

    Die Richtlinien fordern es aber nunmal ohne wenn und aber, egal was wir darüber denken. Manche Bedingungen sehe ich sogar als Schwachsinn an. Viel diskutiert wurde bereits über das Thema, ob sich Seiten selbst verlinken sollten oder nicht. Ich persönlich halte absolut nichts davon. Vielleicht muß man ggf. nach Senden von Postdaten die Seite neu laden. Man ist jedoch der Meinung, dass Screereader-Benutzer durch die Selbstverlinkung behindert werden könnten. Deshalb ist diese Position als Prüfschritt mit Punkteabzug für Nichtrealisierung vorgesehen.

    Also wie gesagt, Fangfragen brauchst Du mir nicht zu stellen. Ich teile sogar Deine Ansichten. Die Richtlinien habe ich mir eben nicht ausgedacht. Das einzigste was ich im Moment möchte ist, diese Prüfung zu überstehen. Das verstehst Du doch oder?

Jetzt mitmachen!

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