エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


ショートコードで簡単解決!カスタムフィールドでソート、抽出条件設定方法

      2017/03/12

WordPressの記事の一覧を作成(ソート、抽出条件付)

 

カテゴリ一覧についての説明

 
ショートコードで簡単解決!WordPress固定ページにカテゴリ一覧を編集する方法」で、ショートコードを利用して固定ページにカテゴリ一覧を編集する方法を解説しました。
 
 
いざ実装する段階になった時に、表示される投稿の記事の順番を指定したいなぁと思ってしまいました。
そんなわけで、この記事では投稿一覧を取得して並べる際に、任意のキーでソートさせる方法を解説します。
 
ショートコードで簡単解決!WordPress固定ページにカテゴリ一覧を編集する方法」の続きの記事ですので、ショートコードでカテゴリ一覧を作る方法の解説は前の記事を読んでみてください。
 
ちなみに、「WordPress投稿にPHPを記述するショートコードの使い方add_shortcode」の記事を読んでもらうと分かりますが、ショートコードで処理を作っておけば、記事に貼ることもできますし、テンプレートにもウィジェットにもショートコードを貼るだけで編集できますので便利ですね。
 
また、「functions.phpって何?」っていう方には「WordPressの functions.phpがある場所」という記事を書いていますので、こちらも読んでみてください。
 
 

ソート条件付のサンプルソースコード

 

サンプルソースコード

 
さっそく記事タイトルと投稿日付でソートするショートコードのサンプルソースです。
 

 
 

サンプルソースコードの解説

 
12行目、13行目を追加します。
「orderby」でソートするキーを指定して、「order」でソート順を指定します。
複数指定したい場合は、サンプルの様にスペースで区切ることで複数の項目を指定できます。
 
ソートキーとして指定できるものは以下のものです。
 ID  post id 順
 author  投稿者順
 title  タイトル順
 date  投稿日付順
 modified  最終更新日順
 parent  親記事のID順
 rand  ランダムにする
 comment_count  コメント数で並べ替え
 menu_order  記事のメニューオーダー順
 
ソート順は、ASC、DESCを指定します。
ソートキーは複数指定できますが、ソート順は複数の設定はできません。
 ASC:昇順。1、2、3…の様に小さなものから大きなものの順番。
 DESC:降順。昇順の逆。
 
 
また、ソートキーにカスタムフィールドの値を指定したい場合は、少し指定の仕方が変わって下記の様になります。
 

 
「meta_key」にはソートキーを指定します。
ここでは、カスタムフィールドに「順番」として「SortNumber」という項目を追加して、その項目に入っている数値でソートをする想定です。
 
「orderby」には「meta_value」「meta_value_num」が指定できます。
  「meta_value」は、ソートキーを文字列として扱います。
  「meta_value_num」は、ソートキーを数値として扱います。
  ※「100」と「50」は、数値では「100」の方が大きいですが、文字列としては「50」の方が大きいテキストとして扱われます。
 
「order」は、変わらず ASC、DESCを指定します。
 
 

ソート条件+抽出条件付のサンプルソースコード

 

サンプルソースコード

 
また、ソート条件だけではなく詳細な抽出条件、検索条件を設定したい場合は、下記の通り「meta_query」項目を追加することで対応できます。
 

 

サンプルソースコードの解説

 
例えば、カスタムフィールドに「発売開始日」として「Start_Day」という項目があり、その項目で「2015.01.01~2015.03.31」の間の商品だけを一覧表示したい、という場合は上記のようになります。
 
追加された項目は、9行目~21行目が追加された箇所で、それぞれ下記を設定します。
 
 key:検索対象となるキー項目を指定
 value:検索条件となる値を指定
 compare:検索条件を指定。「=」「<=」「>=」「<」「>」など
       「like」もOK。「%」は付けなくても自動的に付与される。
       「in」もOK。その場合は「value」に配列で値を設定する。
 type:項目の型を指定。DATEのほか、BINARY、CHAR、NUMERICなど。
 relation:複数項目を設定する場合「AND」「OR」を指定
 
それぞれの項目で設定できる内容は、下記のレファレンスを参照してください。(「カスタムフィールドパラメータ」のところにあります。)
 http://wpdocs.sourceforge.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/WP_Query
 
 


 

サンプルソースコード全体

 

functions.phpに編集する内容

 
ショートコード全体としては、以下のように使う感じでしょうか。
全体、と言っても「extract」で「day_from」「day_to」のデフォルト値を設定しているくらいの違いですが。
 

 
 

投稿の記事内、固定ページに記述する内容

 
ショートコードを呼び出し、引数でカテゴリの条件、抽出条件などを記述する方法は以下の通りです。
 

 
 
また、「posts_per_page」は、抽出する件数を指定する箇所ですが、「posts_per_page => -1」のように「-1」を指定すると、1ページの表示制限をなくすことができます(全件表示になります)。
 
 

カスタムフィールドの関連記事 2015.11.21 追記

 
カスタムフィールドは WordPressのデフォルトの機能でも使えますが、使いにくい部分もありますので、より便利に使うためには Custom Field Templateや Advanced Custom Fieldsなどのプラグインを使うことをオススメします。
 超簡単!Custom Field Templateでカスタムフィールドをフル活用
 カスタムフィールド決定版!Advanced Custom Fields全項目完全解説・管理画面編
 Advanced Custom Fieldsの全項目解説・公開側表示編集編
 
また、WordPressにはカスタムフィールドの他に、カスタム投稿、カスタムタクソノミーというカスタム機能があります。
これも使いこなせるようになると WordPressの可能性がぐっと広がります。
 WordPressのカスタムフィールド、カスタム投稿、カスタムタクソノミーとは?

 - WordPress

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

WordPress・Contact Form7、MW WP Form共通 細かなデザイン調整方法

お問い合わせフォームプラグインの Contact Form7、MW WP Formにおけるラジオボタン、チェックボックスなどの見た目を調整する小技を紹介。

WordPressの Google XML Sitemapsで WebMaster Tools用の sitemap.xmlを生成

WordPressの Google XML Sitemapsで WebMaster Tools用の sitemap.xmlを生成する方法を説明しています。

WP Mail SMTPはPHP5.6、7.0系ではメール送信時にエラーが発生。その対処方法。
WP Mail SMTPはPHP5.6、7.0系ではメール送信時にエラーが発生。その対処方法。

PHPのバージョンを5.6(7系含む)にアップデートしたらプラグイン WP Mail SMTPを利用してSMTPサーバ経由して送信していたメールが送信できなくなった。その原因と対処方法を詳細解説。

WordPressで月極駐車場検索サイトを構築し無料公開・使ったプラグインの紹介も

月極駐車場を検索するシステムをWordPressで構築。そのアナウンスと構築するために利用したプラグインの紹介。構築にどれくらいの期間がかかるのかの紹介。

WordPressの一般設定 投稿設定 表示設定 ディスカッション メディア

基本的な設定を行う「設定」の解説です。ブログサイトを構築する際に必要な設定内容を一般設定、投稿設定、表示設定などの各項目を説明しながら設定内容を提示しています。

WordPressのコメントスパム対策 3つのプラグイン

対策なしではコメントスパムがやってきます。その対策方針としてプラグインを提示しながら解説します。いずれかの対策は必須です。

ob_start、ob_get_contentsを利用しショートコード内でinclude・WordPressプラグイン開発

WordPressのプラグインやショートコードの関数作成でテンプレートをincludeする際に利用するob_start関数、ob_get_contents関数を紹介。

Multi RatingでWordPressの口コミサイトを構築

口コミの評価点を投稿する機能に特化。評価点を複数設定することができ、投稿後の評価点を編集することができる数少ないプラグイン。日本語にも対応。おススメ。

WordPressのフォームプラグイン「MW WP FORM」でメールが送信できない不具合の対応方法
WordPressのフォームプラグイン「MW WP FORM」でメールが送信できない不具合の対応方法

WordPressでメールフォームと言えば MW WP Form!そのMW WP Formでフォームを作成したものの、エラーでメールが送信できない!その原因と対処方法を解説。エラーが発生する意外な盲点もある。

Broken Link Checkerのリンク生死チェックでサイトの品質向上!SEO対策!

Broken Link Checkerは記事内のリンクのリンク切れチェックをし自動的にリンク切れの対処をします。リンク切れは一覧表示されますので手動での処置も可能です。