Zusätzlichen WordPress-Feed anhand benutzerdefinierter Felder erstellen
Obwohl WordPress vielfältige Möglichkeiten bietet, mittels RSS-Feeds auf die Inhalte eines Blogs zuzugreifen, ist in der Grundinstallation keine Möglichkeit vorgesehen, einen individuellen Feed anhand eines (oder mehrerer) benuzerdefinierter Felder zu erstellen.
Ein solcher Feed kann allerdings mit nur wenigen Zeilen Programmcode in der Datei “functions.php” des aktuell gewählten Themes ergänzt werden. Die Zeile
add_action('init', 'mycustomfeed_add_feed');
fügt der WordPress-Initialisierung die eigene Funktion “mycustomfeed_add_feed” hinzu, welche die Einrichtung der benötigten Funktionalität übernimmt.
function mycustomfeed_add_feed() {
global $wp_rewrite;
add_feed('mycustomfeed','mycustomfeed_feed');
add_action('generate_rewrite_rules', 'mycustomfeed_rewrite_rules');
$wp_rewrite->flush_rules();
}
Die Funktion besteht aus dem Hinzufügen des eigenen Feeds mittels der Funktion add_feed, sowie dem Hinzufügen einer Rewrite-Regel mit Hilfe der Funktion add_action, bevor durch den Aufruf von flush_rules die soeben geänderten Regeln neu eingelesen werden.
function mycustomfeed_rewrite_rules($wp_rewrite) {
$my_rules = array(
'feed/(.+)' => 'index.php?feed=' . $wp_rewrite->preg_index(1)
);
$wp_rewrite->rules = $my_rules + $wp_rewrite->rules;
}
Die hinzugefügte Regel bewirkt das Umschreiben aller aufgerufenen URLs nach dem Schema “/feed/irgendwas” in die Form “?feed=irgendwas”, so daß zum Zugriff auf den neuen Feed auch die erste Schreibweise verwendet werden kann, ohne daß Änderungen an der “.htaccess” vorgenommen werden müssen.
function mycustomfeed_feed() {
query_posts('meta_key=mycustomfeed&meta_value=1');
include('wp-includes/feed-rss2.php');
}
Als letztes ändert die eigene Feed-Funktion die Auswahl der auszuliefernden Daten mit Hilfe der Funktion query_posts, bevor durch Aufruf des originalen WordPress-Feedmechanismus die Ausgabe generiert wird.
Im obigen Beispiel werden nur die Beiträge ausgeliefert, die ein benutzerdefiniertes Feld mit Namen “mycustomfeed” und dem Wert “1” enthalten.
ich hab zu wp_rewrite mal eine Frage, und zwar möchte ich gerne spezielle Unterordner auf eine Subdomain umschreiben.
Beispiel:
domain.de/wp-content/uplaods/ => sub.domain.de/
Geht das damit auch? Ich hab von PHP nicht besonders viel Ahnung und dachte ich frage einfach mal nach. Wenn das gehen sollte, hast Du vielleicht einen Tipp, wie ich das umsetzten kann?
Gruß Chris
die Funktion würde ich ausschließlich über die “.htaccess” realisieren, dazu ist kein PHP notwendig und der Webserver macht das fast von alleine. Eine Suche nach “.htaccess mod_rewrite unterordner subdomain” sollte in die richtige Richtung zeigen.