質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
CMS

CMS(Content Management System)は複数のユーザーでコンテンツを編集することが可能なWebサイトの管理/構築用のプラットフォームを指します。また、会社単位で運用管理するものはECMと呼びます。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

4回答

4683閲覧

WordPressのカスタム投稿タイプの並び順を変更したい

rjunakc

総合スコア368

CMS

CMS(Content Management System)は複数のユーザーでコンテンツを編集することが可能なWebサイトの管理/構築用のプラットフォームを指します。また、会社単位で運用管理するものはECMと呼びます。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

2クリップ

投稿2017/06/01 05:38

編集2022/01/12 10:55

###実現したいこと
カスタム投稿タイプを作成しています。
そのカスタム投稿タイプを複数の値で並び替えたいです。
1つはカスタムタクソノミーの名前順、2つめはカスタムフィールドの値です。

###該当のソースコード

// カスタムフィールドで並び替え function change_posts_query($query){ if($query->is_post_type_archive('custom_post_type_slug')){ $query->set('meta_key', 'custom_field_slug'); $query->set('orderby', 'meta_value_num'); $query->set('order', 'ASC'); } } add_action('pre_get_posts', 'change_posts_query');

上記でカスタムフィールドで並び替えはできています。

カスタムタクソノミーの名前で並び替える方法と、その2つを合わせて実行する方法がわかりません。

具体的には

|カスタムタクソノミー|カスタムフィールド||
|:-----------:|:------------:|
|2017|1|
|2017|2|
|2017|3|
|2016|1|
|2016|2|

のように、タクソノミーでは降順、カスタムフィールドでは昇順で並べたいです。

ご存じでしたらよろしくお願いします。

###2017/06/02追記
同様の機能を持っているプラグインでも結構です。
利用するかどうかは別として、可能かどうかが知りたいのでよろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

rjunakcさん
こんにちは。

こちらをお試しいただいてもよろしいですか。

php

1変更前 2$query->set('orderby', 'meta_value_num'); 3 4変更後 5$query->set('orderby', array('meta_value_num' => 'ASC', 'term_order' => 'DESC') ); 6または 7$query->set('orderby', array('meta_value_num' => 'ASC', 'term_id' => 'DESC') );

見当違いの回答でしたらスルーで大丈夫です。
よろしくお願いします。

投稿2017/06/01 08:51

lyrica0503

総合スコア96

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rjunakc

2017/06/01 12:25

回答ありがとうございます。 どちらも期待の挙動になりませんでした。 他の方法があればよろしくお願いします。
guest

0

ソートした状態でまとめて取得するには
独自のソートを実装しないとダメかと思います。

http://chaika.hatenablog.com/entry/2015/06/05/120000
こちらの記事が参考になるかも。

投稿2017/06/01 08:49

rok6

総合スコア241

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rjunakc

2017/06/02 03:01

回答ありがとうございます。 参考に実装してみましたが、思った並び順にはなりませんでした。 実装方法が間違っているかもしれませんので、もう少しいじってみます。 他の方法があればよろしくお願いします。
guest

0

tax_queryとmeta_queryの条件をそれぞれ指定します。
カスタムフィールドは内容に合わせて適宜変更してください。

PHP

1function custom_main_query( $query ) { 2 if ( is_admin() || !$query->is_main_query() ) return; 3 4 $query->set('post_type', 'カスタム投稿名' ); 5 $query->set('post_status', 'publish'); 6 7  $taxquery[] = array( 8 'taxonomy' => 'タクソノミー名', 9 'terms' => ターム, 10 'field' => 'name', 11 'operator' => 'IN' 12 ); 13 $query->set('tax_query', $taxquery); 14 15 $metaquery[] = array( 16 'relation' => 'AND', 17 'meta1' => array( 18 'key' => 'カスタムフィールド名', 19 'type' => 'NUMERIC' 20 ), 21 'meta2' => array( 22 'key' => 'カスタムフィールド名2', 23 'value' => $currnet_date, 24 'compare' => '>', 25 'type' => 'DATE' 26 ) 27 ); 28 $query->set('meta_query',$metaquery); 29 30 $query->set( 'order', 'desc' ); 31 $query->set('orderby',array( 32 'meta1' => 'DESC', 33 'meta2' => 'ASC', 34 'date' => 'DESC' 35 ) 36 ); 37 38} 39add_action( 'pre_get_posts', 'custom_main_query' );

投稿2017/06/07 13:48

編集2017/06/07 14:33
madone99

総合スコア1855

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rjunakc

2017/07/24 03:03

回答ありがとうございます。 また、お返事が遅くなりもうしわけありません。 現在、該当WPの開発から少し離れているので、時間を見つけて一度テストしてみます。 ありがとうございました。
guest

0

posts_orderby フックを使って書き換えるとか。下記はタクソノミーの値でソートする例。(カスタムフィールドを並べ替えるSQLと組み合わせたら出来るとは思いますが私にはわかりません)

【Sortable Taxonomy Columns】
http://scribu.net/wordpress/sortable-taxonomy-columns.html

投稿2017/06/02 09:22

kei344

総合スコア69364

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rjunakc

2017/07/24 03:02

回答ありがとうございます。 また、お返事が遅くなりもうしわけありません。 一度リンク先の情報をよく読んでみて試してみようと思います。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問