// カスタムフィールドカラムを追加する
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');