WordPressのデフォルトテーマであるtwentyfifteenのフィードについて。descriptionに、勝手にタイトルが追加されていた。
ひょっとしたらtwentytwelve辺りから似たような現象がおきていたのかもしれない。
<span class=”screen-reader-text”>記事のタイトル</span>
のように。このscreen-reader-text クラスで指定されている個所は、通常はcssで隠されているから表示されない。でもrssで読むと表示されちゃうから、醜い見にくいfeedになる。これを消したい。
さらに、Google SEO by Yoastでも、デフォルトの設定では、勝手に追記しやがる。
まあ、わかるけどさ。和訳が酷すぎていみわからなかったよ。これは、この個所を消せば消える。
さて、feedにあるscreen-reader-textの部分を消す方法だが、the_excerpt_rss filterを使えば簡単。ごっそり<span>でくくられた個所を消しちゃうには以下
add_filter( 'the_excerpt_rss', 'myrss', 1, 10 );//$output ); function myrss($string){ $string = preg_replace('@<(w+)b.*?>.*?</1>@si', '', $string); // # $string_formatted = preg_replace('/(<pre>)(.*)(</pre>)/eis', "'<span style="color:red">' . '$1' . '$2' . '$3' . '</span>'", $string_original); // $string = preg_replace('/<span[^>]*>(.*?)<\/span>/i', '\1', $string); $string = strip_tags_content( $string, '<span>'); return $string; } function strip_tags_content($text, $tags = '', $invert = FALSE) { preg_match_all('/<(.+?)[\s]*\/?[\s]*>/si', trim($tags), $tags); $tags = array_unique($tags[1]); if(is_array($tags) AND count($tags) > 0) { if($invert == FALSE) { return preg_replace('@<(?!(?:'. implode('|', $tags) .')\b)(\w+)\b.*?>.*?</\1>@si', '', $text); } else { return preg_replace('@<('. implode('|', $tags) .')\b.*?>.*?</\1>@si', '', $text); } } elseif($invert == FALSE) { return preg_replace('@<(\w+)\b.*?>.*?</\1>@si', '', $text); } return $text; }
RSSフィードに妙なものがついていたら確認してみてください。