máx.
Editar: Otras variaciones de scripts tampoco parecen funcionar, wp_enqueue_media() funciona bien, pero parece que el script que incluye wp.media no está incluido.
Estoy tratando de usar WordPress Media Uploader en un complemento personalizado, pero sigo recibiendo el siguiente error:
TypeError: undefined is not an object (evaluating 'wp.media.frames')
Mi código Javascript:
jQuery(document).ready(function(){
var mediaUploader;
jQuery('#upload-button').click(function(e) {
e.preventDefault();
// If the uploader object has already been created, reopen the dialog
if (mediaUploader) {
mediaUploader.open();
return;
}
// Extend the wp.media object
mediaUploader = wp.media.frames.file_frame = wp.media({
title: 'Choose Image',
button: {
text: 'Choose Image'
}, multiple: false });
// When a file is selected, grab the URL and set it as the text field's value
mediaUploader.on('select', function() {
var attachment = mediaUploader.state().get('selection').first().toJSON();
jQuery('#logo').val(attachment.url);
});
// Open the uploader dialog
mediaUploader.open();
});
});
Los archivos .js se registran de la siguiente manera:
/* Add the media uploader script */
function my_media_lib_uploader_enqueue() {
wp_enqueue_media();
wp_register_script( 'media-lib-uploader-js', plugins_url( 'media-lib-uploader.js' , __FILE__ ), array('jquery') );
wp_enqueue_script( 'media-lib-uploader-js' );
}
add_action('admin_enqueue_scripts', 'my_media_lib_uploader_enqueue');
Resuelto el problema, el problema era que wp_enqueue_media(); llama a los scripts al pie de página de la pagina Debido a que estaba usando una función die() en alguna parte, los scripts no se cargaron.
Pon el wp_enqueue_media
función en su función de secuencias de comandos en cola.
Ejemplo:
add_action('wp_enqueue_scripts', 'prince_load_scripts');
function prince_load_scripts(){
wp_enqueue_media();
//Yor scripts goes here...
}
También tuve un problema similar… Las secuencias de comandos no se cargaron en una página específica, especialmente las secuencias de comandos wp-media, que llevaron al error “wp.media no está definido”… todas las soluciones no funcionaron . Resultó que el contenido de esta página era demasiado grande, mi límite de memoria de PHP era demasiado bajo. La configuración de MemoryLimit 256-> 512 funcionó para mí …
-
Después de días de investigación y depuración en archivos de complementos… Muchas gracias.
– alioguzhan
13 de diciembre de 2021 a las 22:28
Como consejo, puede ahorrarse tiempo/esfuerzo utilizando el documento “seguro sin conflictos” listo:
jQuery(function($) { // inside here, you can use $ instead of typing jQuery, such as $('#upload-button').click....});
– nombre_usuario_aleatorio
21 de enero de 2017 a las 14:31
OK, para ayudar, sería útil saber cuando obtienes el error. Además, mediante la depuración, también podría decirnos donde en tu codigo el error termina siendo arrojado. Finalmente, ¿es este tu primer intento? ¿Alguna vez lo tuviste funcionando? Si no es así, recomiendo encarecidamente seguir el ejemplo en los documentos oficiales de WP: wp.media
– nombre_usuario_aleatorio
21 de enero de 2017 a las 14:35
Sí, una vez lo tuve funcionando pero de repente se detuvo. Esto fue más o menos cuando mi sitio se actualizó a 4.7.1. El error ocurre cuando hago clic en el botón Cargar. El error se lanza una línea
mediaUploader = wp.media.frames.file_frame = wp.media({
– Máx.
21 de enero de 2017 a las 14:41
Use su consola de desarrollador para depurar el script: establezca un punto de pausa en esa línea, y luego puede hacer cosas como inspeccionar / consola. registrar el valor de
wp
ywp.media
etc.– nombre_usuario_aleatorio
21 de enero de 2017 a las 14:43
Incluso cuando uso el código de los documentos oficiales de WP, aparece el siguiente error:
TypeError: wp.media is not a function. (In 'wp.media', 'wp.media' is undefined)
..– Máx.
21 de enero de 2017 a las 14:52