PDF専用の "document"というカスタム投稿タイプの特定のフォルダへのアップロードをフィルタ処理する必要があります。
これまでのところ、私は持っています:
function custom_upload_directory( $args ) {
$base_directory = '/home/xxx/my_uploadfolder';
$base_url = 'http://xxxx/wp-content/uploads/my_uploadfolder';
$id = $_REQUEST['post_id'];
$parent = get_post( $id )->post_parent;
// Check the post-type of the current post
if( "document" == get_post_type( $id ) || "document" == get_post_type( $parent ) ) {
$args['path'] = $base_directory;
$args['url'] = $base_url;
$args['basedir'] = $base_directory;
$args['baseurl'] = $base_url;
}
return $args;
}
add_filter( 'upload_dir', 'custom_upload_directory' );
これは動作しますが、いくつか問題があります::どんな種類のファイルでもmy_uploadfolderにリダイレクトされます。また、一度これらのファイルをWP adminから削除することはできません。誰かが手伝ってくれる?
ここで問題を抱えているのは、upload_dir
にユニバーサルフィルタを適用しているからです。これを行うのではなく、最初にupload_dir
の['mime-type']
をチェックした後で、application/pdf
の条件付きフィルターを使用してください。 wp_handle_upload
アクションフックでアップロードプロセスを傍受し、そこでアップロードフォルダを変更する必要があります。あなたが投稿したものは正しい方向を向いていますが、あなたは入ってくる$_POST
データを処理し、アップロードプロセス中にWordPressが保存するアップロードファイル['mime-type']
を検索することによってそこにフィルターを適用する必要があります。
あなたが使用を検討するかもしれません
if(get_post_mime_type($id) == 'application/pdf'){
...
}
pDFファイルをチェックする。
http://codex.wordpress.org/Function_Reference/get_post_mime_type
また、 wp_delete_attachment() 関数の背後にあるコードを見てみると、 delete attachment アクションを使ってそれにフックできます。ファイルを削除するには、 unlink() を使用します。