【WordPress】 Popular Postsをquery_postsで取得する!

Article views61 VIEW

人気記事を表示してくれるプラグイン 「Wordpress Popular Posts」はとても便利です。

前回記事にした「WordPress Popular Posts を週間・月間・全期間 PHPで吐き出す方法」でサイトの制作を行っておりましたが、最近投稿の中にあるカスタムフィールドを表示しなければいけない案件が発生しました。

人気記事を表示する「WordPress Popular Posts」でカスタムフィールドの値を出力する」の記事を参考に取り組んではみたのですが、吐き出したPHP全てに反映されるため、別の内容を表示したい時に使えませんでした。

なので個別PHPで表示させる為にquery_postsでPopular Postsを表示する方法に取り組みました。

functions.phpに追加

//popular post からquery_posts生成
function get_popular_args($range= "weekly", $limit = 8){
  //urlを作成
  $shortcode = '[wpp';
  $atts = '
          post_html="{url},"            
          wpp_start=""
          wpp_end=""
          order_by="views"
          post_type="post"
          stats_comments=0
          stats_views=1
            ';
  $atts_2 = ' range='. $range;
  $atts_3 = ' limit='. $limit;
  $shortcode .= ' ' . $atts . $atts_2 . $atts_3 . ']';
  $result = explode(",", strip_tags(do_shortcode( $shortcode )));
  $ranked_post_ids = array();
  
  //urlから投稿IDを作成
  foreach($result as $_url){        
    if(!empty($_url) && trim($_url) != ''){
      $id_string = url_to_postid($_url);
      array_push ($ranked_post_ids, intval($id_string));
    }
  }
  
  //idをreturn
  $args = array(
    'posts_per_page' => 20,
    'post__in' => $ranked_post_ids,
    'orderby' => 'post__in'
  );
 
  return $args;
}

表示したい場所にquery_postsを記入

//例,月間人気記事を10件取得
<?php $args = get_popular_args('monthly', '10');
query_posts($args); ?>

使用例はこちら

<?php $args = get_popular_args('monthly', '10');
			query_posts($args); ?>
	<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
		<li>
			<a href="<?php echo get_permalink(); ?>">
				<h3><?php the_title() ?></h3>
				<p><?php echo get_post_meta($post->ID , 'カスタムフィールド名' ,true); ?></p>
			</a>
		</li>
	<?php endwhile; else : ?>
		<li>該当なし</li>
<?php endif;
wp_reset_query(); ?>

こちらで実装が出来ました。

参考にしたサイト

WordPress Popular Posts をカスタマイズする

Pocket
pinit fg en rect gray 28 - 【WordPress】 Popular Postsをquery_postsで取得する!
line88x20 - 【WordPress】 Popular Postsをquery_postsで取得する!
[`evernote` not found]

Posted in PHP

Leave a Comment

CAPTCHA