【WordPress Popular Posts】人気記事の条件によりHTMLの出力を変更

WordPressのプラグイン『WordPress Popular Posts』は人気記事一覧(記事のランキング)を簡単に表示することができるプラグイン。

今回は、人気記事のデータを取得する条件により、それぞれ異なったHTMLのソースコードで、人気記事一覧を表示させる例となります。

人気記事を取得する条件によってHTMLを変更する例

今回の例では、同じページ内の任意の2箇所に、記事の最大件数とHTMLが異なる人気記事一覧を表示します。

また、HTMLを変更してして表示するには、次の2つの工程が必要となります。

  • フィルターフックwpp_custom_htmlを使い、出力するHTMLを変更
  • wpp_get_mostpopular()で変更した人気記事一覧のHTMLを表示

以下、それぞれのソースコードの例となります。

wpp_custom_htmlで出力するHTMLを条件によって変更

出力するHTMLを変更するには、フィルターフックwpp_custom_htmlを使用します。例では、表示する記事の最大件数によって、出力するHTMLを変更しています。

以下がソースコードとなり、functions.phpファイルに記述します。

function my_popular_posts( $mostpopular, $instance ){
	$output = '<h2>人気記事ランキング</h2>' ;
	$output .= '<ol>' ;
	foreach( $mostpopular as $popular ) {
    	$ID = $popular->id;
        $output .= '<li><a href="' . get_the_permalink( $ID ) . '">';
    	$output .= '<p class="entry-title">' . esc_html( $popular->title ) . '</p>';
    	// 記事を表示する最大件数が3の場合
		if ($instance['limit'] == '3') {
			$output .= '' . get_the_post_thumbnail( $ID, 'thumbnail' ) .'';
		}
		$output .= '</a></li>';
	}
	$output .= '</ol>' ;
	return $output;
}
add_filter( 'wpp_custom_html', 'my_popular_posts', 10, 2 );

フィルターフックwpp_custom_htmlのコールバック関数の第1引数($mostpopular)は、人気記事一覧のオブジェクトを返し、第2引数($instance)は、人気記事一覧のオプション情報を配列として返します。

上記ソースコードでは、第2引数($instance)から、'limit'の値(記事を表示する最大件数の値)を取得し、その値が3の場合とそれ以外の場合でHTMLの出力を変更しています。

今回は、第2引数($instance)から、'limit'の値を取得しましたが、取得できる情報は多岐にわたります。var_dump関数で確認してみたり、以下のリンク先を参考にしてみてください。

3. Filters · cabrerahector/wordpress-popular-posts Wiki · GitHub

wpp_get_mostpopular() のパラメータを指定し、異なる人気記事の一覧を表示

人気記事一覧を出力するには、wpp_get_mostpopular関数を使います。そして、データを取得する条件を指定するには、関数のパラメータを使用します。

例では、同じページ内の任意の2箇所に、表示する記事の最大件数が異なる人気記事一覧を表示します。

以下がソースコードとなり、人気記事の一覧を表示させたいそれぞれの場所に記述します。

記事を取得する最大件数が3件の例

<?php
if ( function_exists( 'wpp_get_mostpopular' )) {
	$arg = array (
    	// 記事を表示する最大件数
		'limit'     => 3, 
        // ポストタイプを指定。post, page, などを指定
		'post_type' => 'post',
	);
	wpp_get_mostpopular( $arg );
}
?>

記事を取得する最大件数が6件の例

<?php
if ( function_exists( 'wpp_get_mostpopular' )) {
	$arg = array (
    	// 記事を表示する最大件数
		'limit'     => 6, 
        // ポストタイプを指定。post, page, などを指定
		'post_type' => 'post',
	);
	wpp_get_mostpopular( $arg );
}
?>

フィルターフックwpp_custom_htmlと、wpp_get_mostpopular関数を使用したカスタマイズについては、以下のリンク先も参考にしてみてください。

参考サイト、参考書籍

コメント投稿またはTwitterで返信

コメントは、以下の項目(*は必須項目)を入力し「コメントを送信」ボタンから送信お願いします。メールアドレスは公開されることはありません。
Twitterで返信する場合はコチラから。