Core Function wp_list_pages durch eigene ersetzen

  • Hi.

    Ich möchte mir ein PlugIn schreiben, in dem ich allerdings eine eigene Funktion für die Ausgabe der Pages (normal: wp_list_pages) erstellt habe.
    Durch manipulation des Quelltextes nicht sicher realisierbar, daher benötigte ich eine komplette neue Funktion.
    Nun möchte ich aber das Plugin anweisen, meine Funktion anstelle der orginalen zu bentuzen.
    Leider kommte ich mir remove_function und add_function nicht wirklich weiter.

    Ziel ist es, das template nicht auf den Namen der neuen Funktion ändern zu müssen.
    Im TPL soll weiterhin "wp_list_pages" aufgerufen werden können.
    Nur das eben bei aktiviertem Plugin meine Funktion verwendet wird.

    Funktion heisst "ml_wp_list_pages"
    Probiert hab ichs nun u.a. mit:
    <code>
    remove_action('wp_list_pages', 'wp_list_pages');
    add_action('wp_list_pages', 'ml_wp_list_pages');
    </code>

    Das sieht mir schon nicht wirklich korrekt aus, da "wp_list_pages" wohl kaum ein Filter ist. Allerdings konnte ich bisher nirgends (auch nich im codex) eine Lösung finden. Muss allerdings gestehen, das ich der englischen Sprache nicht unbedingt sicher bin und evtl. auch was überlesen habe.
    Ggf. hab ich bisher auch nur mit den falschen Schlagwörtern gesucht.

    Kennt jemand eine Lösung für mein Prob?

    • 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

  • PS: kurz zu meiner bsicht noch:

    Ich möchte die Anzeige des gesamten WP so realisieren, das nur Pages und Beiträge einer bestimmten Kategorie angezeigt werden.

    Bei "wp_list_cats" geht das easy mit "child_of" allerdings nicht bei "wp_list_pages" und an anderen Stellen werd ich wohl auch noch ähnliche Fälle haben.

    Mich wundert auch, das dies bei WP nicht vorgesehen ist.
    Denn Ich kann Kategorien anlegen und ich kann eine davon auswählen, in die per default alle Pages zugeordnet werden. Konsequent wäre aber eine Auswahl der Kategorien für Pages. Und schlussfolgerichtig dann auch die Möglichkeit der Auswahl bei der Anzeige.

    PPS: Es wird WP 1.5.2 eingesetzt!

  • Sorry, aber Du verwechselst da was.....

    add_action

    und

    remove_action

    sind WP-Interne Routinen um Menüfunktionen zum Admin-Backend hinzuzufügen bzw. wieder daraus zu entfernen!

    Damit lassen sich keine PHP-Funktionen ersetzen, was im übrigen auch PHP nicht unterstützt....

    Da mußt Du das Template schon entsprechend anpassen.

    vG

    Arno

    Feedback ist Wichtig!|FAQ|Rückfragen im Forum!|Wenn ich mal was vergesse.... einfach mal sagen...

  • Da habe ich während Deiner Antwort noch an meiner geschrieben:

    Zitat

    Bei "wp_list_cats" geht das easy mit "child_of" allerdings nicht bei "wp_list_pages" und an anderen Stellen werd ich wohl auch noch ähnliche Fälle haben.

    auf wp_list_pages hat einen childof-Parameter.

    vG

    Arno

    Feedback ist Wichtig!|FAQ|Rückfragen im Forum!|Wenn ich mal was vergesse.... einfach mal sagen...

  • und noch einer hinterher ;)

    Zitat

    Denn Ich kann Kategorien anlegen und ich kann eine davon auswählen, in die per default alle Pages zugeordnet werden. Konsequent wäre aber eine Auswahl der Kategorien für Pages. Und schlussfolgerichtig dann auch die Möglichkeit der Auswahl bei der Anzeige.



    Pages mögen evtl. der Standardkategorie zugeordnet werden, was aber nichts damit zu tun hat, das Pages eigentlich ausserhalb der Kategorien laufen und Ihre eigene Struktur über die Seitenabhängigkeiten aufbauen.

    Willst Du z.B. ein Menu aufbauen in dem nur die Seiten der obersten Ebene auftauchen, nutzt Du wp_list_pages mit dem Parameter depth=1. Um die Seiten der Unterebenen für die einzelnen SubSeiten einer Hauptseite als SubMenu anzuzeigen, kannst Du z.B. mein Plugin dafür einsetzen. Siehe dazu auf meiner Homepage in den Seiten zum Thema WordPress.

    vG

    Arno

    Feedback ist Wichtig!|FAQ|Rückfragen im Forum!|Wenn ich mal was vergesse.... einfach mal sagen...

  • Zitat von Arno Simon

    auf wp_list_pages hat einen childof-Parameter.

    Leider nicht ganz korrekt.
    Bei wp_list_pages bezieht sich der Parameter "child_of" auf eine Übergeordnete Seite. Ich könnte somit nur Pages anzeigen lassen, die ggf. Kind einer anderen Pages sind.

    Das ist aber nicht das Ziel!

  • Ziel ist es:
    WP "multilingual" aufzubauen.

    Dazu habe ich mir überlegt, wäre es das beste, wenn man Posts sowie Pages verschiedenen Kategorien zuordnen kann.
    Von Hause aus kann WP jeden Post einer beliebigen Kategorie aber jede Page nur einer bestimmten default Kategorie zuordnen.

    Wenn ich also dafür sorge, das man im AdminPanel durch das hinzufügen eines Auswahlfeldes für "Auswahl Kategorien", eine Page jeder beliebigen Kategorie zuordnen kann, habe ich bereits die komplette Unterteilung meiner Pages sowie Posts in Kategorien.

    Nun müsste ich also nur noch dafür sorgen, das diese bei der Ausgabe mit berücksichtigt werden.
    Dazu gehe ich also hin und sage z.B. wp_list_pages in einer modifizierten Funktion: "...gebe nur Pages aus, die Kategorie X zugeordnet sind...".

    Aktuell hab ich das bereits realisiert, allerdings halt nur durch eigene Funktionen die auch mit eigenem Namen im TPL aufgerufen werden müssen, was für mich aber "suboptimal" ist. ;)

    Bereits vorhanden sind nun mind. 2 Kategorien Namens "de" und "en" (weitere sollen folgen).
    Deutsche Posts ordne ich also immer unterhalb der Kategorie "de" und englische unter "en" an.
    Bei Pages muss dies noch erfolgen.

    Nun lese ich im WP mit die vom Benutzer bevorzugte Sprache aus dem Agent (hier als Bsp.: "de") aus und verwende diese als Default-Einstellung. Via Parameter kann diese aber auch geändert werden.(z.B. Flaggenauswahl)

    Im Plugin sorge ich bereits dafür, das WP auf die preferierte Sprache lokalisiert wird und die entsprechende *.mo eingelesen und verwendet wird.

    Im Sidebar TPL sorge ich dafür, das nur Posts der Kategorie "de" angezeigt werden.

    Und diese eigentlich simple Kategoriesierung wende ich auf allen weiteren Sites, wo es nötig ist, an.

    Um das ganze aber auch etwas freundlicher beim Wechsel von Themes zu gestalten, war nun mein Gedanke, das so zu bewerkstelligen, das WP nicht seine Core-Functions verwendet, sondern meine jeweiligen veränderten.

    Dabei scheitere ich halt beim Vorhaben, WP zu veranlassen, für bestimmte Aktionen nicht die eigenen Functions zu verwenden.
    Wäre halt so, als ob ich einen Filter ersetze, halt diesmal nur eine Funktion.

    Ideen?

    PS: Grund, das ich nen eigenes PlugIn dafür realisieren will, ist, das ich bisher keine auch nur ansatzweise vernünftige Lösung für gefunden habe.

    Grund für die Kategorisierung als Sprache-Unterteilung ist vor allem, das ich nich im Pages-Adminbereich eine ewig lange Liste von Pages haben will.
    Der Admin wird auch nur die für seine Sprache definierten Posts und Pages sehen! Stellt euch sonst mal vor, ein Admin hat im Pages-Admin eine lange List mit Pages (jeweils je Sprache) du einzig und allein durch "Überseiten" unterteilt sind. Dem deutschen Redakteur sind dabei doch die des englischen völlig schnurz. Zumal man nicht immer beabsichtigt, das der deutsche R. die vom englischen "sehen" und bearbeiten kann/darf.

  • nochmal: Da die Seiten in der gleichen Tabelle gehalten werden, wie die Posts, werden diese automatisch einer Standardkategorie zugeordnet! Generell laufen die Seiten aber ausserhalb des Kategorie-Managements! Dieses ist nur für die Posts zuständig!

    Feedback ist Wichtig!|FAQ|Rückfragen im Forum!|Wenn ich mal was vergesse.... einfach mal sagen...

  • Zitat von Arno Simon

    nochmal: Da die Seiten in der gleichen Tabelle gehalten werden, wie die Posts, werden diese automatisch einer Standardkategorie zugeordnet! Generell laufen die Seiten aber ausserhalb des Kategorie-Managements! Dieses ist nur für die Posts zuständig!


    Ja das ist wohl so, aber muss ja nicht so bleiben! ;)
    Wieso vorhandene Möglichkeiten nicht auch gezielt nutzen?!

  • Um die Seiten einer speziellen Kategorie zuzuordnen mußt Du die entsprechende Bearbeitungsfunktion erweitern. AFAIR gibt es dazu einen entsprechenden Action-Hook. Müßte jetzt aber auch erst schauen, welchen Du dafür nutzen kannst und dazu habe ich keine Zeit. Am besten mal durch das entsprechende Coding schnüffeln ;)

    Was das ersetzen der WP-Funktionen angeht: Dann mußt Du schon die entsprechenden Core-Files hacken und die WP-internen Funktionen durch umbenennen lahmlegen, dann kannst Du diese in Deinem PlugIn reimplementieren.

    Im Umkehrschluß mußt Du das dann aber bei jedem neuen Release machen.

    vG

    Arno

    Feedback ist Wichtig!|FAQ|Rückfragen im Forum!|Wenn ich mal was vergesse.... einfach mal sagen...

  • Zitat von LJay

    Ja das ist wohl so, aber muss ja nicht so bleiben! ;)
    Wieso vorhandene Möglichkeiten nicht auch gezielt nutzen?!



    Welche vorhandene Möglichkeit!? WP bietet von Haus aus keine Möglichkeit Pages Kategorien zuzuordnen die von WP in der Standardausprägung genutzt würde!

    Alles weitere sind Hacks und/oder Plugins, wobei ich von Hacks nicht allzuviel halte....

    Entweder man ist mit den vorhandenen Schnittstellen zufrieden oder nicht... Wenn man diese Nutzen will, muß man eben etwas Mehrarbeit in Kauf nehmen und zum Beispiel die Templates die man nutzen will auch entsprechend anpassen, was aber mit einem guten Editor über ein simples Search&Replace erledigt sein dürfte, es sei denn, man passt die Parametrierung auch eigenen bedürfnissen an.

    Ein Plugin welches von mir zunächst den Hack eines Core-Files erwartet, kommt bei mir z.B. gar nicht erst zum Einsatz.

    vG

    Arno

    Feedback ist Wichtig!|FAQ|Rückfragen im Forum!|Wenn ich mal was vergesse.... einfach mal sagen...

  • Zitat von Arno Simon

    Um die Seiten einer speziellen Kategorie zuzuordnen mußt Du die entsprechende Bearbeitungsfunktion erweitern. AFAIR gibt es dazu einen entsprechenden Action-Hook.


    Das muss ich noch machen, soweit bin ich noch nicht. Aber du hast Recht, das ich das AdminPanel erweitern muss.

    Zitat von Arno Simon


    Was das ersetzen der WP-Funktionen angeht: Dann mußt Du schon die entsprechenden Core-Files hacken und die WP-internen Funktionen durch umbenennen lahmlegen, dann kannst Du diese in Deinem PlugIn reimplementieren.

    Das will ich natürlich nicht, denn ich möchte das schon als "echtes" WP Plugin realisieren.
    Dann wohl doch lieber die TPLs anpassen.

    Hät ja aber sein können, das es möglich ist. Habe wohl die add_function und remove_functions missinterpretiert.

  • Zitat von Arno Simon

    Welche vorhandene Möglichkeit!? WP bietet von Haus aus keine Möglichkeit Pages Kategorien zuzuordnen die von WP in der Standardausprägung genutzt würde!


    Naja wie gesagt, WP bietet zwar die Möglichkeit aber nur halb. Denn es speichert die Pages, wie du sagtest, wie Posts ab. Also mit einer Zuordnung zu einer Kategorie. Nur mit dem gravierenden Unterschied, das man bei Pages die Kategorie nich frei wählen und individuell verwenden kann.

    Zitat von Arno Simon


    Alles weitere sind Hacks und/oder Plugins, wobei ich von Hacks nicht allzuviel halte....


    Dem pflichte ich bei, daher soll es auch ohne Hack der WP-Files gehen und nur als echten PlugIn realisiert werden.

    Es wundert mich auch etwas, das es bisher kein anständiges Multilanguage-PlugIn gibt (jedenfalls keins gefunden).
    Zumal der Bedarf eindeutig vorhanden ist und nach aktuellem Stand nicht wirklich kompliziert zu realisieren ist.

    Ein XINHA4WP PlugIn zu coden ist da wohl ein paar Dimensionen drüber... ;)

Jetzt mitmachen!

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