Organisiere Uploads nach Jahr, Monat und Tag

Ab sofort sind meine hochgeladenen Dateien nach Jahr und Monat sortiert. Aber ich möchte sie nach Jahr, Monat und Tag organisieren. Ich meine so 2012/10/30/image goes here

PS: Dafür gibt es ein Plugin . Aber ich möchte kein Plugin für diese einfache Aufgabe verwenden. Vielen Dank

Solutions Collecting From Web of "Organisiere Uploads nach Jahr, Monat und Tag"

Code basiert in anderer Antwort von mir und dieser SO Antwort .

Es verwendet das Veröffentlichungsdatum post / page / cpt, um die Pfade zu erstellen.
Beachten Sie, dass $the_post->post_date_gmt ebenfalls verfügbar ist.

 add_filter('wp_handle_upload_prefilter', 'wpse_70946_handle_upload_prefilter'); add_filter('wp_handle_upload', 'wpse_70946_handle_upload'); function wpse_70946_handle_upload_prefilter( $file ) { add_filter('upload_dir', 'wpse_70946_custom_upload_dir'); return $file; } function wpse_70946_handle_upload( $fileinfo ) { remove_filter('upload_dir', 'wpse_70946_custom_upload_dir'); return $fileinfo; } function wpse_70946_custom_upload_dir($path) { /* * Determines if uploading from inside a post/page/cpt - if not, default Upload folder is used */ $use_default_dir = ( isset($_REQUEST['post_id'] ) && $_REQUEST['post_id'] == 0 ) ? true : false; if( !empty( $path['error'] ) || $use_default_dir ) return $path; // Error: not uploading from a post/page/cpt $the_post = get_post( $_REQUEST['post_id'] ); $y = date( 'Y', strtotime( $the_post->post_date ) ); $m = date( 'm', strtotime( $the_post->post_date ) ); $d = date( 'd', strtotime( $the_post->post_date ) ); $customdir = '/' . $y . '/' . $m . '/' . $d; $path['path'] = str_replace($path['subdir'], '', $path['path']); //remove default subdir (year/month) $path['url'] = str_replace($path['subdir'], '', $path['url']); $path['subdir'] = $customdir; $path['path'] .= $customdir; $path['url'] .= $customdir; return $path; } 

Soweit ich das beurteilen kann, wird der Filter ‘upload_dir’ nur einmal in wp-includes \ functions.php aufgerufen

Ich finde diese Lösung viel einfacher. Alle Uploads werden für das Datum des Hochladens in das Verzeichnis Jahr / Monat / Tag gestellt.

 function upload_dir_filter($uploads){ $day = date('d'); $uploads['path'] .= '/' . $day; $uploads['url'] .= '/' . $day; return $uploads; } add_filter('upload_dir', 'upload_dir_filter');