WordPress管理画面の投稿一覧にカスタムフィールドの列を追加した際に値でソートできるようにする方法

WordPress管理画面の投稿一覧にカスタムフィールドの列を追加した際に値でソートできるようにする方法

WordPress管理画面の投稿一覧にカスタムフィールドの列を追加した際に値でソートできるようにする方法

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');

あとがき

カスタムフィールドを使っているサイトでは、管理画面の投稿一覧にもカスタムフィールドの列を追加することはよくあると思います。せっかく列を追加するので、値でソートできた方が便利ですね。

この記事が気に入ったら
いいね!してね♪

Twitter で

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です