Ändern der RSS-Feed-URL-Struktur

Ich bin dabei, eine WordPress-Website zu erstellen, und ich habe nur noch ein Problem – RSSFeeds.

Zurzeit hat die Website eine .htaccess Datei, die den Zugriff auf /category/* -Seiten blockiert. Es war Teil einer Anforderung, dass die Website nicht offensichtlich WordPress ist, und /category ist ein anständiger Indikator dafür.

Zu jeder Kategorie gehört eine Seite, die den Inhalt der Kategorie anzeigt – also wird /category/news /news .

RSS-Feeds scheinen jedoch immer auf /category/xxx/feed – gibt es eine Möglichkeit, diese /category/ Teil zu entfernen? So könnten Leute den RSS-Feed unter http://example.com/news/feed ?

Ich habe versucht, mit der .htaccess Datei .htaccess , aber es ist der einzige Bereich, in dem ich eine Web-Anwendung erstelle, auf die ich mich nicht hundertprozentig sicher bin. Jede Suche hat Ergebnisse geliefert, die zeigen, wie Feeds auf Feedburner gesetzt werden, was ich überhaupt nicht tun möchte.

Solutions Collecting From Web of "Ändern der RSS-Feed-URL-Struktur"

Nach einigem Nachdenken – dies kann mit etwas kreativem Missbrauch bestehender Feeds erreicht werden:

  • einfacher Teil – Umleitung von Kategorien-Feeds auf Seitenkommentar-Feeds
  • Schwieriger Teil – Machen Sie Seitenkommentare, die denken, dass es sich um Kategoriefeeds handelt

Etwas wie das:

 Category_Feed_At_Page::on_load(); /** * Repurpose page feeds for category of same name feeds. */ class Category_Feed_At_Page { static function on_load() { add_action( 'pre_get_posts', array( __CLASS__, 'pre_get_posts' ) ); add_action( 'do_feed_rdf', array( __CLASS__, 'do_feed' ), 9 ); add_action( 'do_feed_rss', array( __CLASS__, 'do_feed' ), 9 ); add_action( 'do_feed_rss2', array( __CLASS__, 'do_feed' ), 9 ); add_action( 'do_feed_atom', array( __CLASS__, 'do_feed' ), 9 ); } /** * Change page's comment feed into category feed. * * @param WP_Query $query */ static function pre_get_posts( $query ) { if ( $query->is_main_query() && $query->is_page() && $query->is_feed() ) { $name = $query->get( 'pagename' ); require_once( ABSPATH . 'wp-admin/includes/taxonomy.php' ); if ( category_exists( $name ) ) { $category = get_category_by_slug( $name ); $query->set( 'category_name', $name ); $query->set( 'cat', $category->term_id ); $query->set( 'pagename', '' ); $query->is_page = false; $query->is_comment_feed = false; $query->is_category = true; $query->is_singular = false; remove_action( 'do_feed_rdf', array( __CLASS__, 'do_feed' ), 9 ); remove_action( 'do_feed_rss', array( __CLASS__, 'do_feed' ), 9 ); remove_action( 'do_feed_rss2', array( __CLASS__, 'do_feed' ), 9 ); remove_action( 'do_feed_atom', array( __CLASS__, 'do_feed' ), 9 ); remove_action( 'template_redirect', 'redirect_canonical' ); } } } /** * Redirect real category feed to page feed. */ static function do_feed() { if ( ! is_category() ) return; $name = get_query_var( 'category_name' ); $page = get_page_by_path( $name ); if ( ! empty( $page ) ) { wp_safe_redirect( get_post_comments_feed_link( $page->ID ) ); die; } } } 

Ich fand (meiner Meinung nach) den besten und einfachsten Weg, dies zu tun, und dachte, ich sollte es als Antwort lassen, falls jemand auf diesen Thread stolpert.

Ich habe das WP No Category Base- Plugin heruntergeladen und installiert und das hat genau das getan, was ich brauchte.

Leider bin ich nie dazu gekommen, die anderen Antworten auszuprobieren (musste zu einem dringlicheren Projekt übergehen), also kann ich nicht klären, ob einige von ihnen funktionieren.


Aktualisierter Link : Keine Kategoriebasis (WPML)

Du weißt, dass du die Slug-Präfixe für Tags und Kategorien auf der Permalinks-Einstellungsseite ändern kannst, richtig?

Also, wenn es Sie stört, die “Kategorie” in “/ category / news” zu haben, aber “/ cat / news” akzeptiert, können Sie das dort ändern.