更改RSS提要URL结构

时间:2013-06-25 作者:jrdn

我正在创建wordpress网站,我只剩下一个问题——RSS提要。

目前,该网站有.htaccess 阻止访问的文件/category/* 第页。这是一个要求的一部分,该网站显然不是Wordpress,并且/category 这是一个不错的指标。

每个类别前面都有一个页面,该页面显示类别内容-so/category/news 成为/news.

然而,RSS提要似乎总是指向/category/xxx/feed - 有没有办法去掉这个/category/ 部分这样人们就可以在http://example.com/news/feed ?

我试过摆弄.htaccess 文件,但这是构建web应用程序的一个方面,我不是百分之百确定。每次搜索都返回了如何将feed指向Feedburner的结果,这根本不是我想要做的。

3 个回复
最合适的回答,由SO网友:jrdn 整理而成

我发现(在我看来)这是最好、最简单的方法,我想我应该把它作为一个答案,以防有人偶然发现这条线索。

我下载并安装了WP No Category Base 插件,这正是我所需要的。

不幸的是,我从来没有试过其他答案(不得不转向一个更紧急的项目),所以我无法澄清其中任何一个是否有效。

<小时>Updated Link: No Category Base (WPML)

SO网友:Rarst

经过深思熟虑,这可以通过创造性地滥用现有提要来实现:

简单部分-将类别提要重定向到页面评论提要,困难部分-使页面评论提要认为它们是类别提要,如下所示:

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

SO网友:Bjørn Johansen

您知道可以在permalinks设置页面上更改标记和类别slug前缀,对吗?

因此,如果在“/category/news”中设置“category”让您感到不安,但接受了“/cat/news”,您可以在那里更改它。

结束

相关推荐

可以创建一个包含所有博客条目的RSS提要吗?

更具体地说,我在riduidel有一个博客。wordpress。com,我想为其创建该提要,以便稍后在名为autoblog的站点备份解决方案中使用它,该解决方案可以通过简单地读取RSS提要来创建站点副本。那么wordpress是否有这样一个可用的工具呢。com站点(直接或不直接),或者我应该备份我的博客数据库,然后编写一个脚本来生成该流?