web-dev-qa-db-ja.com

URLを変更したmedia_sideload_image

このようなパスで media_sideload_image を使用しようとすると http://placekitten.com/300/200 、エラーになります。

ファイルタイプやファイル名がわからないからです。画像をアップロードする最良の方法は?

1
Jens Törnell

そうです、デフォルトでは、wp_handle_sideload()はサイドロードの処理を続けるためにURIに有効な拡張子を必要とするからです。つまり、あなたのロールが ' unfiltered_upload 'という機能を持っていない限り、それはデフォルトで管理者だけに与えられます。

サイドロードを開始する予定のユーザーロールにこの機能を付与するのが適切で安全であると思われる場合は、次のようにします。

if ( $role = get_role( $role_name ) ) $role->add_cap( 'unfiltered_upload' );

これをfunctions.phpから1回実行し、次にコメントアウトを実行します(DB内の役割を変更する必要があるのは1回だけです)。

注:あなたのサイトではユーザーができることができる最も危険なこと _から1層のセキュリティが剥がれてしまうので、このアプローチを本当にお勧めするとは言えません。ファイル。これを行う場合は、ユーザーに公開する前に画像ファイルをサニタイズし、アップロード先のURLを直接渡さないようにしてください。そうしないと、古いWebシェルをアップロードする可能性があります。ハッキング

警告されました。

2
Tom Auger