WordPress: Wie entferne ich die Kategorie „nicht kategorisiert“ aus allen Beiträgen in großen Mengen?

Lesezeit: 5 Minuten

Benutzer-Avatar
HandarbeitNYC.com

Szenario:

Ich habe 1000 Beiträge mit der Kategorie „Nicht kategorisiert“, und ich möchte „Nicht kategorisiert“ aus all diesen Beiträgen entfernen und eine andere Kategorie für diese Beiträge festlegen.

Mit anderen Worten – nehmen Sie alle nicht kategorisierten Beiträge und verschieben Sie sie auf einen Schlag in eine andere Kategorie.

Kann ich dies in großen Mengen tun, ohne jeden Beitrag einzeln durchzugehen?

  • Benennen Sie einfach Ihre Kategorie unter “Beiträge -> Kategorien” in den gewünschten Namen um.

    – die Hand von NOD

    7. März 2020 um 16:51 Uhr

Benutzer-Avatar
Shawn Hayes

Was Sie suchen, ist der WordPress-Masseneditor.

  1. Gehen Sie zu Beiträge > Kategorien > Nicht kategorisiert

  2. Klicken Sie oben rechts auf die Registerkarte „Bildschirmoptionen“ und ändern Sie dann „Anzahl der Elemente pro Seite:“ auf 1000.

  3. Wählen Sie nun alle Elemente auf der Seite aus und klicken Sie auf das Dropdown-Menü „Massenaktionen“ über „Alle auswählen“ und wählen Sie die Option „Bearbeiten“.

  4. Klicken Sie auf Anwenden

  5. Klicken Sie im Bulk-Editor auf die „neue Kategorie“, in die Sie alle Beiträge ändern möchten, und klicken Sie auf „Aktualisieren“.

Nachdem Sie alle Beiträge zur „neuen Kategorie“ hinzugefügt haben, müssen Sie die Kategorie „Nicht kategorisiert“ entfernen. Um dies zu tun:

  1. Gehen Sie zu Einstellungen > Schreiben
  2. Ändern Sie nun die „Standard-Post-Kategorie“ in etwas anderes als „Nicht kategorisiert“.
  3. Gehen Sie zurück zu Beiträge > Kategorien und löschen Sie die Kategorie „Nicht kategorisiert“.
  4. Jetzt können Sie die Kategorie „Nicht kategorisiert“ erneut erstellen, wenn Sie möchten, und sie auf die Standardeinstellung zurücksetzen.

Sobald Sie die Kategorie „Nicht kategorisiert“ löschen, wird sie aus allen Ihren Beiträgen entfernt.

Wenn Sie einige Posts haben, die Sie in „Nicht kategorisiert“ behalten möchten, erstellen Sie eine neue Kategorie namens „temp“ und weisen Sie alle Posts, die Sie behalten möchten, dieser Kategorie zu. Sobald Sie „Nicht kategorisiert“ gelöscht haben, erstellen Sie es erneut und weisen Sie die Beiträge in „temp“ wieder dieser Kategorie zu.

Wie Sie festgestellt haben, erlaubt der Bulk-Editor nur das HINZUFÜGEN von Kategorien zu mehreren Posts – es ist nicht möglich, Kategorien aus mehreren Posts zu ENTFERNEN. Die beste Option, die ich gefunden habe, war, dieses Plug-in vorübergehend zu installieren https://wordpress.org/plugins/bulk-remove-posts-from-category/ (im WP-Repository), das die Möglichkeit hinzufügt, Kategorien aus mehreren Beiträgen mit derselben Massenbearbeitungsmethode zu ENTFERNEN. es fügt einfach ein zusätzliches Kontrollkästchen „Entfernen“ unter der Kategorieliste hinzu.

Die nicht kategorisierte Kategorie hat eine ID von 1. Wie unser Arbeitsablauf aussehen wird,

  • Erhalten Sie alle Beiträge, die der nicht kategorisierten Kategorie zugeordnet sind.

  • Wir erhalten nur Beitrags-IDs, wodurch unsere Abfrage auf einer Website mit Tausenden von Beiträgen bis zu 1000-mal schneller wird. Dies trägt auch dazu bei, dass bei unserer Abfrage keine Zeitüberschreitung auftritt oder ein schwerwiegender Fehler bei der maximalen Speicherkapazität auftritt.

Verwenden wp_set_object_terms() um unsere neuen tems zu entfernen und einzustellen

HINWEIS:

Der folgende Code erfordert PHP 5.4+ und alle Änderungen sind nicht rückgängig zu machen, sichern Sie also zuerst Ihre Datenbank

$args = [
    'nopaging' => true, // Gets all posts
    'cat' => 1, // Only gets posts assigned to category 1 which is the uncategorized category
    'fields' => 'ids', // Only get post ID's, make query up 1000 times faster on huge databases
];
$q = get_posts( $args );

if ( $q ) {

    foreach ( $q as $v ) {
        // Get all the post categories
        $categories = get_the_category( $v );
        $category_ids = []; 
        foreach ( $categories as $category ) {
            // Replace all uncategorized category instances with our new category id and build new array
            if ( $category->term_id == 1 ) {
                $category_ids[] = (int) 21; // REPLACE WITH THE CORRECT NEW CATEGORY ID
            } else { 
                $category_ids[] = (int) $category->term_id;
            }
        } 
        // Set our new categories to the post
        if ( $category_ids ) // Unnecessary check for categories, but just in case should something fail
            wp_set_object_terms( $v, $category_ids, 'category' );
    }

}

Achtung, nirgendwo haben wir das geändert $post global oder postdata einrichten, damit wir nicht anrufen müssen wp_reset_postdata() 🙂

WordPress speichert die Eltern/Kind-Beziehungen zwischen Kategorien und Beiträgen in der wp_term_relationships Tabelle, die dokumentiert ist hier. Wie @Pieter Goosen feststellte, hat die Kategorie „Nicht kategorisiert“ eine ID von 1. Also kannst du Sichern Sie Ihre SQL-Datenbankund verbinden Sie sich dann mit einem SQL-Befehlszeilenclient (sudo mysql wordpress funktioniert für mich), und führen Sie diesen SQL-Befehl aus:

delete from wp_term_relationships where term_taxonomy_id = 1;

Wenn Sie umziehen möchten alle nicht kategorisierte Beiträge in eine andere Kategorie, die Sie verwenden können Massenbewegung Plugin.

Wenn Sie eine Kategorie aus entfernen möchten etwas Beiträge, Bulk-Entfernung von Beiträgen aus der Kategorie könnte eine bessere Option sein.

Benutzer-Avatar
Benutzer13549917

Wie Melebius sagte, ist es viel, viel schneller (und einfacher) zu verwenden https://wordpress.org/plugins/bulk-remove-posts-from-category/ ! Es funktioniert sowohl mit Produkten als auch mit Beiträgen. Brillant!

Benutzer-Avatar
HandarbeitNYC.com

Sie können dies zur Datei functions.php Ihres Themes hinzufügen, dann jede Seite Ihrer Website einmal aktualisieren und dann die Funktion entfernen.

Nutzung auf eigene Gefahr und vorher Backup der Datenbank! Es gibt hier keine UNDO-Taste.

<?php
$args = array(
    'posts_per_page' => -1
);

$myposts = get_posts( $args );
foreach ( $myposts as $post ) :
    setup_postdata( $post );

    $categories = get_the_category();
    $catcount = count($categories);
    $postid = $post->ID;

    $catlist = array();

    //Building a list of categories for each post and EXCLUDING "uncategorized"

    foreach( $categories as $category ) {
        if($category->name == 'Uncategorized') {
            continue;
        }

        $catlist[] = $category->term_id;
    }

    // If there's just one category, and that category is "Uncategorized", move the category to one of your choosing
    if($catcount == 1 && $categories[0]->name == "Uncategorized") {
        // This is the category ID that you want to move uncategorized posts to
        $catlist = array(189);
    }

    wp_set_object_terms( $postid, $catlist, 'category' );


endforeach; 
wp_reset_postdata(); 
?>

  • Das ist extrem hart zu laufen und sehr teuer. Ich werde nicht überrascht sein, wenn es nach ein paar hundert Beiträgen abläuft

    – Pieter Goosen

    23. Juli 2015 um 9:09 Uhr

1365760cookie-checkWordPress: Wie entferne ich die Kategorie „nicht kategorisiert“ aus allen Beiträgen in großen Mengen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy