WordPress管理画面の投稿一覧にカスタムフィールドの列を追加した時に、値でソートできるようにする方法をご紹介いたします。
管理画面の投稿一覧にカスタムフィールドの列を追加する方法については、「WordPress管理画面の投稿一覧にカスタムフィールドの列を追加する方法」をご参照ください。
WordPress管理画面の投稿一覧にカスタムフィールドの列を追加した際に値でソートできるようにする方法
今回は「schedule_date」という日付を入れるカスタムフィールドの列を追加している前提での内容となります。
functions.phpに以下のようなコードを追加することで、カスタムフィールドの列でもソートが可能になります。”schedule_date”の部分は適宜変更してください。
//カスタムフィールドの列でソートを有効化
function my_sortable_columns($sortable_column) {
$sortable_column['schedule_date'] = 'schedule_date';
return $sortable_column;
}
add_filter('manage_edit-post_sortable_columns', 'my_sortable_columns');
//カスタムフィールドでソートする時のパラメータ
function my_columns_sort_param($vars) {
if (isset($vars['orderby']) && 'schedule_date' === $vars['orderby']) {
$vars = array_merge(
$vars,
array(
'meta_key' => 'schedule_date',
'orderby' => 'meta_value', //値が数値の場合は「meta_value_num」
)
);
}
return $vars;
}
add_filter('request', 'my_columns_sort_param');
カスタム投稿タイプの場合
カスタム投稿タイプの投稿一覧の場合は、以下のように「manage_edit-post_sortable_columns」を「manage_edit-【投稿タイプ名】_sortable_columns」にします。
//カスタムフィールドの列でソートを有効化
function my_sortable_columns($sortable_column) {
$sortable_column['schedule_date'] = 'schedule_date';
return $sortable_column;
}
add_filter('manage_edit-【投稿タイプ名】_sortable_columns', 'my_sortable_columns');
//カスタムフィールドでソートする時のパラメータ
function my_columns_sort_param($vars) {
if (isset($vars['orderby']) && 'schedule_date' === $vars['orderby']) {
$vars = array_merge(
$vars,
array(
'meta_key' => 'schedule_date',
'orderby' => 'meta_value',
)
);
}
return $vars;
}
add_filter('request', 'my_columns_sort_param');
あとがき
カスタムフィールドを使っているサイトでは、管理画面の投稿一覧にもカスタムフィールドの列を追加することはよくあると思います。せっかく列を追加するので、値でソートできた方が便利ですね。