Hilfe bei einem benutzerdefinierten Neuschreiben

Das Folgende ist ein Ausschnitt aus der single.php

Wenn ich also an die URL “? M = gallery” anschließe, wird “single.php” in eine Galerie umgewandelt, ansonsten wird der normale Inhalt angezeigt. Ich habe mich gefragt, wie ich das umschreiben könnte? M = gallery to just / gallery. Ich verwende /%category%/%postname%/ als benutzerdefinierte Permalink-Struktur. Ich möchte /%category%/%postname%/%m% wobei% m% $ _GET [‘m’] ist. Mein Htaccess hat folgendes:

  RewriteEngine On # BEGIN WordPress  RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L]  # END WordPress 

Jede Hilfe wird geschätzt. Vielen Dank.

Solutions Collecting From Web of "Hilfe bei einem benutzerdefinierten Neuschreiben"

Am besten verwenden Sie die WordPress Rewrite API. Kein .htaccess erforderlich.

Haken Sie zuerst in init und fügen Sie Ihren Permalinks einen Rewrite-Endpunkt hinzu. Dies sagt WordPress, dass einige Besuche /category/post-slug/gallery mit dem neuen Endpunkt Neuschreiben übereinstimmen. Es kümmert sich auch darum, die Abfragevariable für Sie hinzuzufügen, damit Sie das nicht tun müssen.

 < ?php add_action( 'init', 'wpse27638_add_rewrite' ); function wpse27638_add_rewrite() { add_rewrite_endpoint( 'gallery', EP_PERMALINK ); } 

Als nächstes müssen wir das Endpoint-System ein wenig hacken, weil es nicht automatisch funktioniert, wenn jemand some-permalink/some-endpoint : Ihre neue Abfragevariable ( gallery ) würde nur einen Wert enthalten, wenn jemand category/permalink/gallery/something . Nicht gut. Also haken wir uns in request . Wenn unsere neue gallery Abfragevariable gesetzt ist, werden wir es einfach so machen, dass der Wert immer auf "Wahr" gesetzt wird.

 < ?php add_filter( 'request', 'wpse27638_request' ); function wpse27638_request( $vars ) { if( isset( $vars['gallery'] ) ) $vars['gallery'] = true; return $vars; } 

Als nächstes müssen wir uns in the_content . Wenn unser neues Abfrage-Var gesetzt ist, geben wir anstelle des Inhalts einen Galerie-Shortcode zurück. Andernfalls geben wir nur den Inhalt zurück. Sie können Ihre if else statement aus der single.php und the_content .

 < ?php add_filter( 'the_content', 'wpse27638_content_filter' ); function wpse27638_content_filter( $content ) { if( ! is_singular() ) return $content; if( get_query_var( 'gallery' ) ) { return '[gallery link="file"]'; } else { return $content; } } 

Nur ein letzter Schliff auf unserem Plugin. Fügen Sie den neuen Endpunkt hinzu und leeren Sie die Rewrite-Regeln bei Aktivierung. Und spülen Sie die Umschreibregeln bei Deaktivierung erneut.

 < ?php register_activation_hook( __FILE__, 'wpse27638_activation' ); function wpse27638_activation() { wpse27638_add_rewrite(); flush_rewrite_rules(); } register_deactivation_hook( __FILE__, 'wpse27638_deactivation' ); function wpse27638_deactivation() { flush_rewrite_rules(); } 

Hier ist die einzige Sache als Plugin (bereit zu verwenden): https://gist.github.com/1191865