wordpressの記事情報の一部をxmlで出力して、wordpressの管理外のサイトにてxmlを読み込んで表示させる仕組みを構築したときの備忘録。
wordpressでxmlを生成する方法は「記事情報をXMLで出力してWordPressの入ってないサイトに表示する方法」を参考にさせていただきました。で、wordpressでxmlを生成したページをsimpleXNLで読み込ませて表示ようとしたのですが何も表示されません。真っ白いままでエラーが表示されるわけでもないので、とりあえずphpファイルに直接エラーを表示されるコードを書いて原因を探ることにしました。
<?php
ini_set( 'display_errors', 1 );
?>
そうすると下記のようなエラーが表示されました。どうやら先頭におかしな文字があると怒られているらしいです...。
XML declaration allowed only at the start of the document in
wordpressから生成されたxmlを確認してみると確かに1行目が空白になっていました。そんな時は「ob_end_clean」関数を使うことで対応できるようです。
出力用バッファの内容を消去し、出力のバッファリングをオフにします。
ob_end_clean
修正前
<?php /* Template Name: XML */ ?>
<?php echo "<?xml version='1.0' encoding='UTF-8' ?>"; ?>
修正後
<?php /* Template Name: XML */ ?>
<?php ob_end_clean(); ?>
<?php echo "<?xml version='1.0' encoding='UTF-8' ?>"; ?>
これでxmlファイルを読み込むことができるようになりましたとさ・‥。