gblsm様、コメントありがとうございます。
正しく利用出来ているのか分かりませんが、試してみたところアップロード後にHTTPエラーが発生します(アップロード中にエラーが発生しました。後ほど再度お試しください。が表示される)
add_filter('wp_handle_upload', 'edit_images');
add_action( 'wp_handle_upload', 'edit_images' );
function edit_images($file) {
// ここでツール呼び出し(アップロードしたファイルを上書き)
return $file;
}
おそらく、アップロードしたファイルが完全に保存される前にツールで編集されるためにエラーが発生するのかと思います。
ただ、エラーは出たものの更新するとアップロードは完了(サムネイルも生成)しており、ツールによる置き換えも成功していました。
しかし、先ほどのエラーが発生しないように、ツールの実行を通常のアップロード完了後(アップロード+保存後)にしたいと考えています。
流石に都合の良い動作は難しいでしょうか?
>おそらく、アップロードしたファイルが完全に保存される前にツールで編集されるためにエラーが発生するのかと思います。
と思ったのですが、ツール呼び出し時に使ったshell_execが原因でエラーを吐いているっぽいです。
エラーの原因ではないかもしれませんが add_action() は間違いですね、これはフィルターですから。
検証してみたところ、フックした関数内で例えば echo でhtmlコードを表示させると、その「httpエラー」が起きます。でも例えばカスタムフィールドに値を書き込むだけなら正常でした。
gblsm様の言う通り、echo無しで実行すればエラーは発生しませんでした。
また、画像の置き換えも正常に出力出来ました。
テスト例
function test_command( $file ) {
// タイプ指定
if ( $file['type'] == 'image/jpeg' OR $file['type'] == 'image/png') {
// エラーが無い場合
if ( ! is_wp_error( $image ) ){
$output = shell_exec(" ここにコマンド ");
}
}
return $file;
}
add_filter( 'wp_handle_upload', 'test_command');