WordPressでアメブロなど外部RSSの「PR:」から始まる広告をはじく

WordPressのSimplePieオブジェクトを使ってアメブロなど(っていうかほとんどアメブロ)の外部RSSのデータを表示するとき。
「PR:」からはじまる広告をはじく、のをショートコードにしたもの。

まだ不完全ですがメモ程度に。

functions.phpに以下を追加。


if ( !function_exists( "my_rss" ) ) {
    function my_rss( $atts ) {
        extract( shortcode_atts( array(
                    'rss' => '',
                    'nom' => '5',
                        ),$atts ) );
        $feed = fetch_feed( $rss );
        $str = '';
        $blog_title = $feed->get_title();
        $str .= '<ul class="my_rss">
            ';
        foreach ( $feed->get_items(0,$nom) as $key => $item ) {
            $entry_title=$item->get_title();
            if (!preg_match("/^PR:/", $entry_title)){
            //↑ここで「PR:」をはじいている
            $str.= '<li><a href="' . $item->get_permalink() . '">' . $entry_title . '</a>';
            $str.= ' <small>' . $item->get_date( '(n/j)' ) . '</small></li>';
            //このあたりはお好みで
        }
      }
        $str.='
            </ul>
            ';
        return $str;
    }
}
add_shortcode( 'myrss','my_rss' );

これで

[myrss rss=RSSのURL nom=投稿数(デフォルトで5)]

などとする。
ただこのままだと「PR:」があるとそのぶん表示数が減ってしまいますね。

ところでショートコードをウィジェットで使うときは functions.phpに

add_filter( 'widget_text','do_shortcode' );

を追加すれば出来るんですね。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です