Nextpage-Automatisierung

  • Hey,

    ich arbeite gerade an einer neuen Design-Idee: Mein Blog soll ein Block werden. :-)
    Da ich persönlich immer sehr lange Absätze und somit auch Beiträge schreibe, wollte ich nun nach jedem Absatz ein <!--nextpage--> einfügen.

    Ich habe dazu auch schon Quellcode vorbereitet, der mit dies bewerkstelligt:

    Das <hr /> ist nur zur Veranschaulichung eingefügt.

    Bisher hänge ich die Funktion in the_content ein:

    PHP
    add_filter('the_content','nextpageHaenger');

    Das läuft auch soweit, nur fügt er das <!--nextpage--> als einfachen HTML-Kommentar ein, wandelt es aber nicht in die Umbrechung für eine neue Seite um. Ich habe also immer noch nur eine Seite.

    Welchen Hook muss ich wirklich nutzen bzw. welche Methode ist auf den neu generierten Content anwenden muss, damit er es vernünftig umwandelt?

    Ich hoffe, ich habe mein Problem einigermaßen treffend beschrieben. Ansonsten einfach fragen. ;-)

    Liebe Grüße, HCl

    • 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

  • Wenn ich das allerdings mache, dann gibt er mir einen PHP-Fehler aus, dass mein Array $arr leer ist. Das kann allerdings nur daraus resultieren, dass er keine Absätze ( <p>(.*)</p> ) findet.

    Wenn ich daher am Anfang meiner Funktion ein wpautop($content) einfüge, fügt er die Absaätze und <hr /> ein, wandelt aber mein <!--nextpage--> nicht um. Selbst bei der Priorität 0.

  • Musst mal ein wenig rumspielen, vielleicht den Standardfilter für wpautop entfernen, und mit anderer Priorität wieder einfügen, und nextpage-Filter für die nächstniedrigere Priorität. Irgendwie so sollte es funktionieren.

  • Eine Frage: Warum reicht das Einfügen von <!--nextpage--> per TinyMCE Editor nicht aus ?
    Man kann sich doch nicht nur den <!--more--> so setzen sondern ein Button für next page gibt es auch.
    Damit wird kein Plugin benötigt und du entscheidest aktiv beim Schreiben über die Stelle der nächsten Seite.

  • Eine Frage: Warum reicht das Einfügen von <!--nextpage--> per TinyMCE Editor nicht aus ?
    Man kann sich doch nicht nur den <!--more--> so setzen sondern ein Button für next page gibt es auch.
    Damit wird kein Plugin benötigt und du entscheidest aktiv beim Schreiben über die Stelle der nächsten Seite.

    Natürlich wäre das ein Weg. Einer, den ich nur zu gern gehen würde, aber ich habe da einen großen Punkt der dagegen spricht:
    Ich habe schon etwa 200 Einträge, die teilweise nicht einmal sehr kurz sind, sieben oder meist mehr als zehn Seiten in Word. Schriftgröße 10. Und diese Beiträge möchte ich übernehmen.

    Es würde einfach viel zu lange dauern, alle Beiträge manuell zu bearbeiten. Dann gehe ich lieber den Weg eines Plugins bzw. einer Funktion in der functions.php meines Themes.

    Musst mal ein wenig rumspielen, vielleicht den Standardfilter für wpautop entfernen, und mit anderer Priorität wieder einfügen, und nextpage-Filter für die nächstniedrigere Priorität. Irgendwie so sollte es funktionieren.


    Das würde ich gern ausprobieren, aber so weit reicht meine WP-Kenntnis nun doch nicht.
    remove_filter() habe ich schon gefunden, aber wie kriege ich das wpautop raus? Einhängen ist dann ja entsprechend.

    Einmal editiert, zuletzt von HCl (2. Dezember 2008 um 17:23)

  • NIch habe schon etwa 200 Einträge, die teilweise nicht einmal sehr kurz sind. Es würde einfach viel zu lange dauern, alle Beiträge manuell zu bearbeiten.


    Wie wäres mit Suchen und Ersetzen in der Datenbank? Alle doppelten Zeilenumbrüche mit <!--nextpage--> ersetzen.
    WP - Suchen und Ersetzen (de) (Plugin) - bueltge.de [by:ltge.de]
    (nur als weitere Alternative ;-))

    Zitat

    remove_filter() habe ich schon gefunden, aber wie kriege ich das wpautop raus? Einhängen ist dann ja entsprechend.

    PHP
    remove_filter('the_content', 'wpautop')
    add_filter('the_content', 'wpautop', $prio)
  • Ich würde nur im äußersten Notfall Änderungen an der Datenbank oder den Beiträgen selbst vornehmen wollen. Diese Möglichkeit habe ich aber im Auge.

    So wie Du, marX, es mit dem wpautop vorgeschlagen hast, funktioniert es leider nicht.
    Ich habe allerdings herausgefunden bzw. meine herausgefunden zu haben, dass die einzelnen Seiten eines Beitrags in der Methode setup_postdata() (wp-includes/query.php at line 2652ff. @ WP 2.7-RC1) generiert werden. (Ich habe einfach mal dateiübergreifend nach nextpage gesucht.) Der Hook the_content ist allerdings sehr viel später. (Ich hoffe, ich liege da nicht allzu falsch.)
    Gibt es eine Möglichkeit, darein zu kommen?

    Einmal editiert, zuletzt von HCl (3. Dezember 2008 um 09:18)

  • Kann ich dir aus dem Kopf nicht sagen, aber schau dich mal bei den Filterhooks um, ob da was apssenderes dabei ist.

    Ansonsten eben doch Datenbank. Backup machen, dann kann eigentlich nichts schief gehen. ;-)

  • Ich würde nur im äußersten Notfall Änderungen an der Datenbank oder den Beiträgen selbst vornehmen wollen. Diese Möglichkeit habe ich aber im Auge.

    So wie Du, marX, es mit dem wpautop vorgeschlagen hast, funktioniert es leider nicht.
    Ich habe allerdings herausgefunden bzw. meine herausgefunden zu haben, dass die einzelnen Seiten eines Beitrags in der Methode setup_postdata() (wp-includes/query.php at line 2652ff. @ WP 2.7-RC1) generiert werden. (Ich habe einfach mal dateiübergreifend nach nextpage gesucht.) Der Hook the_content ist allerdings sehr viel später. (Ich hoffe, ich liege da nicht allzu falsch.)
    Gibt es eine Möglichkeit, darein zu kommen?


    Nach meine Analyse muss das <!--nextpage--> in dem Text der Datenbank stehen, denn WP splittet den Text in einzelne Seiten auf innerhalb von setup_postdata() ohne das dort ein Hook greifen kann. Später ist das nur mit imensen Aufwand zu machen.
    Was mir vorschweben würde ist ein TinyMCE Plugin, das einen Button einfügt und den Text nach einladen in den Editor per Knopfdruck automatisch mit <!--nextpage--> anreichert und dann beim Speichern alles korrekt in die DB schreibt. Ein solches TinyMCE Plugin ist etwas schwieriger zu schreiben, hab aber so etwas schon gemacht. Es ist nur die WP Version wichtig, da der Editor je Version geringfügig anders ist.

  • Irgendwie ist mir das alles zu viel Aufwand.
    Ein TinyMCE-Plugin widerspricht ja eher meiner Idee der Automatisierung. Ich müsste wieder jeden Eintrag durchgehen.
    Das Ersetzen in der Datenbank mit "Search & Replace" ist ein wenig zu einfach. Ich habe mir überlegt, dass man vllt. doch die Größe der Absätze testen sollte (nicht jeder hält sich immer an seine persönlichen Eigenheiten.. ;) ) und dann gäbe mir das Plugin keine Möglichkeiten.

    Ich finde, dass Auto-Paginierung ein gutes Feature für Wordpress wäre. Weiß aber nicht, ob das ginge und sich durchsetzen ließe.
    Ich habe jedenfalls diese speziellen Design-Idee auf Eis gelegt, sie bleibt aber immer noch in meinem Vorratsschrank. Jetzt wird erstmal eine andere umgesetzt.

    Danke für eure Hilfe.

Jetzt mitmachen!

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