2017-01-21

6件目に新しい記事から取得するWordPressウィジェット

はじめに

WordPressのデフォルトのウィジェットには、「最近の投稿」という一番最新の投稿記事から数えて指定した件数分を取得して表示するというものがあります。最新の記事から取得したい場合は便利ですが、6件目からが欲しい、などといった場合には使えず、痒いところに手が届かない仕様となっています。今回は、好きな件数分飛ばした位置からの指定件数分の投稿記事の取得方法を簡単にご紹介します。

ウィジェットを追加する

方法としては、新規にウィジェットを追加する方法で行います。ウィジェットの追加は、functions.phpへの記述で行います。

まず、WordPressのデフォルトのウィジェット、「最近の投稿」のソースをコピーしてきます。ソースは「/wordpress/wp-includes/widgets/class-wp-widget-recent-posts.php」にあります。PHPファイルを開き、「class WP_Widget_Recent_Posts extends WP_Widget」と書かれた行から末尾までをコピーし、functions.phpに貼り付けます。

貼り付けたら、まずデフォルト部分の書き換えを行います。今回は以下の箇所を書き換えました。

書き換え前

  • class WP_Widget_Recent_Posts extends WP_Widget {
  • 'classname' => 'widget_recent_entries',
  • 'description' => __( 'Your site’s most recent Posts.' ),
  • parent::__construct( 'recent-posts', __( 'Recent Posts' ), $widget_ops );

書き換え後

  • class WP_Widget_Recent_Posts_offset5 extends WP_Widget {
  • 'classname' => 'widget_recent_entries_offset5',
  • 'description' => __( '最新から6件目以降の投稿を表示' ),
  • parent::__construct( 'WP_Widget_Recent_Posts_offset5', __( '6件目以降の投稿記事' ), $widget_ops );

書き換えが終わったら、2箇所に必要な追記をします。「$r = new WP_Query」内の投稿記事の取得条件の最後に「'offset' => 5」を追記します。これが重要で、最新の記事から5件飛ばすという指定を行なっています。ここで飛ばしたい記事の投稿数を指定しつつ、中身の構造はデフォルトのウィジェットなので、5件飛ばした位置からの記事取得ができるというわけです。なお、「$r = new WP_Query」の条件記述方法として、複数条件はカンマ区切りで書く、最後の条件にはカンマをつけないというルールがあるので、offsetを追記したら、「'ignore_sticky_posts' => true」の末尾にカンマをつけておきましょう。

そしてさいごに「add_action('widgets_init',create_function('', 'return register_widget("WP_Widget_Recent_Posts_offset5");'));」を「class WP_Widget_Recent_Posts_offset5 extends WP_Widget」を抜けた所に書いておきます。この記述で、WordPressにウィジェットが追加されます。

ウィジェットを確認する

functions.phpの変更が終わったら、WordPressの管理画面からウィジェットのページを見てみましょう。「6件目以降の投稿記事」というウィジェットがあれば成功です。あとは、「最近の投稿」と同じようにドラッグ&ドロップでサイドバーに追加し、取得する件数を指定すれば、最新5件を飛ばして6件目の投稿記事から表示させることができます。

さいごに

ざっくりとしか書き換えをしていませんが、特に問題なく動いているので、大丈夫なはず。ちょっと調べればもう少し踏み込んだ設定も可能なので、興味がある方はどんどんオリジナルのウィジェットを作成してみてはいかがでしょうか。



コメントする(※は必須項目です)













画像認証