2012-09-20 20 views
5

Ich versuche CORS (http://enable-cors.org/) Unterstützung zu einem RSS2-Feed innerhalb eines benutzerdefinierten Wordpress-Theme hinzuzufügen. Ich habe folgendes versucht, alles ohne Erfolg:Wie fügt man dem Wordpress RSS2-Feed die CORS-Unterstützung hinzu?

  1. Im Anschluss an die Anweisungen auf http://bowdenweb.com/wp/2011/05/how-to-enable-cors-in-wordpress.html habe ich versucht, das Thema der header.php Datei zu ändern und fügen Sie den folgenden Code hinzu:

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

    Dies war erfolgreich beim Hinzufügen des CORS-Headers zu den Wordpress-Posts, aber nicht zum RSS2-Feed.

  2. Dann habe ich versucht, das "Plugin API/Aktion Reference" zu verwenden, das heißt die Funktion add_action (http://codex.wordpress.org/Plugin_API/Action_Reference).

    Ich habe den folgenden Code Header.php:

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

Wieder kein Erfolg. Jetzt bin ich in einer Sackgasse. Irgendwelche Ideen?

+0

Haben Sie versucht, Ihren in 2. erwähnten Code in Ihre Datei 'functions.php' einzufügen? Sie haben erwähnt, dass Sie es in die Datei 'header.php' hinzugefügt haben, wenn die Wordpress-Dokumentation angibt, dass es in' functions.php' enthalten sein sollte. – Axel

Antwort

0

Zum wp-includes/feed-rss2.php und unter

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

hinzufügen

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

Diese Lösung erfordert die Änderung von Kern-Wordpress-Dateien, die überschrieben werden würden, wenn Wordpress aktualisiert wird (was häufig vorkommt). Ich würde eine Lösung vorschlagen, die einen Aktions-Hook innerhalb der function.php-Datei des Themas verwendet, um den zusätzlichen Header einzuschließen. – Axel

+0

Fügen Sie auch ob_start(); oben auf der Seite. Es besteht die Möglichkeit, dass der Server bereits Daten an den Client gesendet hat, nachdem die Header nicht gesetzt werden können. – kiranvj

1

Kopieren Sie die Original-rss-Vorlage "wp-includes/feed-rss2.php" zu Ihr Themenverzeichnis und aktivieren Sie es, indem Sie diesen Code in Ihre functions.php hinzu:

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 
} 

Dann können Sie Ihre RSS-Vorlage ändern, und fügen Sie die Header wie von Jefffederman erwähnt.

3

Sie könnten es so mit einem Plugin oder durch Hinzufügen von Funktionen tun. Ich denke, das endet sauberer.

add_action('pre_get_posts', 'add_header_origin'); 

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