東日本橋の制作・開発会社 プレスマンのスタッフブログ

PRESSMAN*Tech

Tech & Tips WordPress コーディング プログラミング

Admin Colmun ProのCSVエクスポートで出力される値を書き換える

一覧画面は書き換えられるけど・・・

一覧画面に表示する値を書き換えるフックはac/column/valueというhookが用意されています。 このhookを使用すると、Admin Colmunで一覧画面に値を出力する際に値を変更できます。

例えば、ユーザー一覧画面にてユーザーIDを6桁固定で表示したい場合は以下のようなコードになります。

/**
 * ユーザーIDを6桁にして一覧画面に表示
 *
 * @param $value  string
 * @param $id     int
 * @param $column AC\Column
 *
 * @return $value string
 */

function ac_filter_user_id_column_value( $value, $id, $column ){
    // 全カラム分がこの関数を通過するため、ユーザーIDのカラムか確認する
    if ( $column instanceof ACP\Column\User\ID ) {
        $value = sprintf( '%06d', $value );
    }

    return $value;
}
add_filter( 'ac/column/value', 'ac_filter_user_id_column_value', 10, 3 );

ただ、このhookを追加しただけではPro版についているデータのCSVエクスポートには対応しておらず
変更前の値が出力されてしまいます。

ac/export/value フックを発見!

どうにか書き換えるhookが用意されていないかと探していると、ac/export/valueというhookが用意されていました!

一覧画面だけでなく、このhookを利用してCSVエクスポートの値も変更しようとすると以下のようになります。

/**
 * ユーザーIDを6桁にして一覧画面に表示
 *
 * @param $value  string
 * @param $id     int
 * @param $column AC\Column
 *
 * @return $value string
 */

function ac_filter_user_id_column_value( $value, $id, $column ){
    // 全カラム分がこの関数を通過するため、ユーザーIDのカラムか確認する
    if ( $column instanceof ACP\Column\User\ID ) {
        $value = sprintf( '%06d', $value );
    }

    return $value;
}
add_filter( 'ac/column/value', 'ac_filter_user_id_column_value', 10, 3 );

/**
 * ユーザーIDを6桁にしてCSVエクスポートに出力
 *
 * @param $value   string
 * @param $post_id int
 * @param $column  AC\Column
 *
 * @return $value  string
 */

function ac_filter_user_id_column_export_value( $value, $column, $post_id ) {
    return ac_filter_user_id_column_value( $value, $post_id, $column );
}
add_filter( 'ac/export/value', 'ac_filter_user_id_column_export_value', 10, 3 );

CSVエクスポートしたユーザーIDも6桁固定になっていました!

余談

ac/column/valueとac/export/valueで渡される引数の順番が違うのは何故なのだろう・・。 引数の順番が同一なら、2つのhookから1つの関数を引っ掛けるだけになるので良いのにと思いました。

本家が直すにはバージョンアップで引数の順番を変えてリリースするしか無いと思いますが、このhookを利用しているシステムに大幅な影響が出てきてしまうので
修正されることは無いのだろうなと考えると、哀しい気持ちになります・・。
この記事をシェアする:

-Tech & Tips, WordPress, コーディング, プログラミング

Copyright© PRESSMAN*Tech , 2020 All Rights Reserved Powered by STINGER.