web-dev-qa-db-fra.com

Le flux RSS personnalisé force le téléchargement

J'essaie d'implémenter un flux RSS personnalisé qui est formaté pour le podcasting et extrait le fichier audio d'un champ personnalisé avancé. Fondamentalement, je travaille sur l'exemple fourni ici: https://css-tricks.com/roll-simple-wordpress-podcast-plugin/

Mon plugin ressemble à ceci:

// add a custom RSS feed
function podcast_rss(){
    add_feed('podcast', 'run_podcast_rss');
}
add_action('init', 'podcast_rss');

function run_podcast_rss(){
    require_once( dirname( __FILE__ ) . '/feed-template.php' );
}

Cela semble assez simple, mais lorsque je navigue dans mon navigateur vers la nouvelle URL de mon flux ( http://example.com/feed/podcast/ ), le navigateur essaie de télécharger un fichier. Dans Google Chrome, la console affiche

Resource interpreted as Document but transferred with MIME type application/octet-stream: "http://example.com/feed/podcast/".

Tandis que dans Firefox, quand il essaye de télécharger le fichier, il me dit que c'est un fichier DMS.

J'ai essayé de vider le cache, de rechercher des erreurs dans le code, de rechercher des paramètres impairs dans .htaccess, de définir des en-têtes; rien ne semble avoir d'effet. En fait, je peux commenter la ligne require_once et simplement essayer de faire écho au texte brut. Il oblige toujours un téléchargement. J'ai mis cela sur un serveur différent et il se comporte de la même manière.

J'ai l'impression que c'est quelque chose de simple mais je suis à court d'idées. De l'aide?

2
mrfolkblues

Vous devez définir explicitement le type de contenu, sinon WordPress utilise par défaut octet-stream pour les flux inconnus.

function run_podcast_rss(){
    header( 'Content-Type: application/rss+xml; charset=' . get_option( 'blog_charset' ), true );
    require_once( dirname( __FILE__ ) . '/feed-template.php' );
}
1
eteubert