Tengo un problema con la carga de archivos de wordpress en el directorio personalizado para el tipo de publicación personalizada con upload_dir
filtrar en mi complemento personalizado.
Versiones probadas de wordpress: 6.0.1 y 5.8.2.
Dentro de las funciones principales de mi complemento:
require( 'new-upload-dir.php' );
add_action( 'plugins_loaded', function(){
$new_upload_dir = new New_Upload_Dir();
$new_upload_dir->init();
}, 10 );
He intentado lo siguiente con new-upload-dir.php
:
1.
class New_Upload_Dir{
public function init(){
add_filter( 'upload_dir', array( $this, 'custom_upload_dir' ) );
}
public function custom_upload_dir( $pathdata ){
if ( isset( $_POST['type'] ) && 'my_custom_post_type' === $_POST['type'] ) {
$custom_dir="/custom-dir";
if ( empty( $pathdata['subdir'] ) ) {
$pathdata['path'] = $pathdata['path'] . $custom_dir;
$pathdata['url'] = $pathdata['url'] . $custom_dir;
$pathdata['subdir'] = $custom_dir;
} else {
$new_subdir = $custom_dir. $pathdata['subdir'];
$pathdata['path'] = $pathdata['basedir'] . $new_subdir;
$pathdata['url'] = $pathdata['baseurl'] . $new_subdir;
$pathdata['subdir'] = $new_subdir;
}
}
return $pathdata;
}
}
class New_Upload_Dir{
public function init(){
add_filter( 'wp_handle_upload_prefilter', array( $this, 'my_upload_dir_filter' ) );
}
public function my_upload_dir_filter( $file ){
add_filter( 'upload_dir', array( $this, 'custom_upload_dir' ) );
return $file;
}
public function custom_upload_dir( $pathdata ){
if ( isset( $_POST['type'] ) && 'my_custom_post_type' === $_POST['type'] ) {
$custom_dir="/custom-dir";
if ( empty( $pathdata['subdir'] ) ) {
$pathdata['path'] = $pathdata['path'] . $custom_dir;
$pathdata['url'] = $pathdata['url'] . $custom_dir;
$pathdata['subdir'] = $custom_dir;
} else {
$new_subdir = $custom_dir. $pathdata['subdir'];
$pathdata['path'] = $pathdata['basedir'] . $new_subdir;
$pathdata['url'] = $pathdata['baseurl'] . $new_subdir;
$pathdata['subdir'] = $new_subdir;
}
}
return $pathdata;
}
}
class New_Upload_Dir{
public function init(){
add_filter( 'upload_dir', array( $this, 'custom_upload_dir' ) );
}
public function custom_upload_dir( $pathdata ){
// check post type via url query parameters.
$q_id = isset( $_REQUEST['id'] ) ? absint( $_REQUEST['id'] ) : 0;
$q_post_type = isset( $_REQUEST['post_type'] ) ? $_REQUEST['post_type'] ) : '';
if ( $q_post_type && $q_post_type === 'my_custom_post_type' ) {
$pathdata = $this->change_dir( $pathdata );
} else if( $q_id ){
$the_post_type = get_post_type( $q_id );
if( $the_post_type === 'my_custom_post_type' ){
$pathdata = $this->change_dir( $pathdata );
}
}
return $pathdata;
}
public function change_dir( $pathdata ){
$custom_dir="/custom-dir";
if ( empty( $pathdata['subdir'] ) ) {
$pathdata['path'] = $pathdata['path'] . $custom_dir;
$pathdata['url'] = $pathdata['url'] . $custom_dir;
$pathdata['subdir'] = $custom_dir;
} else {
$new_subdir = $custom_dir. $pathdata['subdir'];
$pathdata['path'] = $pathdata['basedir'] . $new_subdir;
$pathdata['url'] = $pathdata['baseurl'] . $new_subdir;
$pathdata['subdir'] = $new_subdir;
}
return $pathdata;
}
}
El Javascript que utilicé para activar el modal de carga a través de un botón dentro del cuadro meta personalizado de mi tipo de publicación personalizada:
jQuery( function ( $ ) {
$( '#my_upload_button' ).on( 'click', function( e ){
e.preventDefault();
the_uploader = wp.media ({
title: 'Files',
button: {
text: 'Upload File'
},
multiple: false
}).on( 'select', function() {
var attachment = the_uploader.state().get( 'selection' ).first().toJSON();
// attachment data will be inserted into custom meta box
$( '.supports-drag-drop' ).remove();
})
.open();
});
}
Nada cambia en el directorio de carga después de todo esto.
quiero archivos subidos a /uploads/custom-dir/year/month/
para todos los archivos cargados desde publicaciones de mi tipo de publicación personalizada, en lugar de /uploads/year/month/
.
Soy un novato en la codificación. Algunos o la mayoría de los códigos son prestado de muchos buenos muchachos, lamento no estar seguro de quiénes son ahora, pero son increíbles y realmente lo aprecio. Con suerte, algún día podré contribuir a esta gran comunidad y a aquellos que son novatos como yo que necesitan orientación en el camino de la codificación.
Cualquier ayuda sería muy apreciada.
.