it-swarm.com.de

So entfernen Sie doppelte benutzerdefinierte Felder?

Ich habe mein Blog von Blogspot auf WordPress migriert. Dann habe ich festgestellt, dass viele der Posts doppelte benutzerdefinierte Felder enthalten. Wie blogger_author, blogger_permalink und blogger_blog werden auch blogger_blog bis zu fünfmal dupliziert. Wie kann ich die doppelten benutzerdefinierten Felder entfernen?

1
Sai

Sie können mit einer SQL-Anweisung wie der folgenden direkt aus der Datenbank löschen:

delete from wp_postmeta
where meta_id in (
       select *
       from (
               select meta_id
               from wp_postmeta a
               where a.meta_key = 'blogger_blog'
               and meta_id not in (
                       select min(meta_id)
                       from wp_postmeta b
                       where b.post_id = a.post_id
                       and b.meta_key = 'blogger_blog'
               )
       ) as x
);

Vergessen Sie nicht, den Namen des meta_key an beiden Stellen zu ändern, wenn Sie Duplikate für ein anderes benutzerdefiniertes Feld löschen möchten.

oder Sie können ein PHP-Skript dafür verwenden. Beispiel:

 <?php
define('WP_USE_THEMES', false);
require('wp-blog-header.php');

    define( 'WP_DEBUG_DISPLAY', true ); 
    ini_set( 'display_errors', true );
    $allposts = get_posts('numberposts=-1&post_type=post&post_status=any');
    $keys = array('blogger_blog', 'blogger_author', 'blogger_permalink');
    foreach ( $keys as $key ) {
        foreach( $allposts as $postinfo) {
            // Fetch array of custom field values
            $postmeta = get_post_meta($postinfo->ID, $key);

            if (!empty($postmeta) ) {
                // Delete the custom field for this post (all occurrences)
                delete_post_meta($postinfo->ID, $key);

                // Insert one and only one custom field
                update_post_meta($postinfo->ID, $key, $postmeta[0]);
            }
        }
    }
?>
6
windyjonas

Es sollte beachtet werden, dass dies alle doppelten Schlüssel löscht, nicht doppelten Inhalt . Wenn Sie also mehrere benutzerdefinierte Felder mit dem Schlüssel "blogger_author" haben, die sich voneinander unterscheiden , wird nur eines davon gespeichert. Nur damit Sie sich bewusst sind.

0
TheJester12