管理画面上でのデフォルトとの並び順が、
「公開日が古い順」になってしまい、変更の仕方がわからず悩んでおります。
ソートすれば問題ないのですが、
できれば「公開日が新しい順」で最初から表示されるようにしたいと思っています。
通常であれば「公開日が新しい順」で表示されると思うのですが、デフォルトの投稿はどうなっていますか?
mimosafa様
お返事どうもありがとうございます。
>通常であれば「公開日が新しい順」で表示されると思うのですが、デフォルトの投稿はどうなっていますか?
デフォルトの投稿は「公開日が新しい順」で表示されております。
カスタム投稿タイプを作成するとなぜか「公開日が古い順」に表示されるのです。
CPT UIというプラグインを使っているからでしょうか。
いくつかのサーバーに設置した複数のWordPressいずれも同じ状況です。
できればデフォルトの投稿同様に「公開日が新しい順」に治したいのですが・・・。
functions.php等の中で、その投稿タイプの順番をpre_get_postsとかで弄っていた場合は
管理画面にもする可能性はあります。
テーマや、他のプラグインを無効にしても状況は変わりませんか?
Toro_Unit様
ご返信とご教授ありがとうございます。
pre_get_postsに関してはテーマの中に以下の記述がありました。
function change_posts_per_page($query) {
if ( is_admin() || ! $query->is_main_query() )
return;
if ( $query->is_post_type_archive(‘カスタム投稿タイプ名’) ) {
$query->set( ‘posts_per_page’, ’12’ );
}
}
add_action( ‘pre_get_posts’, ‘change_posts_per_page’ );
・・・が、この記述を削除しても変わりませんでした。
テーマを変更しても変わりありませんでしたし、
CPT UI以外に共通して利用しているのはAdvanced custom Fieldくらいです。
これはもしかしてCPT UIというプラグインの仕様なのでしょうか・・・(´・ω・`)
これはもしかしてCPT UIというプラグインの仕様なのでしょうか・・・
確認したのですがそういうわけでもなさそうです。
とりあえずひとつのサイトを対象にプラグインを無効化していって細かく検証してみたほうがいいと思います。
ちなみに管理画面のURLはどうなっていますか。order=asc
とパラメーターがついたりしていませんか。
mimosafa様
アドバイスどうもありがとうございます。
おっしゃるとおり、サンプルサイトを作ってみてプラグインを無効化して検証したいと思います。
ところで、一つ私は勘違いをしておりました。
並び順は公開日時が「古い順」・・・ではなくどうやら「タイトル順」のような別のルールで並んでいるようでした。公開日時を変えても順番が変わらないことに気づきました。
それをヒントに探してみたのですが
ttp://www.warna.info/archives/1827/
上記のサイトで公開してくださっているコードの
menu_order の部分を post_dateに変えてfunction.phpに入れてみたところ
エラーが出て管理画面が表示されなくなってしまったため元に戻しました。
function custom_post_archive_orderby_menu_order( $wp_query ) {
if ( $wp_query->is_post_type_archive() && post_type_supports( $wp_query->query_vars[‘post_type’], ‘page-attributes’ ) ) {
if ( ! isset( $wp_query->query_vars[‘orderby’] ) ) {
$wp_query->query_vars[‘orderby’] = ‘post_date’;
}
if ( ! isset( $wp_query->query_vars[‘order’] ) ) {
$wp_query->query_vars[‘order’] = ‘ASC’;
}
}
}
add_action( ‘pre_get_posts’, ‘custom_post_archive_orderby_menu_order’ );
このコードではうまくいかないのでしょうか。
お忙しいところお手数をおかけしますが
引き続きお知恵を拝借いただければと思います。どうぞよろしくお願いいたします。
以下、未検証ですが、
&& post_type_supports( $wp_query->query_vars['post_type'], 'page-attributes' )
は不要ですね。(当該エントリーでは menu_order
を並び替えの基準にしているので上記のコードが入っています。)
上記を削除すると全てのカスタム投稿タイプに適用され、かつフロントエンドでの表示にも影響が出るので、条件分岐部分は
if ( $wp_query->is_post_type_archive( 'カスタム投稿タイプ名' ) && is_admin() ) {
とすれば良いのではないでしょうか。
$wp_query->query_vars['order'] = 'ASC';
今回の場合は降順にしたいということなので DESC
が適切だと思います。
ところで、一つ私は勘違いをしておりました。
並び順は公開日時が「古い順」・・・ではなくどうやら「タイトル順」のような別のルールで並んでいるようでした。公開日時を変えても順番が変わらないことに気づきました。
CPT UI での設定時、階層(hierarchical)がtrueだとしたら、タイトル順で並ぶのが標準の仕様ではないかと思います(固定ページと同じ)。
Ayustar様
ご指導ありがとうございます!
指摘いただいたとおり、確かにCPT UIの階層(hierarchical)はtureになっておりました。
こちらをFalseに変更したところ問題なく更新日順になりました。
pageとpostの違いがよくわかっておらず、
とりあえずtrueにしておいたがのが私の迷走の始まりでした。
お忙しいところ初歩的な質問に丁寧にご回答くださり
みなさんほんとうにありがとうございました。今後ともどうぞよろしくお願いいたします。