Müssen Permalinks immer auf einzelne Post-Seiten verweisen?

Angenommen, ich habe einen Blog mit wenigen Posts pro Monat und keine Kommentare, und ich möchte keine Posts in einzelnen Post – Seiten anzeigen, sondern immer “im Kontext” (sagen wir zusammen mit den Posts in seinem Monat – oder vielleicht ein Woche?). Um dies zu erreichen, müsste ich unter anderem Permalinks mit Fragment-IDs (#) verwenden. Ich frage mich, ob dies unterstützt wird oder ob mich jemand auf eine Ressource oder Diskussion hinweisen kann.

Bearbeitet : Ich habe in meiner eigenen Antwort die Details meiner Implementierung gepostet.

Solutions Collecting From Web of "Müssen Permalinks immer auf einzelne Post-Seiten verweisen?"

Es gibt zwei Hooks namens 'pre_post_link' und 'post_link' . Ihr erstes Argument – das Sie ändern können – ist der Permalink. Damit …

 add_filter( 'pre_post_link', 'wpse_42406_change_permalink', 10, 2 ); function wpse_42406_change_permalink( $permalink, $post ) { // change the permalink, let it point to an archive etc. return $permalink; } 

… wird die Ausgabe ändern.

In deiner Schleife verwendest du wahrscheinlich etwas wie …

 
  • Ihr Permalink könnte dann auf die Archivseite Ihrer Wahl und auf #post-$post->ID . Beispielsweise:

     http://example.com/2012/04/#post-42 

    Öffnen Sie einfach Ihre Motivdateien und entfernen Sie die a-Tags aus dem Titel.

    Beispiel: In Ihrer index.php Datei, wenn Sie:

     

    < ?php the_title(); ?>

    es würde werden:

     

    < ?php the_title(); ?>

    Für den Fall, dass ein Besucher diese Informationen nützlich findet, poste ich meine Arbeitsimplementierung. Es erfordert ein kleines Plugin.

    In dieser Implementierung werden die Permalinks das monatliche Archiv anzeigen – aber die URL wird immer noch “vollständig” sein, dh den Posttitel enthalten – Auf diese Weise 1) habe ich mehr Freiheit, wenn ich dieses Schema später ändern möchte, ohne zu brechen die Permalinks, und 2) Ich habe aussagekräftige Statistiken für meine Besuche (ich kann wissen, welche einzelnen Beiträge aus meinen Logs besucht wurden).

    In der Admin-Seite gebe ich diese Permalinks-Struktur an:

     /%year%/%monthnum%/%postname% eg: http://example.com/myblog/2012/01/sample_post 

    Aber der endgültige Permalink wird die Form haben:

     http://example.com/myblog/2012/01/sample_post#post-234 

    Die Fragment-ID wird vom folgenden Hook im Plugin hinzugefügt:

     /* adds hash */ function hjg_change_permalink( $permalink, $post ) { //if(strpos($permalink,'#')) return $permalink; return $permalink . "#post-" . $post->ID; } add_filter( 'post_link', 'hjg_change_permalink', 100, 2 ); 

    Ich habe auch folgendes im Plugin gehooked, so dass die Permalinks, obwohl sie als einzelne Posts URLs betrachtet werden, als Archive interpretiert werden:

     function hjg_parse_request( $wp ) { if(! isset($wp->query_vars)) return; if(! isset($wp->query_vars['year'])) return; $wp->query_vars['name']=''; // remove post name } add_action( 'parse_request', 'hjg_parse_request'); 

    Mein Theme wird von dem Standard twenty-eleven geerbt, der bereits eine “post-NNN” ID für jeden Post in content.php :

      
    >

    Wenn Sie ein anderes Thema verwenden, müssen Sie dieses hinzufügen oder anpassen.

    Denken Sie daran, dass Ihre monatlichen Archive nicht paginiert werden sollten, damit dies funktioniert: Sie müssen eine maximale Anzahl von Posts pro Monat haben und diesen Wert in den “Posts-per-page” auf der Admin-Seite einstellen. (Ich habe auch die index.php Datei in meinem Theme so optimiert, dass die Titelseite eine kleinere Anzahl von Posts anzeigt).