• TOP
  • PHP
  • 管理画面にACFで設定したカスタムフィールドを追加して並び替え

管理画面にACFで設定したカスタムフィールドを追加して並び替え

カスタムフィールドの列を追加

// カスタムフィールドカラムを追加する
function custom_admin_columns($columns)
{
  $newColumn = array('custom_field' => 'カラム表示名');
  $insertIndex = 3; // 追加したい位置を指定する

  $temp = array();
  $i = 0;
  foreach ($columns as $key => $value) {
    if ($i === $insertIndex) {
      $temp = array_merge($temp, $newColumn);
    }
    $temp[$key] = $value;
    $i++;
  }
  if ($insertIndex === $i) {
    $temp = array_merge($temp, $newColumn);
  }
  $columns = $temp;
  return $columns;
}
add_filter('manage_edit-[カスタム投稿]_columns', 'custom_admin_columns');

// カスタムフィールドカラムの内容を表示する
function custom_admin_column_content($column, $post_id)
{
  if ($column == 'custom_field') {
    $custom_field_value = get_field('custom_field_name', $post_id); // カスタムフィールドの名前を指定する
    if (isset($custom_field_value) && $custom_field_value) {
      echo $custom_field_value;
    } else {
      echo __('None');
    }
  }
}
add_action('manage_[カスタム投稿]_posts_custom_column', 'custom_admin_column_content', 10, 2);

カスタムフィールドでの並び替えを実装

// カスタムフィールドでの並べ替えを実装する
function custom_sortable_columns($columns)
{
  $columns['custom_field'] = 'custom_field'; // カスタムフィールドのキーを指定する
  return $columns;
}
add_filter('manage_edit-[カスタム投稿]_sortable_columns', 'custom_sortable_columns');

// カスタムフィールドでの並べ替えのクエリを設定する
function custom_orderby($query)
{
  if (!is_admin() || !$query->is_main_query()) {
    return;
  }
  if (is_post_type_archive('[カスタム投稿]')) {
    if ($query->get('orderby') == 'custom_field') {
      $query->set('meta_key', 'custom_field_name'); // カスタムフィールドの名前を指定する
      $query->set('orderby', 'meta_value');
    }
  }
}
add_action('pre_get_posts', 'custom_orderby');

ブログ一覧へ

ご依頼・お問い合わせはこちらからcontact

WordPressサイト・テーマカスタマイズ、既存サイトの改修・ページの追加、ランディングページ制作、ECサイト(WordPress・Shopfy・その他カートASP)等の制作を承っております。

まだどんなホームページを作るか決まってない状態でのご相談でも大丈夫です、一緒に考えて行きましょう!

お問い合わせフォームへ