2012-09-20 27 views
5

Estoy intentando agregar soporte CORS (http://enable-cors.org/) a un feed RSS2 dentro de un tema personalizado de Wordpress. He intentado lo siguiente, todo fue en vano:Cómo agregar soporte CORS a Wordpress RSS2 feed?

  1. Siguiendo las instrucciones de http://bowdenweb.com/wp/2011/05/how-to-enable-cors-in-wordpress.html, he tratado de modificar el archivo header.php del tema y añadir el siguiente código a la misma:

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

    Esto tuvo éxito al agregar el encabezado CORS a las publicaciones de Wordpress, pero no a en la fuente RSS2.

  2. Luego, intenté usar la "API de complemento/Referencia de acción", es decir, la función add_action (http://codex.wordpress.org/Plugin_API/Action_Reference).

    he añadido el código siguiente para header.php:

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

Una vez más, sin éxito. Ahora estoy en un callejón sin salida. ¿Algunas ideas?

+0

¿Ha intentado agregar el código que mencionó en 2. a su archivo 'functions.php'? Usted mencionó que lo agregó al archivo 'header.php' cuando la documentación de Wordpress indica que debe incluirse en' functions.php'. – Axel

Respuesta

0

Ir a wp-includes/feed-rss2.php y por debajo

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

añadir

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

Esta solución requiere la modificación de los archivos principales de Wordpress, que se sobrescribirán cuando se actualice Wordpress (lo que sucede con frecuencia). Sugeriría una solución que use un gancho de acción dentro del archivo function.php del tema para incluir el encabezado adicional. – Axel

+0

También agregue ob_start(); en la parte superior de la página. Existe la posibilidad de que el servidor ya haya comenzado a enviar datos al cliente, después de eso los encabezados no se pueden establecer. – kiranvj

1

Copiar el RSS-plantilla original "wp-includes/feed-rss2.php" a el directorio del tema y que se active mediante la adición de este código a su functions.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 
} 

continuación, puede modificar su feed-plantilla y añadir el encabezado como lo menciona jefffederman.

3

Puede hacerlo de esta manera con un complemento o agregando funciones. Creo que eso termina siendo más limpio.

add_action('pre_get_posts', 'add_header_origin'); 

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