クリーンアップアップロードフォルダー、メディアライブラリのデータベース構造


10

私は、Blogger.comから始まり、自己ホスト型のWordPress 2.1、2.3、そして現在3.0に移行した古いブログのアップグレードとクリーンアップを行っています。投稿内の画像は散在しています。それらのほとんどはにありますが、/wp-content/すべて/wp-content/uploads/またはにありません/wp-content/uploads/year/month/。他のユーザーはまだblogger.com画像サーバーを参照しています。すべてをに統合したいのです/wp-content/uploads/year/month/が、「正しい」場所だと思いますか。これにより、後のアップグレードが容易になります。

これを行う最良の方法は何ですか?メタデータも更新したいので、メディアライブラリですべて管理できます。このドキュメントは見つかりませんでした。見逃した場合は、申し訳ありませんが指摘してください。

もちろん、私は古い場所から新しい場所へのリダイレクトを提供します。これを行う最良の方法は何ですか?404.phpプラグインのテンプレート?ロギングを追加して、参照ページを見つけて修正できるようにします。

(この質問は、元々WordPressサポートフォーラムで質問されましたが、そこで役立つ回答は得られませんでした)。


あなたは仕事をするプラグインを探していますか?
10

ジャン?問題に関するフィードバックはありますか?あなたを喜ばせる答えはありませんか?役立つコメントはありませんか?
2010

ある種のメディアバルクエディターが役立つことに同意します。異なるフォルダーからメディアをインポートし、いくつかのルールに従ってそれらをすばやく移動できるもの。私は実際にこれに取り組むかもしれません。
noio

回答:


7

W3-Total Cacheには、すべての投稿をスキャンして外部画像をメディアライブラリにインポートし、パスを新しい場所に変更する機能があります。

スクリーンショットを見る

代替テキスト


2

正しい場所は、私が言う現在の設定です。したがって、1つのアップロードフォルダー(年/月のサブフォルダーではなく)を使用する場合は、そのフォルダーを使用します(非常にいっぱいになる可能性がありますが、並べ替えが簡単になります。したがって、すべてのファイルを年/月のサブディレクトリからアップロードディレクトリに移動し、URLを変更するだけです。 -データベース内のパスは通常、ジョブを実行します。

すべてが1つのフォルダーにある(そしてソートされている)後、フォルダーのデザインを再度変更し、データベースから日付を読み取るPHPスクリプトを使用して、ファイルを正しいディレクトリに移動できます。まったく同じスクリプトでも、URLパスを再度採用する必要があります。

それは、マイクが提案したまったく同じスクリプトのようなものです。

現在、WP UIは手動でファイルを移動または名前変更することをサポートしていないため、独自のコードにバインドされています。とにかく、バッチには意味があります。

既存および関連プラグイン

  • サーバーから追加(Wordpressプラグイン) -「サーバーから追加」は、WebサーバーファイルシステムからWordPressアップロードマネージャーにメディアとファイルをインポートできるクイックプラグインです。

1

@Jan Fabry:おそらく、Bloggerがホストする画像とwp-content以外の画像など、各ケースに個別に取り組む必要があります。

Bloggerからインポートするためのプラグインを次に示します。しばらく更新されていませんが、機能するか、少なくとも使用できるコードがある可能性があります。

まだ機能する場合と機能しない場合がある古いプラグインもあります。

それ以上に、ファイルをスキャンして埋め込み画像のURLを探して投稿をスキャンし、交差したリストを作成して、ファイルを移動し、投稿内の参照を更新するPHPスクリプトを記述するだけでよいと思います。または、多分あなたは幸運になるでしょう、そしてそのプラグインはまだ機能し、あなたのためにそれをします!

幸運を。


0

たぶん(そしてそれは将来の読者のためだけです-それは古いQです) 'post_type' => 'attachment'をすべてリストし、そこから分離することができます。つまり、投稿をフェッチし、さまざまな場所を1つの配列に保存します。次に、これを整理して、画像が置かれている場所の概要を取得します...


1
@kaiser:古い質問かもしれませんが、私はまだその一部に取り組んでいるので、すべての提案を歓迎します!答えをすぐに書き留めておきたいと思います。
Jan Fabry

@Jan:私はすべての 'post_type' => 'attachment'を呼び出してから場所を呼び出し(これがquery_varsのどこかに格納されている場合)、事前定義された(最初の空の)配列に存在しない場合は、それをプッシュしますそこ。結果として、array_intersectまたは同様のものを試して、異なる場所を返すだけにします。これは、コンテンツがどこに拡散されているかを見つける方法についての、最初の簡単なダーティ/ラフな考えです。これまでのところ、結果やリダイレクトで何をするのか
わかり

...さまざまな添付ファイルの場所を取得し、それらを移動してデータベース内の場所を更新することは可能だと思います。リダイレクトについてはあまり気にしません。投稿はそれを知っています。データベースがそれを知っていて、誰がポストアタッチメントのインデックス作成を本当に気にかけているのですか。画像(または添付ファイルテンプレート)を直接/ホットリンクしないで、代わりに含まれている投稿にリンクすることをお勧めします。個人的には、添付ファイルテンプレートを使用したり、投稿内の添付ファイルへのリンク(ライトボックスなどは別)を設定したことはありません。
カイザー、2013年

@kaiser:現在、最初にリダイレクトを作成し、すべての「失われた」イメージを/wp-content/uploads/moved/ディレクトリの下に移動しました。このように、すべての投稿は、古い場所を参照している投稿であっても機能し続け、他のディレクトリも明確になります(これが私にとって最大の問題でした。WordPressに属するものとそうでないものが非常に不明確でした)。現在、既存の添付ファイルを更新し、まだ添付ファイルとして追加されていない画像を追加しています。
Jan Fabry

@Jan:「現在、既存の添付ファイルを更新し、まだ添付ファイルとして追加されていない画像を追加しています。」手ごと-少しずつ?正確にはわかりませんが、検索エンジンが新しい場所を知らない限り、リダイレクトだけが必要だと思います。残りはdb-entriesに依存する必要があります。違う?
カイザー、2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.