2012-09-20 47 views
5

我正在嘗試將CORS(http://enable-cors.org/)支持添加到自定義Wordpress主題中的RSS2提要。我曾嘗試以下,都無濟於事:如何將CORS支持添加到Wordpress RSS2提要?

  1. http://bowdenweb.com/wp/2011/05/how-to-enable-cors-in-wordpress.html的指示,我試圖修改主題的header.php文件和下面的代碼添加到它:

    header("Access-Control-Allow-Origin: *");

    這是成功地將CORS頭添加到Wordpress帖子,但不是到RSS2訂閱源。

  2. 然後,我試圖使用「插件API /操作參考」,即add_action函數(http://codex.wordpress.org/Plugin_API/Action_Reference)。

    我下面的代碼添加到header.php中:

    function add_cors_headers() 
    { 
        header("Access-Control-Allow-Origin: *"); 
    } 
    
    add_action('rss2_head','add_cors_headers'); 
    

同樣,沒有成功。現在我處於死衚衕。有任何想法嗎?

+0

您是否嘗試將您在2.中提到的代碼添加到您的'functions.php'文件中?當Wordpress文檔聲明它應該包含在'functions.php'中時,你提到你將它添加到'header.php'文件中。 – Axel

回答

0

轉到WP-包括/飼料rss2.php及以下

header('Content-Type: ' . feed_content_type('rss-http') . '; charset=' . get_option('blog_charset'), true); 

添加

header("Access-Control-Allow-Origin: *"); 
+2

該解決方案需要修改核心Wordpress文件,這些文件在升級Wordpress時會被覆蓋(頻繁發生)。我會建議一個解決方案,在主題的function.php文件中使用一個動作鉤子來包含額外的頭部。 – Axel

+0

另外添加ob_start();在頁面頂部。服務器有可能已經開始向客戶端發送數據,之後無法設置標頭。 – kiranvj

1

複製原來的RSS模板 「WP-包括/飼料rss2.php」 到

remove_all_actions('do_feed_rss2'); 
add_action('do_feed_rss2', 'my_feed_rss2', 10, 1); 

function my_feed_rss2($for_comments) { 
    $rss_template = get_stylesheet_directory() . '/feed-rss2.php'; 

    if(file_exists($rss_template)) 
     load_template($rss_template); 
    else 
     do_feed_rss2($for_comments); // Call default function 
} 

然後你可以修改你的RSS模板,並添加了:你的主題目錄,並通過將此代碼添加到您的functions.php激活頭像jefffederman提到的。

3

你可以用插件或添加函數來做到這一點。我認爲這最終變得更清潔。

add_action('pre_get_posts', 'add_header_origin'); 

function add_header_origin() { 
    if (is_feed()){ 
     header('Access-Control-Allow-Origin: *'); 
    } 
}