- 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');
ブログ一覧へ