it-swarm.com.de

Ändern der URL-Struktur des RSS-Feeds

Ich erstelle gerade eine WordPress-Website und habe nur noch ein Problem - RSS-Feeds.

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

Vor jeder Kategorie befindet sich eine Seite, auf der der Inhalt der Kategorie angezeigt wird. Aus /category/news wird /news.

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

Ich habe versucht, mit der .htaccess-Datei herumzuspielen, aber es ist der einzige Bereich, in dem eine Webanwendung erstellt wird, bei dem ich nicht 100% sicher bin. Bei jeder Suche wurde das Ergebnis angezeigt, wie ein Feed stattdessen an Feedburner weitergeleitet werden kann. Dies ist jedoch nicht das, was ich tun möchte.

1
jrdn

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

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

Leider bin ich nie dazu gekommen, die anderen Antworten auszuprobieren (musste zu einem dringenderen Projekt übergehen), daher kann ich nicht klären, ob eine von ihnen funktioniert.


Aktualisierter Link : Keine Kategoriebasis (WPML)

1
jrdn

Nach einigem Überlegen kann dies durch kreativen Missbrauch vorhandener Feeds erreicht werden:

  • easy part - Kategorie-Feeds an Seitenkommentar-Feeds weiterleiten
  • schwieriger Teil - machen Sie Seitenkommentar-Feeds zu Kategorie-Feeds

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;
        }
    }
}
1
Rarst

Sie wissen, dass Sie die Präfixe für Tags und Kategorie-Slugs auf der Einstellungsseite für Permalinks ändern können, oder?

Wenn es Sie stört, die "Kategorie" in "/ category/news" zu haben, aber "/ cat/news" akzeptiert, können Sie dies dort ändern.

0
Bjørn Johansen