プラグインなしでWordPressの画像入れ替えをする

WordPressで月10万円稼ぐなら海外FXアフィリエイト

同名メディアファイルの入れ替え・差し替えができないWordPress

WordPressのメディアライブラリから同じファイル名のメディアをアップロードすると

ファイル名の末尾に-1などの連番が勝手に付けられて上書き保存ができません。

画像の入れ替えをできるようにするプラグインとしてはEnable Media Replaceが有名ですが、

Enable Media Replaceで画像を入れ替えるとfunctions.phpを使ったWebPへの自動変換ができず、



WebPを作るために画像を一旦削除してから再アップロードしていました。

さすがにそれは面倒なので、プラグインを使わずに画像を入れ替える方法を検索したらわりとアッサリ見つかったので共有します。

プラグインなしで同名の画像アップロード時に入れ替えるコード

以下のURLの解答3のコードをfunctions.phpに記述すると同名の画像を上書きできます。

theme development - How to force Media manager to overwrite files of same name? - WordPress Development Stack Exchange

匿名関数にして今風の書き方に変更すると以下。


add_filter('sanitize_file_name', function ($name) {
    $args = [
        'numberposts'   => -1,
        'post_type'     => 'attachment',
        'meta_query' => [
            [
                'key' => '_wp_attached_file',
                'value' => $name,
                'compare' => '='
            ]
        ]
    ];
    $attachments_to_remove = get_posts($args);

    foreach ($attachments_to_remove as $attach) {
        wp_delete_attachment($attach->ID, true);
    }

    return $name;
});

コードの中身としては

  • アップロードした画像のファイル名をチェックするフィルター、sanitize_file_name内で
  • アップロードした画像ファイル名と一致する既存のメディアファイルを全部削除する

と言うコードになっています。

meta_queryのcompare部分は元のソースコードでは部分一致のLIKE検索になっていますが、

完全一致検索で問題ないので=に変更しました。

余談: Google検索でEnable Media Replaceを弾く

この記事には『プラグインなし』で検索してたどり着く人が多いのですが、

試しに『プラグインなし』でGoogle検索するとプラグインEnable Media Replace絡みの記事がめちゃくちゃ引っかかりました。

Googleは『-』(ハイフン・マイナス)記号を単語の頭に付けるとその単語を含まない記事の検索ができます。

ただしEnable Media Replaceはスペースを含むので、『"』で囲む必要アリ。

つまりEnable Media Replaceを「含まない」記事を検索するには『-"enable media replace"』とすればOK。

例↓

まぁこの記事のように「Enable Media Replaceを使わない」と言う意思表明をしている記事も引っかからなくなるんですが。

WordPress関連記事



WordPressで月10万円稼ぐなら海外FXアフィリエイト

About site

スマートフォンで海外FX&ビットコイン取引をする方法の解説。TariTali推し。

search

Categories