Skip to content

Instantly share code, notes, and snippets.

@yukihirai0505
Created January 24, 2019 08:28
Show Gist options
  • Save yukihirai0505/fdca5530fc4bcb32b1072ffaca789ffd to your computer and use it in GitHub Desktop.
Save yukihirai0505/fdca5530fc4bcb32b1072ffaca789ffd to your computer and use it in GitHub Desktop.
WP Offload S3 Liteを導入したときに既存の画像をS3にアップロードしてpostmetaも追加する

まずS3にファイルをごっそり移動 すでにプラグイン導入後にS3登録済みの画像も一緒に登録されるがおかまいなし

aws configure
aws s3 sync wp-content/uploads/ s3://your-bucket-name/wp-content/uploads/

この記事によるとwpコマンドを使用するのが美しいとあるがいかんせん遅い -> より美しくWP Offload S3 Liteに既存のメディアを登録する方法

結果、SQLでやっちゃうのが早い

INSERT INTO wp_postmeta
(post_id, meta_key, meta_value)
SELECT 
            pm.post_id,
            'amazonS3_info',
            CONCAT('a:4:{s:8:"provider";s:3:"aws";s:6:"region";s:0:"";s:6:"bucket";s:16:"your-bucket-name";s:3:"key";s:',
            LENGTH(pm.meta_value) + LENGTH('wp-content/uploads/'),
            ':"wp-content/uploads/',
            pm.meta_value,
            '";}')
FROM
    wp_postmeta pm
        LEFT JOIN
    wp_postmeta am ON pm.post_id = am.post_id
        AND am.meta_key = 'amazonS3_info'
WHERE
    pm.meta_key = '_wp_attached_file'
        AND am.meta_id IS NULL;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment