Wie füge ich CORS-Unterstützung zum RSS2-Feed von WordPress hinzu?

Lesezeit: 2 Minuten

Benutzeravatar von user1686582
Benutzer1686582

Ich versuche, CORS hinzuzufügen (http://enable-cors.org/) Unterstützung für einen RSS2-Feed innerhalb eines benutzerdefinierten WordPress-Designs. Ich habe folgendes versucht, alles ohne Erfolg:

  1. Befolgen Sie die Anweisungen auf https://web.archive.org/web/20140314152828/http://bowdenweb.com:80/wp/2011/05/how-to-enable-cors-in-wordpress.htmlhabe ich versucht, die header.php-Datei des Themes zu ändern und den folgenden Code hinzuzufügen:

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

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

  2. Dann habe ich versucht, die “Plugin API / Action Reference” zu verwenden, dh die add_action Funktion (http://codex.wordpress.org/Plugin_API/Action_Reference).

    Ich habe der header.php folgenden Code hinzugefügt:

    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?

  • Haben Sie versucht, Ihren in 2. erwähnten Code zu Ihrer hinzuzufügen functions.php Datei? Sie haben erwähnt, dass Sie es hinzugefügt haben header.php Datei, wenn die WordPress-Dokumentation besagt, dass sie darin enthalten sein sollte functions.php.

    – Axel

    25. Januar 2013 um 17:21 Uhr

  • Ich habe ein Ticket in WP erstellt, in dem ich aufgefordert wurde, diese Funktionalität hinzuzufügen core.trac.wordpress.org/ticket/50441#ticket Auch in Details des Tickets können Sie Sicherheitsbedenken finden.

    – Sergej Ponomarew

    20. Juni 2020 um 18:24 Uhr

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

add_action( 'pre_get_posts', 'add_header_origin' );

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

Kopiere das ursprüngliche RSS-Template „wp-includes/feed-rss2.php“ in dein Theme-Verzeichnis und aktiviere es, indem du diesen Code zu deiner functions.php hinzufügst:

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 den Header hinzufügen, wie von jefffederman erwähnt.

Gehe zu wp-includes/feed-rss2.php und darunter

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

hinzufügen

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

  • Diese Lösung erfordert die Änderung von Kern-Wordpress-Dateien, die überschrieben würden, wenn WordPress aktualisiert wird (was häufig vorkommt). Ich würde eine Lösung vorschlagen, die einen Action-Hook in der function.php-Datei des Themes verwendet, um den zusätzlichen Header einzufügen.

    – Axel

    25. Januar 2013 um 17:19 Uhr

  • Fügen Sie auch ob_start(); oben auf der Seite. Es besteht die Möglichkeit, dass der Server bereits mit dem Senden von Daten an den Client begonnen hat, danach können keine Header gesetzt werden.

    – kiranvj

    26. Januar 2013 um 6:26 Uhr


  • Ändere niemals Kerndateien von WordPress. @Axel erklärt sehr gut, warum und was zu tun ist, um die Bearbeitung zu vermeiden.

    – Ale

    29. Oktober 2018 um 9:35 Uhr

1386970cookie-checkWie füge ich CORS-Unterstützung zum RSS2-Feed von WordPress hinzu?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy