MySQL用一张表交换另一张表?

时间:2015-07-01 作者:Adam Bell

因此,我在WordPress网站上遇到了一个情况,我必须交换我的特色图片的位置。多亏了多个帖子缩略图插件,我每篇帖子都有两个,但现在无论第一个特色图片是什么,都需要第二个,无论第二个是什么,都需要第一个。

所以已经有300篇帖子了,所以手动调出它们会很费时。我想知道是否有更好的方法来做到这一点,使用MySQL中的某种语句来交换这两个。有人知道这样做的方法吗?

1 个回复
最合适的回答,由SO网友:Frank P. Walentynowicz 整理而成

创建php脚本(fpw-swap-thumbnails.php ) 使用以下代码并将其放在站点的根目录中:

<?php
// load WordPress environment
require( \'wp-load.php\' );

$args = array(
    \'posts_per_page\' => -1,
    \'post_type\' => array( \'post\', \'page\' ),
    \'post_status\' => \'publish\'
);

// get all published posts of type specified in $args
$posts = get_posts( $args );

foreach ( $posts as $post ) {
    // get thumbnails ids
    $thmbsArray = array(
        get_post_meta( $post->ID, \'_thumbnail_id\', true ),
        get_post_meta( $post->ID, \'post_secondary-image_thumbnail_id\', true )
    ); 
    // if both thumbnails exist then swap their values
    if ( ( \'\' != $thmbsArray[ 0 ] ) && ( \'\' != $thmbsArray[ 1 ] ) ) {
        update_post_meta( $post->ID, \'_thumbnail_id\', $thmbsArray[ 1 ] );
        update_post_meta( $post->ID, \'post_secondary-image_thumbnail_id\', $thmbsArray[ 0 ] );
    }
}
?>
NOTE: 在里面post_secondary-image_thumbnail_id 代替secondary-image 使用您在中注册的次映像id$args 将任何额外的帖子类型添加到post_type 大堆

备份数据库(为了安全起见)。执行脚本。检查结果。删除脚本。

结束