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' );
を追加すれば出来るんですね。