web-dev-qa-db-ja.com

注目の画像を投稿にインポートすると、その画像が複製されます

私は約2,000の投稿のための同じ特色にされたイメージを輸入するのにwp cliを使用しています。画像が複製されるかどうか、またはWordPressが画像がすでにメディアライブラリに存在することに気付いてそれを使用するかどうかを確認するために、いくつかテストを行いました。残念ながらそれはただイメージを複製するだけです。

私が使っているコマンド:wp media import http://example.com/wp-content/uploads/sites/30/2016/04/picture_name.jpg --post_id=x --title="Pluto Mosaic" --featured_image --url=mysite.example.com

同じ画像を2,000回インポートしなくてもこれを実行する別の方法はありますか?

ありがとう、j03

2
j03

wp media importを使って画像を一度インポートすることができます。添付ファイルのIDを作成したら、実行できます。

wp post list --post_type=post --format=ids | xargs -0 -d ' ' -I % wp post meta add % _thumbnail_id <thumbnail-id>

<thumbnail-id>を実際の添付ファイルIDに置き換えてください。

2

投稿ごとにこれを行うためのphpスクリプトを作成できるはずです。すべての投稿を取得するにはクエリを実行してから、その設定をループして各投稿のおすすめ画像を目的の画像に設定する必要があります。

この質問 あなたが始められるようにすべき特定のコードを持っています。

0
Aric Watson

これ 私のために非常にうまく働いた。

# Line 1
ATT_ID="$(wp media import ~/Pictures/swimming.jpg --porcelain)"
# Line 2
wp post list --post_type=post --format=ids | \
# Line 3
xargs -0 -d ' ' -I % wp post meta add % \_thumbnail_id $ATT_ID

チュートリアル:

--porcelainオプションにより、新しい添付ファイルIDが出力されるため、この行はインポートを実行し、$ATT_ID Shell変数をインポートされたイメージIDに設定しますwp post list --post_type=post --format=idsは、投稿IDのリストを取得しますスペースで区切られた文字列形式で、これをxargsxargsに渡します。各IDで動作し、各投稿IDの投稿メタ_thumbnail_idフィールドを設定します。 xargsオプションは、区切り文字としてスペースを設定します。

0
Tessaracter