wp.media indefinido usando WordPress Media Uploader

3 minutos de lectura

avatar de usuario
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');

  • 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 wpy wp.mediaetc.

    – 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

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

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad