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
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');