サポート » 使い方全般 » 管理画面でカスタムフィールドでの日付でソートしたい

  • いろいろ調べたのですが、問題が解決できず、教えて頂けたら有難いです。
    カスタム投稿としてfunctions.phpへseminorという投稿タイプを作っております。
    http://teternal.com/seminor/

    以下のサイトを参考にしながら、投稿日とは別に、カスタムフィールドでセミナーの日付、開始時間、終了時間を入力設定させるというやり方で、投稿タイプを構築していきました。
    https://www.webopixel.net/wordpress/343.html

    問題になっているのは管理画面で、
    今後増えていく記事について、全て投稿公開した日付とアクセス数でしか、並び替えが行えず、
    上記で設定した、「セミナー日付」の項目で昇順、降順などを切り替えしたいです。
    かなり調べて色々試してるのですが、どうも上手くいきません。

    ソート並び替えで参考にしたのは、↓のサイトです
    https://office7f.com/2015/10/20/wordpress-taxonomy-filter/

    –以下、functions.phpへの記入(今回上手くいってない内容)–

    function column_orderby_custom( $vars ) {
    if ( isset( $vars[‘orderby’] ) && ‘セミナー日付’ == $vars[‘orderby’] ) {
    $vars = array_merge( $vars, array(
    ‘meta_key’ => ‘セミナー日付’,
    ‘orderby’ => ‘meta_value’
    ));
    }
    return $vars;
    }
    add_filter( ‘request’, ‘column_orderby_custom’ );

    function posts_register_sortable( $sortable_column ) {
    $sortable_column[‘セミナー日付’] = ‘セミナー日付’;
    return $sortable_column;
    }
    add_filter( ‘manage_edit-[seminor]_sortable_columns’, ‘posts_register_sortable’ );

    ————

    seminor_dateという文字列をどこかに入れるべきなのかもわからないんですが、
    試してみるものの、上手くいかず。。
    ※ヘルプの必要なページへのリンクに管理画面の画像がございます。

    管理画面をセミナー日付で並び替えすることが最低減の目標で、
    欲を言えば、2つ日付が並ぶのが大変わかりにくいので…公開日付でのソートは非表示として出力自体を無くしてしまいたいです。

     
    念のため長くなるのでですが、どのような記述で、セミナー日付と時間などを管理画面に入れてるかも、下記に記述しておきます。
    どうか助けてください。。

    –以下、functions.phpへの記入(現状管理画面で問題なく反映されてる内容です:column_orderby_custom関数の直前に)–

    function manage_seminors_columns($columns) {
    global $post_type;
    if( ‘seminor’ == $post_type ) {
    $columns[‘seminor_date’] = ‘セミナー日付’;
    $columns[‘seminor_time’] = ‘セミナー時間’;
    $columns[‘sm-category’] = ‘講座カテゴリー’;
    }
    return $columns;
    }
    function add_column($column_name, $post_id) {
    //日付表示
    if( $column_name == ‘seminor_date’ ) {
    echo date(‘Y年m月d日’, strtotime(get_post_meta($post_id, ‘seminor_start’, true)));
    }
    //時間表示
    if( $column_name == ‘seminor_time’ ) {
    //開始時間
    $start_time = date(‘H:i’, strtotime(get_post_meta($post_id, ‘seminor_start’, true)));
    //終了時間
    $end_time = date(‘H:i’, strtotime(get_post_meta($post_id, ‘seminor_end’, true)));
    echo $start_time . ‘~’ . $end_time;
    }
    //カテゴリー表示
    if( $column_name == ‘sm-category’ ) {
    $terms = get_the_terms($post_id, ‘sm-category’);
    foreach ($terms as $key => $value) {
    echo attribute_escape($value->name);
    //最後以外は「,」を
    if (end(array_keys($terms)) != $key) {
    echo ‘, ‘;
    }
    }
    }
    }

    add_filter( ‘manage_posts_columns’, ‘manage_seminors_columns’ );
    add_action( ‘manage_posts_custom_column’, ‘add_column’, 10, 2 );

    • このトピックはjmani007が1年、 4ヶ月前に変更しました。

    ヘルプの必要なページ: [リンクを見るにはログイン]

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • こんにちは。
    パッとコードを見た所、明らかに違うのは以下です。

    add_filter( ‘manage_edit-[seminor]_sortable_columns’, ‘posts_register_sortable’ );

    投稿タイプ名が入る所には[]は不要なので、まずは以下のように変えてみて下さい。

    add_filter( ‘manage_edit-seminor_sortable_columns’, ‘posts_register_sortable’ );

    ちなみに、「セミナー」の英語は「seminor」ではなく「seminar」だと思います。

    トピック投稿者 jmani007

    (@jmani007)

    Aki Hamanoさま。ご返信いただき、ありがとうございます!
    大変遅くなりまして申し訳ございません。
    ご指摘ありがとうございます!
    投稿タイプ名の[]を外し、更新してみると、
    管理画面から、以下のようなエラーが出ました。。
    どんなエラーなのか全てはわかっていませんが、
    PHPのバージョンが新しいものは受け付けないという事なんでしょうか…?

    Warning: Use of undefined constant ‘request’ – assumed ‘‘request’’ (this will throw an Error in a future version of PHP) in /home/r6528233/public_html/teternal.com/wp-content/themes/ego_woocommerce_tcd079-child/functions.php on line 382

    Warning: Use of undefined constant ‘column_orderby_custom’ – assumed ‘‘column_orderby_custom’’ (this will throw an Error in a future version of PHP) in /home/r6528233/public_html/teternal.com/wp-content/themes/ego_woocommerce_tcd079-child/functions.php on line 382

    Warning: Use of undefined constant ‘manage_edit – assumed ‘‘manage_edit’ (this will throw an Error in a future version of PHP) in /home/r6528233/public_html/teternal.com/wp-content/themes/ego_woocommerce_tcd079-child/functions.php on line 388

    Warning: Use of undefined constant seminar_sortable_columns’ – assumed ‘seminar_sortable_columns’’ (this will throw an Error in a future version of PHP) in /home/r6528233/public_html/teternal.com/wp-content/themes/ego_woocommerce_tcd079-child/functions.php on line 388

    Warning: A non-numeric value encountered in /home/r6528233/public_html/teternal.com/wp-content/themes/ego_woocommerce_tcd079-child/functions.php on line 388

    Warning: A non-numeric value encountered in /home/r6528233/public_html/teternal.com/wp-content/themes/ego_woocommerce_tcd079-child/functions.php on line 388

    Warning: Use of undefined constant ‘posts_register_sortable’ – assumed ‘‘posts_register_sortable’’ (this will throw an Error in a future version of PHP) in /home/r6528233/public_html/teternal.com/wp-content/themes/ego_woocommerce_tcd079-child/functions.php on line 388

    ※サイトヘルスの情報画面で確認したところ、↓になっております。
    PHP バージョン 7.4.33 (64ビット値をサポートしています)

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「管理画面でカスタムフィールドでの日付でソートしたい」には新たに返信することはできません。