制作ブログ Web制作アプリケーションWordPressWordPress Popular Posts のフィルターフック、wpp_custom_html も wpp_post もなぜか使えなくなってた → new \WordPressPopularPosts\Query($args)

WordPress Popular Posts のフィルターフック、wpp_custom_html も wpp_post もなぜか使えなくなってた → new \WordPressPopularPosts\Query($args)

「よく読まれる記事」のリストを表示する便利なプラグイン「WordPress Popular Posts」。
これまでは、wpp_custom_html をフィルターフックとして完全にフルカスタマイズしてコーディングしていた。
ところが、いつからか分からないが、wpp_custom_html をフィルターフックが効いておらず、デフォルトのリンクテキストと閲覧ビューが表示されていた。wpp_custom_html 以外のフィルターフック、wpp_post に書き換えて試してみるも、うまくいかない。

同様の症状が検索ヒットしないので、どうやら自分の環境でうまくいかないだけかもしれない。なんとか記事IDを取得できれば、と検索続けて、ようやく解決につながる素晴らしい記事を見つけた。

【WP】人気投稿プラグインの表示カスタマイズおぼえがき – イラ備忘録

この記事の中で解決することができたわけだが、該当箇所を抜粋し、改変する。

$popular_posts = new \WordPressPopularPosts\Query($args);
if ($popular_posts) {          
  foreach ($popular_posts->get_posts() as $popular_post) {
    // $popular_post -> id;
  }
}
wp_reset_postdata();

記事IDさえ取得できれば、あとはいかようにもカスタマイズできる。該当箇所全体で記述するとこんな感じ。この方法であれば、フィルターフックを使う必要はもうない。

if (function_exists('wpp_get_mostpopular')) {
  $args = array (
    'limit' => 15,    // 記事を表示する最大件数
    'range' => 'monthly',   // 集計期間。 daily, weekly, monthly, all のいずれかを指定     
    'order_by'  => 'views',   // ソート順の対象。 views(閲覧数), comments(コメント数), avg(1日の平均)のいずれかを指定
    'post_type' => 'post',    // ポストタイプを指定。post, page, などを指定
  );
  
  //wpp_get_mostpopular($arg);
  
  $popular_posts = new \WordPressPopularPosts\Query($args);
  if ($popular_posts) {          
    foreach ($popular_posts->get_posts() as $popular_post) {
      // $popular_post -> id;
    }
  }
  wp_reset_postdata();
}

ふー、これで「よく読まれている記事」のリストを復活させることができたぁ。やれやれだぜ。

参考サイト
【WP】人気投稿プラグインの表示カスタマイズおぼえがき - イラ備忘録