Estoy adaptando un script que encontré en línea para agregar acciones masivas personalizadas a la pantalla con la lista de publicaciones. Tiene esta línea:
add_action('load-edit.php', 'custom_bulk_action');
Estoy tratando de adaptarlo para la biblioteca de medios. Veo que en lugar de edit.php
debería usar upload.php
, lo que me lleva a creer que necesito encontrar el análogo de medios para load-edit.php
. Suena fácil, pero ni siquiera puedo encontrar load-edit.php
en mi instalación de WP para ver si por casualidad podría ser lo que estoy buscando. He encontrado algunas referencias en línea a load-*.php
(por ejemplo, bulk_action personalizado ), pero nada eso me dice qué valores puede tomar *
.
(Intenté load-upload.php
pero no está funcionando, aunque siempre podría haber algo más en mi código que está arruinando el trabajo).
Así que mis preguntas son dos:
- ¿Qué es el análogo de medios de
load-edit.php
? - ¿Dónde está
load-edit.php
(y los otros archivosload-*.php
), o qué código maneja estas solicitudes de archivos?
La primera es mi verdadera pregunta, pero la segunda se me ha metido en la piel.
¿Puede alguno de ustedes expertos por ahí orientarme? Lo agradecería mucho.
EDITAR
Con "no funciona" no quise decir que se bloquea, sino que no funcionó como se suponía (cambio de un atributo de medios).
El código que estoy adaptando se puede descargar al final de la publicación " Agregar un WordPress Custom Bulk Action "por Justin Stern de Fox Run Software. Regresando para verificar cada paso del código, conseguí que la versión adaptada funcionara, pero solo si comentaba el condicional y el control de seguridad (ambos asterisco a continuación). ¿Cuáles son los medios analógicos que debo usar para reemplazarlos?
add_action('load-upload.php', array(&$this, 'custom_bulk_action'));
function custom_bulk_action() {
// ***if($post_type == 'attachment') { REPLACE WITH:
if ( !isset( $_REQUEST['detached'] ) ) {
// get the action
$wp_list_table = _get_list_table('WP_Media_List_Table');
$action = $wp_list_table->current_action();
echo "\naction = $action\n</pre>";
$allowed_actions = array("export");
if(!in_array($action, $allowed_actions)) return;
// security check
// ***check_admin_referer('bulk-posts'); REPLACE WITH:
check_admin_referer('bulk-media');
// make sure ids are submitted. depending on the resource type, this may be 'media' or 'ids'
if(isset($_REQUEST['media'])) {
$post_ids = array_map('intval', $_REQUEST['media']);
}
if(empty($post_ids)) return;
// this is based on wp-admin/edit.php
$sendback = remove_query_arg( array('exported', 'untrashed', 'deleted', 'ids'), wp_get_referer() );
if ( ! $sendback )
$sendback = admin_url( "upload.php?post_type=$post_type" );
$pagenum = $wp_list_table->get_pagenum();
$sendback = add_query_arg( 'paged', $pagenum, $sendback );
switch($action) {
case 'export':
// if we set up user permissions/capabilities, the code might look like:
//if ( !current_user_can($post_type_object->cap->export_post, $post_id) )
// wp_die( __('You are not allowed to export this post.') );
$exported = 0;
foreach( $post_ids as $post_id ) {
if ( !$this->perform_export($post_id) )
wp_die( __('Error exporting post.') );
$exported++;
}
$sendback = add_query_arg( array('exported' => $exported, 'ids' => join(',', $post_ids) ), $sendback );
break;
default: return;
}
$sendback = remove_query_arg( array('action', 'action2', 'tags_input', 'post_author', 'comment_status', 'ping_status', '_status', 'post', 'bulk_edit', 'post_view'), $sendback );
wp_redirect($sendback);
exit();
}
}
Aprecio tu ayuda.
EDIT 2
He modificado el código anterior para reflejar la información de la respuesta aceptada. ¡Muchas gracias a Ralf912 !