一覧画面は書き換えられるけど・・・
一覧画面に表示する値を書き換えるフックは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 );
変更前の値が出力されてしまいます。
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 );
余談
ac/column/valueとac/export/valueで渡される引数の順番が違うのは何故なのだろう・・。 引数の順番が同一なら、2つのhookから1つの関数を引っ掛けるだけになるので良いのにと思いました。本家が直すにはバージョンアップで引数の順番を変えてリリースするしか無いと思いますが、このhookを利用しているシステムに大幅な影響が出てきてしまうので
修正されることは無いのだろうなと考えると、哀しい気持ちになります・・。