サポート » プラグイン » Advanced Custom Fieldsのデートピッカーでの管理画面ソート

  • 解決済 yunosuke

    (@yunosuke)


    yunosukeと申します。

    「DISCOGRAPHY」というカスタム投稿があり、
    そのなかにAdvanced Custom Fieldsで「dscDate」という
    カスタムフィールドをデートピッカーで作りました。

    この「dscDate」を使い、発売日の新しい順に並べて表示等
    はできるのですが、管理画面のカラムカスタマイズが
    うまく働いてくれません。

    functuions.phpに以下を追記しています。

    function manage_discography_posts_columns($columns) {
    $columns[‘dscDate’] = “発売日”;
    return $columns;
    }
    function add_discography_column($column_name, $post_id) {
    if( $column_name == ‘dscDate’ ) {
    $stitle = get_post_meta($post_id, ‘dscDate’, true);
    }
    if ( isset($stitle) && $stitle ) {
    echo attribute_escape($stitle);
    }
    }
    add_filter( ‘manage_edit-discography_sortable_columns’, ‘manage_discography_posts_columns’ );
    add_filter( ‘manage_discography_posts_columns’, ‘manage_discography_posts_columns’ );
    add_action( ‘manage_discography_posts_custom_column’, ‘add_discography_column’, 10, 2 );

    「発売日」でソートはするカラムは現れたのですが、
    ソートボタンを押しても

    20140522
    20131128
    20150728
    20120720

    20120720
    20150728
    20131128
    20140522

    と中途半端な並べ替えになってしまいます。
    この原因をご存知でしょうか…?
    よろしくお願い申し上げます。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • モデレーター jim912

    (@jim912)

    ソートした場合、管理画面のURLには、orderby, order といったパラメーターが付加されます。
    このパラメーターによって並び順が変更されるのですが、このパラメーターとして有効となるものは、WP_Queryの順序&順序ベースパラメータに存在するもののみとなります。

    これら以外のパラメーターは無視され、日時順となります。

    トピック投稿者 yunosuke

    (@yunosuke)

    jim912様

    さっそくご回答いただきありがとうございます!

    管理画面でソートのマークをクリックしたところ、
    wp-admin/edit.php?post_type=discography&orderby=発売日&order=asc
    というURLになりました。

    これを
    wp-admin/edit.php?post_type=discography&meta_key=発売日&orderby=meta_value_num&order=asc
    としてみたのですが、やはり
    20120720
    20150728
    20131128
    20140522
    という並び順になってしまいました。
    「発売日」を「dscDate」にしても同様でした。

    やはり、
    20120720
    20131128
    20140522
    20150728
    という並び順にするのはムズかしいのでしょうか。。。

    参考:

    管理画面でのカスタムフィールドを用いた並べ替えですが、
    meta_value_num等は、URLに含めることが出来なかったと思います。(class-wp.php
    でフィルタリングされます)

    なので、requestアクションなどでURLのパラメーターを動的に注入する必要があります。

    https://gist.github.com/torounit/64d66203042459a6d25b

    もしくは、query_varsフィルターで、許可するURLパラメーターにmeta_value_num等を追加すれば良いかもしれません。(未検証

    トピック投稿者 yunosuke

    (@yunosuke)

    Toro_Unit様

    教えていただいたAdmin_Column_Custom_Field.phpを、
    従来のカラムカスタマイズに差し替える形で記述
    したところ、まさに期待どおりの挙動になりました!

    このたびはまことにありがとうございます。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「Advanced Custom Fieldsのデートピッカーでの管理画面ソート」には新たに返信することはできません。