2012-09-20 24 views
5

Tôi đang cố thêm hỗ trợ CORS (http://enable-cors.org/) vào nguồn cấp dữ liệu RSS2 trong một chủ đề Wordpress tùy chỉnh. Tôi đã thử những điều sau đây, tất cả không có kết quả:Cách thêm hỗ trợ CORS vào nguồn cấp dữ liệu Wordpress RSS2?

  1. Tiếp theo các hướng dẫn trên http://bowdenweb.com/wp/2011/05/how-to-enable-cors-in-wordpress.html, tôi đã cố gắng để thay đổi tập tin header.php của theme và thêm đoạn mã sau vào nó:

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

    Điều này đã thành công trong việc thêm tiêu đề CORS vào bài đăng Wordpress, nhưng không phải là đối với nguồn cấp dữ liệu RSS2.

  2. Sau đó, tôi đã cố gắng sử dụng "Plugin API/Tham chiếu hành động", tức là chức năng add_action (http://codex.wordpress.org/Plugin_API/Action_Reference).

    tôi đã thêm đoạn mã sau vào header.php:

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

Một lần nữa, không thành công. Bây giờ tôi đang ở một ngõ cụt. Bất kỳ ý tưởng?

+0

Bạn đã thử thêm mã bạn đã đề cập trong 2. vào tệp 'functions.php' chưa? Bạn đã đề cập bạn đã thêm nó vào tệp 'header.php' khi tài liệu Wordpress nói rằng nó nên được bao gồm trong' functions.php'. – Axel

Trả lời

0

Đến wp-includes/feed-rss2.php và dưới

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

thêm

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

Giải pháp này yêu cầu sửa đổi các tệp Wordpress lõi, sẽ được ghi đè khi Wordpress được nâng cấp (thường xuyên xảy ra). Tôi sẽ đề xuất một giải pháp sử dụng móc hành động trong tệp function.php của chủ đề để bao gồm tiêu đề bổ sung. – Axel

+0

Cũng thêm ob_start(); trên đầu của trang. Có khả năng máy chủ có thể đã bắt đầu gửi dữ liệu cho khách hàng, sau khi không thể đặt tiêu đề đó. – kiranvj

1

Sao chép bản gốc rss-mẫu "wp-includes/feed-rss2.php" để thư mục chủ đề của bạn và kích hoạt nó bằng cách thêm mã này vào functions.php của bạn:

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 
} 

Sau đó, bạn có thể sửa đổi mẫu rss của bạn và thêm tiêu đề như được đề cập bởi jefffederman.

3

Bạn có thể làm điều đó như thế này bằng plugin hoặc bằng cách thêm vào chức năng. Tôi nghĩ rằng kết thúc được sạch hơn.

add_action('pre_get_posts', 'add_header_origin'); 

function add_header_origin() { 
    if (is_feed()){ 
     header('Access-Control-Allow-Origin: *'); 
    } 
}    
Các vấn đề liên quan