サポート » 使い方全般 » カスタム投稿タイプの管理画面上での並び順を変更するには?

  • 解決済 conte9999

    (@conte9999)


    いつもお世話になっております。

    Custom Post Type UIというプラグインを使用して
    カスタム投稿タイプを作成したのですが、

    管理画面上でのデフォルトとの並び順が、
    「公開日が古い順」になってしまい、変更の仕方がわからず悩んでおります。

    ソートすれば問題ないのですが、
    できれば「公開日が新しい順」で最初から表示されるようにしたいと思っています。

    Custom Post Type UIの設定部分も見なおしたのですが
    見つけられずにおります。
    どのようなカスタマイズをすればよいかご指導いただけないでしょうか。

    どうぞよろしくおねがいします。

9件の返信を表示中 - 1 - 9件目 (全9件中)
  • 管理画面上でのデフォルトとの並び順が、
    「公開日が古い順」になってしまい、変更の仕方がわからず悩んでおります。

    ソートすれば問題ないのですが、
    できれば「公開日が新しい順」で最初から表示されるようにしたいと思っています。

    通常であれば「公開日が新しい順」で表示されると思うのですが、デフォルトの投稿はどうなっていますか?

    conte9999

    (@conte9999)

    mimosafa様

    お返事どうもありがとうございます。

    >通常であれば「公開日が新しい順」で表示されると思うのですが、デフォルトの投稿はどうなっていますか?

    デフォルトの投稿は「公開日が新しい順」で表示されております。
    カスタム投稿タイプを作成するとなぜか「公開日が古い順」に表示されるのです。

    CPT UIというプラグインを使っているからでしょうか。
    いくつかのサーバーに設置した複数のWordPressいずれも同じ状況です。

    できればデフォルトの投稿同様に「公開日が新しい順」に治したいのですが・・・。

    functions.php等の中で、その投稿タイプの順番をpre_get_postsとかで弄っていた場合は
    管理画面にもする可能性はあります。

    テーマや、他のプラグインを無効にしても状況は変わりませんか?

    conte9999

    (@conte9999)

    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 とパラメーターがついたりしていませんか。

    conte9999

    (@conte9999)

    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 が適切だと思います。

    Ayustar

    (@ayustar)

    ところで、一つ私は勘違いをしておりました。

    並び順は公開日時が「古い順」・・・ではなくどうやら「タイトル順」のような別のルールで並んでいるようでした。公開日時を変えても順番が変わらないことに気づきました。

    CPT UI での設定時、階層(hierarchical)がtrueだとしたら、タイトル順で並ぶのが標準の仕様ではないかと思います(固定ページと同じ)。

    conte9999

    (@conte9999)

    Ayustar様

    ご指導ありがとうございます!
    指摘いただいたとおり、確かにCPT UIの階層(hierarchical)はtureになっておりました。

    こちらをFalseに変更したところ問題なく更新日順になりました。

    pageとpostの違いがよくわかっておらず、
    とりあえずtrueにしておいたがのが私の迷走の始まりでした。

    お忙しいところ初歩的な質問に丁寧にご回答くださり
    みなさんほんとうにありがとうございました。今後ともどうぞよろしくお願いいたします。

9件の返信を表示中 - 1 - 9件目 (全9件中)
  • トピック「カスタム投稿タイプの管理画面上での並び順を変更するには?」には新たに返信することはできません。