sai
  • 0
Новичок

Как удалить повторяющиеся настраиваемые поля?

  • 0

Я перенес свой блог с blogspot на WordPress. Затем я заметил, что многие сообщения содержат повторяющиеся настраиваемые поля. Как и blogger_author, blogger_permalink, blogger_blog дублируются до 5 раз. Как удалить повторяющиеся настраиваемые поля?

Share
  1. Вы можете удалить непосредственно из базы данных, используя оператор SQL, например:

    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
    );
    

    Не забудьте изменить имя meta_key в обоих местах, если вы хотите удалить дубликаты для другого настраиваемого поля.

    или вы можете использовать для этого php-скрипт. Пример:

     <?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]);
                }
            }
        }
    ?>
    
    • 0
  2. Следует отметить, что при этом удаляются все повторяющиеся ключи, а не дублирующийся контент. Таким образом, если у вас есть несколько настраиваемых полей с разными ключами blogger_author, будет сохранено только одно из них. Просто чтобы вы были в курсе.

    • 0

Оставить ответ

You must login to add an answer.