自由自在!WordPress上級

カスタムフィールドで並び替える

全333コースを10日間無料で

ぜひご覧ください。

無料で視聴する すべての加入プランを見る
または
カスタムフィールドの値を使って、投稿の一覧を並び替える方法を解説します。
講師:
10:19

字幕

このレッスンでは カスタムフィールドで 投稿を並び替える方法について学習します WordPress のメッセージループは デフォルトでは 投稿日の新しいもの程 上に来るというルールで並んでいます この並び順を 自由にカスタマイズしたい場合に 使用するのが query posts という テンプレートタグです このレッスンでは 一つ一つのイベントをカスタムフィールドの 開催日の値で 並び替えてみたいと思います 開催日の新しいもの程 上に表示される様に 並び変えてみましょう それでは先ず query posts のテンプレートタグの 説明を見てみたいと思います query posts は メッセージループの前に記述して そのメッセージループが取得する 投稿の情報をカスタマイズする そういうテンプレートタグです 投稿を抽出する メッセージループが抽出する条件を プログラムの用語ではクエリという風に言いますので そこで query posts という テンプレートタグの名前になっています 例えば query posts と書いて posts_per_page=5 という風に書けば 一件あたり 5 件づつ 記事を取得する様になります サイトの設定で 例えば 1 ページ当たり 10 件 という風に設定していたとしても メッセージループの前に これを書けば そのメッセージループは 5 件になります 他のメッセージループには影響を与えません クエリポストは様々な引数を持っていて 例えば投稿者 ある投稿者で 取得する記事を絞り込むとか あるカテゴリーの記事だけを取得するとか 様々な パラメータを設定する事ができます 今回は取得する投稿は 全ての投稿になりますので 投稿に関しては特に 変更する必要がありません 今回変更したいのは 並び順を変えたいので 並び順・並び替え引数という所を見ます ここでは先ず order という パラメータがあって 昇順か降順を選択する事ができます そして今回使うのは この orderby というパラメータです これはソートとする優先順位 何で並び替えるかという事です ID で並び替えるとか ページのタイトルで並び替えるとか 投稿日で並び替えるとか 或いは投稿日ではなくて 投稿の更新日で 並び替えるとか ちょっと変わったことろでは rand ランダムに並び替えるとか そういったものもあります 今回はですね 開催日の カスタムフィールドで並び替えたいので 開催日で カスタムフィードで並び替えるための このパラメータがこの meta_value というパラメータになります この meta_value で 並び替えを行うのですが もう一つ 指定をしてあげる必要があります それがこのカスタムフィールド引数です カスタムフィールドのキーまたは値を基に 投稿を表示という風になっています この meta_key そして meta_value 後 meta_compare を使ってですね 色々な 複雑な条件で 絞り込む事ができる様になっています 今回はこのカスタムフィールド引数の meta-key と そして orderby の meta_value を使って 並び替えを行います それではエディターに移動します メッセージループへの変更ですので index.php に 記述していきます メッセージループの上に query posts テンプレートタグを書いていきます 先ず orderby に 先ほど確認した meta_value を指定します そしてその並び替えキーとするのが 開催日という カスタムフィールドですので mata_key=開催日 として & で繋げます これで OK ですね そして query posts を使ったら 必ず wp_reset_query でクエリを 初期化しておきます これでできました 保存をして サイトでの表示を確認してみましょう リロードをします 並び替わりました 日付の 新しいもの程上に 開催日の新しいもの程上に 並ぶ様になっています それでは試しにですね この 並び替え引数の order を 指定して逆に古いものは 上に来る様にしてみましょう この order ですね 日付は新しいもの程 大きくなっていきますので こちらの昇順の方を使って 並び替えていきます では条件を追加します & を入れて order と書きます それではリロードしてみましょう 古いものから どんどん新しいものが並ぶ様になりました それではもう一度戻しておきます query posts を使う場合に 一つ注意しなければいけない事があります 2 ページ目を表示してみたいと思います 2 ページ目 表示しているはずなんですが URL も変わっているんですけれども なぜか 1 ページ目と同じものが 表示されてしまいました これはなぜかと言うとですね ちょっと説明がややこしいんですけれども メッセージループと言うのは WordPress から そもそも様々な 取得するためのクエリを受け取って メッセージを取得しています つまり今 query posts を使って オリジナルの条件を与えたのですけれども それによってですね 本来 index.php の メッセージループが受け取るべき クエリが上書きされてしまっている と言う事なんですね 2ページ目を取得しなさい と言うのも クエリなんですね そのクエリがメッセージループに クエリポストを使った事によって ちゃんと渡っていないのが原因です ですので毎回一番頭から ページが表示されてしまっています エディターを使ってですね これを直していきたいと思います index.php を編集します 一番先頭にグローバル変数を宣言します query_string 実はこの WordPress が メッセージループに その画面ごとに与えるクエリというのは この query_string という変数で 受け取る事ができます ここにもクエリが入っていますので この query posts に ここで受け取ったクエリを追加すれば きちんと動作するはずです 追加してみましょう query_string 変数と文字列はドットで繋ぎます そして & で ここにある様にですね パラメータを繋げるのには & が必要ですので ここのクエリとこのクエリを繋げるための & を入れておきます それではもう一度アップロードして 画面を確認してみましょう ページをリロードします 2ページ目の URL に対して ちゃんと正しいデータが受け取れました 1 ページに戻れば しっかりと 1 ページ目が表示されています これはカテゴリーページなどで query posts を使う場合も同じです query_string を受け取らないと 本来カテゴリーページが表示する あるカテゴリーで絞り込んだ 記事の一覧というクエリが 上書きされてしまいますので 必ず query_string を 受け取る様にして下さい このレッスンでは カスタムフィールドを使った 並び替えについて学習しました

自由自在!WordPress上級

このコースではWordPressを利用したさまざまな種類のサイトを構築しながら、より実践的なテクニックを解説します。コースの前半はカスタムフィールド機能などについて説明しながら、後半では自由度の高いサイト構築が可能になるマルチサイトについても学習します。

3時間17分 (26 ビデオ)
現在、カスタマーレビューはありません…
 
ソフトウェア・トピック
カテゴリー
ウェブデザイン
CMS
価格: 2,990
発売日:2014年03月05日

このコースは、「オンデマンド」でご利用可能であり、ダウンロードすることもオンラインで見ることもできます。

ダウンロードすると、オフラインでコースを使用し、豊富なインターフェースをフルに活用できます。複数のデバイスを使用したり、 一度に全コースをダウンロードしたくない場合は、アカントにログインして、ストリーミング・ビデオとしてコースのレッスンを視聴してください。

ビデオトレーニングをお楽しみいただけますように! お問い合わせは、cs-jp@lynda.com宛までご連絡ください。