web-dev-qa-db-ja.com

カスタム投稿タイプのPDF用の特定のアップグレードロードフォルダ WP マルチサイト

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から削除することはできません。誰かが手伝ってくれる?

14
Gerald

ここで問題を抱えているのは、upload_dirにユニバーサルフィルタを適用しているからです。これを行うのではなく、最初にupload_dir['mime-type']をチェックした後で、application/pdfの条件付きフィルターを使用してください。 wp_handle_uploadアクションフックでアップロードプロセスを傍受し、そこでアップロードフォルダを変更する必要があります。あなたが投稿したものは正しい方向を向いていますが、あなたは入ってくる$_POSTデータを処理し、アップロードプロセス中にWordPressが保存するアップロードファイル['mime-type']を検索することによってそこにフィルターを適用する必要があります。

2
Brian

あなたが使用を検討するかもしれません

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() を使用します。

http://php.net/manual/en/function.unlink.php

1
birgire