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


14

PDF専用の「ドキュメント」と呼ばれるカスタム投稿タイプの特定のフォルダーへのアップロードをフィルター処理する必要があります。

これまでのところ、私は持っています:

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管理からこれらのファイルを削除することはできません。誰か助けてもらえますか?

回答:


2

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

if(get_post_mime_type($id) == 'application/pdf'){
   ...
}

PDFファイルを確認します。

http://codex.wordpress.org/Function_Reference/get_post_mime_type

wp_delete_attachment()関数の背後にあるコードを見て、添付ファイル削除アクションでフックすることもできます 。ファイルを削除するには、unlink()を使用できます

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


2

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.