-
Stefan Weseloh verdient 100 key-points
100 Points – Lektion abgeschlossen!!
add_action('admin_init', function() { if (!current_user_can('manage_options')) return; $tax = 'category'; $terms = get_terms(['taxonomy' => $tax, 'hide_empty' => false]); if (is_wp_error($terms)) return; $normalized = []; $merged = 0; $deleted = 0; foreach ($terms as $term) { $clean = preg_replace('/[–—−]/u', '-', $term->name); // alle Sonder-Bindestriche → normal $clean = trim(preg_replace('/\s+/', ' ', $clean)); // Wenn der Name geändert werden muss → updaten if ($clean !== $term->name) { wp_update_term($term->term_id, $tax, [ 'name' => $clean, 'slug' => sanitize_title($clean), ]); } // Prüfen, ob Name schon existiert (Duplikat) $key = mb_strtolower($clean); if (!isset($normalized[$key])) { $normalized[$key] = $term->term_id; } else { // Beiträge von Duplikat → Hauptkategorie übertragen $dupe_id = $term->term_id; $main_id = $normalized[$key]; $posts = get_posts([ 'post_type' => 'any', 'posts_per_page' => -1, 'tax_query' => [[ 'taxonomy' => $tax, 'field' => 'term_id', 'terms' => [$dupe_id], ]] ]); foreach ($posts as $p) { $terms_post = wp_get_post_terms($p->ID, $tax, ['fields'=>'ids']); $terms_post = array_diff($terms_post, [$dupe_id]); $terms_post[] = $main_id; wp_set_post_terms($p->ID, $terms_post, $tax, false); } // Duplikat löschen wp_delete_term($dupe_id, $tax); $deleted++; $merged++; } } echo '
Please confirm you want to block this member.
You will no longer be able to:
Please note: This action will also remove this member from your connections and send a report to the site admin. Please allow a few minutes for this process to complete.