LoginSignup
0
0

More than 5 years have passed since last update.

[WordPress]記事タイトルにショートコードを利用する場合の注意点

Posted at

過去記事の修正→再掲なので現バージョンでは事情が違うかも。

タイトル部分にショートコードを使うと、ショートコードが丸見えになってしまうという問題がありました。

サイトに表示する分

テンプレートを編集

<?php echo do_shortcode(get_the_title()); ?>

RSSに流れる分

ショートコード処理をする

function.phpに以下の内容を追記。

function my_feeds($content) {
    global $post;
    $content = str_replace('&quot;','"', $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=&quot;.*&quot;/', '', $content);
    $content = str_replace(array('[trans]','[/trans]'),'', $content);
    return $content;
}
add_filter('the_title_rss', 'my_feeds');

英語(変数部分)も削除していますが、残しておきたい方は適宜修正してください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0