2012-09-20 10 views
5

Özel bir WordPress teması içinde bir RSS2 beslemesine CORS (http://enable-cors.org/) desteği eklemeye çalışıyorum. Tüm boşuna aşağıdakileri denedim:WordPress RSS2 feed'e CORS desteği nasıl eklenir?

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

: http://bowdenweb.com/wp/2011/05/how-to-enable-cors-in-wordpress.html ilgili talimatlar sonrasında

  1. , ben temanın header.php dosyasını değiştirmek ve buna aşağıdaki kodu ekleme girişiminde

    Bu, CORS başlığının Wordpress gönderilerine eklenmesiyle başarılı oldu, ancak RSS2 beslemesine değil. Daha sonra "Plugin API/Action Reference", yani add_action işlevini (http://codex.wordpress.org/Plugin_API/Action_Reference) kullanmaya çalıştım.

    Ben header.php için aşağıdaki kodu eklendi:

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

Yine, hiçbir başarı. Şimdi ben çıkmaz sokaktayım. Herhangi bir fikir?

+0

2'de bahsettiğiniz kodunuzu 'functions.php' dosyanıza eklemeyi denediniz mi? Wordpress dokümantasyonunun 'functions.php' içinde olması gerektiğini belirtirken 'header.php' dosyasına eklediniz. – Axel

cevap

0

Git wp-içerir etmek/besleme-rss2.php ve

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

altında orijinal rss-şablon için "/ besleme-rss2.php wp-includes"

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

Bu çözüm, Wordpress yükseltildiğinde (sık sık gerçekleşen) üzerine yazılacak olan temel WordPress dosyalarının değiştirilmesini gerektirir. Ek üstbilgiyi dahil etmek için theme'nin function.php dosyasında bir eylem kancası kullanan bir çözüm öneririm. – Axel

+0

Ayrıca ob_start(); sayfanın en üstünde. Sunucunun istemciye veri göndermeye başlamış olabileceği ihtimali var. – kiranvj

1

Kopyala eklemek

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 
} 

Sonra rss-şablonunu değiştirmek ve ekleyebilirsiniz: Temanızın dizin ve functions.php için bu kodu ekleyerek aktif hale jefffederman tarafından belirtildiği gibi başlık.

3

Bunu bir eklenti veya işlevler ekleyerek yapabilirsiniz. Sanırım bu daha temiz olmaktan çıkıyor.

add_action('pre_get_posts', 'add_header_origin'); 

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