WordPress標準のショートコード、例えば [gallery] などでも消えてしまいますか?もしそうなら、ためしにプラグインをすべて停止してみるとどうでしょう。それでも変わりなければ、テーマを例えばTwentv Sixteenに変えて自作ショートコードだけをfunctions.phpへ加えて、違いをみては?
追記:もし「カテゴリーが何もついていない投稿や固定ページ」なら、消えますね。
gblsm様
回答ありがとうございます。
回答の通り試してみました。
1、[gallery]で記事に画像を表示し、RSSで
確認しましたが、画像が消えていました。
2、プラグインをすべて停止してみましたが
RSSでは文字が表示されませんでした。
3、テーマの件ですが元々Twentv Sixteenを
使用しています。
追記の件、記事には必ずカテゴリーを設定しています。
「この記事は[ca]についての記事です」は
ページ上では「この記事はサプリメントについての記事です」となり
RSSでは「この記事はについての記事です」となります。
検証ありがとうございました。
WordPress の内部処理を確かめたところ、フィードの抜粋部分(投稿本文を抜粋したもの)では必ずショートコードを削除する仕様になっていました。これは WordPress コアがフィードの抜粋を取得する関数 the_excerpt_rss() → get_the_excerpt() の中で、フィルター ‘get_the_excerpt’ を通して呼び出される関数 wp_trim_excerpt() によって行われています。この wp_trim_excerpt() を改造すればショートコードを展開してフィードへ出すことができると思いますが、私には難しいです。
別案として、設定 > 表示設定 > RSS/Atom フィードでの各投稿の表示 で「全文を表示」を選択すると、抜粋はショートコードが消されますが、フィードに出力される全文の方はショートコードが展開されます。
gblsm様
回答ありがとうございます。
RSS/Atom フィードの抜粋がショートコードを削除する仕様だったとは
考えもしませんでした。大変勉強になりました。
wp_trim_excerpt() にdo_shortcodeが使えないか調べてみます。
別案の件ですが、過去にRSSを全文表示にしていたら記事を盗まれていた
経験があるので躊躇しています。
もし、どうしようもない時はRSSを全文表示にしたいと思います。
ありがとうございました。
抜粋がショートコードを削除するのは、フィードだけではなく画面表示のテンプレートでもふつうは同様です。テーマに含まれる、日付やカテゴリーのアーカイブ、検索結果一覧などのテンプレートで関数 the_excerpt() を使っているものは、同じように抜粋からショートコードが削除されます。
gblsm様
回答ありがとうございます。
試しにテーマを変更してみたら、各アーカイブの抜粋でも
ショートコードが表示されないことがわかりました。
今まで普通だと思っていましたがTwentv Sixteenは
何か特別な処理を行っているのかもしれません。
Twentv Sixteenのfunctions.phpを調べてみます。
ありがとうございました。
gblsm様に頂いたヒントを元に、調べたところ
下記PHPをfunctionsに追加する事で解決しました。
add_filter( 'the_excerpt_rss', 'shortcode_unautop');
add_filter( 'the_excerpt_rss', 'do_shortcode');
gblsm様、ありがとうございました。