Written by Anonymous
/**
* パターンカテゴリーカラムをソート可能にする
*/
add_filter('manage_edit-wp_block_sortable_columns', function ($columns) {
$columns['taxonomy-wp_pattern_category'] = 'pattern_category';
return $columns;
});
/**
* ソート処理
*/
add_action('pre_get_posts', function ($query) {
if (!is_admin() || !$query->is_main_query()) {
return;
}
// 対象のポストタイプとソートキーを確認
if ($query->get('post_type') === 'wp_block' && $query->get('orderby') === 'pattern_category') {
add_filter('posts_clauses', function ($clauses) use ($query) {
global $wpdb;
$order = strtoupper($query->get('order')) === 'ASC' ? 'ASC' : 'DESC';
$clauses['join'] .= "
LEFT JOIN {$wpdb->term_relationships} AS tr ON ({$wpdb->posts}.ID = tr.object_id)
LEFT JOIN {$wpdb->term_taxonomy} AS tt ON (tr.term_taxonomy_id = tt.term_taxonomy_id AND tt.taxonomy = 'wp_pattern_category')
LEFT JOIN {$wpdb->terms} AS t ON (tt.term_id = t.term_id)
";
$clauses['orderby'] = "t.name {$order}";
$clauses['groupby'] = "{$wpdb->posts}.ID";
return $clauses;
});
}
});