過去記事の修正→再掲なので現バージョンでは事情が違うかも。
タイトル部分にショートコードを使うと、ショートコードが丸見えになってしまうという問題がありました。
サイトに表示する分
テンプレートを編集
<?php echo do_shortcode(get_the_title()); ?>
RSSに流れる分
ショートコード処理をする
function.phpに以下の内容を追記。
function my_feeds($content) {
global $post;
$content = str_replace('"','"', $content);
$content = do_shortcode($content);
return $content;
}
add_filter('the_title_rss', 'my_feeds');
ポイントは、4行目。どうもRSSに流れる時にはダブルクォーテーションがエスケープされるので、半角スペースの所でショートコードの変数が終わりだと認識されてしまうみたいです。
エスケープ前の文字に戻してからショートコード処理をすればOKでした。
ショートコード部分を削除する
特殊な事例だと思いますが、私の場合サイトの多言語化を
[trans en="日本語以外の環境で表示する文字列"]日本語環境で表示する文字列[/trans]
というショートコードで実現していたため、上記の方法ではFeedburnerに転送する時点で強制的に英語翻訳されてしまっていました。
当時RSSは日本語で流したかったので、ショートコード部分を削除する事で対応。
function my_feeds($content) {
global $post;
$content = preg_replace('/ en=".*"/', '', $content);
$content = str_replace(array('[trans]','[/trans]'),'', $content);
return $content;
}
add_filter('the_title_rss', 'my_feeds');
英語(変数部分)も削除していますが、残しておきたい方は適宜修正してください。