CORREGIDO: sitio de WordPress TypeError no detectado: jQuery (…). Live no es una función que hace que las imágenes con JS no se muestren

8 minutos de lectura

avatar de usuario
bradley kirkland

Estoy construyendo un sitio de WordPress y de repente recibo el error:

Uncaught TypeError: jQuery(...).live is not a function
    at HTMLDocument.<anonymous> (main.js?ver=1.1:214)
    at i (jquery.js?ver=1.12.4-wp:2)
    at Object.fireWith [as resolveWith] (jquery.js?ver=1.12.4-wp:2)
    at Function.ready (jquery.js?ver=1.12.4-wp:2)
    at HTMLDocument.J (jquery.js?ver=1.12.4-wp:2)

No estoy seguro de cómo replicar este error, ya que es un suceso repentino.

Cuando visito mi sitio no se cargan imágenes que tengan JS

Revisé mis complementos y parece que no veo nada nuevo agregado cuando veo el sitio en Elementor, se muestran todas las imágenes, ¿alguna idea de cómo solucionar esto? Nada de este sitio ha sido codificado sin procesar, solo WordPress puro

¿Alguien puede inspeccionar el elemento y decirme si/qué complemento me está causando problemas?

  • WordPress 5.5 dejó de usar jquery migrate. Ha estado causando problemas con complementos y temas antiguos. Esto podría solucionarlo: wordpress.org/plugins/habilitar-jquery-migrar-ayudante

    – Cully

    19 de agosto de 2020 a las 6:57

  • @Cully Gracias, ¿ha ocurrido este cambio en el último día más o menos?

    –Bradley Kirkland

    19 de agosto de 2020 a las 6:58

  • @Cully ¡Gracias, esto ayudó! ¿Puede publicar como respuesta para que pueda seleccionar en caso de que alguien más en la comunidad tenga el mismo problema, por favor 🙂

    –Bradley Kirkland

    19 de agosto de 2020 a las 7:01

  • Publiqué una respuesta más detallada.

    – Cully

    19 de agosto de 2020 a las 18:21

avatar de usuario
Muchacho

WordPress 5.5 dejó de usar jQuery migre. Este cambio ha estado causando problemas con complementos y temas antiguos. Si nota problemas después de actualizar a WordPress 5.5, la instalación de este complemento podría solucionarlo: https://wordpress.org/plugins/habilitar-jquery-migrate-helper/

Sin embargo, en última instancia, una mejor solución sería actualizar sus complementos y temas actuales a versiones que no dependan de la migración de jQuery. O, si eso no es posible, intente pasar de esos complementos a otros que no requieran la migración de jQuery. Si no lo hace, es probable que tenga problemas de compatibilidad en el futuro o, lo que es peor, vulnerabilidades de seguridad de estos complementos/temas obsoletos.

ACTUALIZACIÓN: 18 de septiembre de 2020

Miré el código fuente del complemento Habilitar jQuery Migrate Helper y tiene esta condición para ejecutarse:

if ( version_compare( $GLOBALS['wp_version'], '5.6-alpha', '<' ) && ! class_exists( 'jQuery_Migrate_Helper' ) ) {
    include_once __DIR__ . '/class-jquery-migrate-helper.php';
    add_action( 'plugins_loaded', array( 'jQuery_Migrate_Helper', 'init_actions' ) );
}

Por lo tanto, el complemento solo funcionará hasta WordPress 5.5 inclusive. Una vez que WordPress llegue a la versión 5.6-alfa, dejará de funcionar.

ACTUALIZACIÓN: 15 de febrero de 2021

El código del complemento se ha actualizado para funcionar más allá de WordPress 5.6. Sin embargo, en y después de la versión 5.6, incluirá jquery-migrate-3.3.2 en vez de jquery-migrate-1.4.1 e incluye muchos menos archivos (principalmente scripts jquery-ui). Si desea continuar usando la versión anterior de jquery, hay un par de opciones.

Opción A. Puede copiar el complemento de migración de jquery a una nueva carpeta (básicamente convertirlo en su propio complemento), cambiarle el nombre, editar el class-jquery-migrate-helper.php archivo, busque esta línea en el replace_scripts función:

if ( version_compare( $GLOBALS['wp_version'], '5.6-alpha', '<' ) || 'yes' === get_option( '_jquery_migrate_downgrade_version', 'no' ) ) {

Y reemplazarlo con:

if(true) {

Esto hará que el complemento siempre instale la versión anterior de jquery.

Opción B. Cree un nuevo complemento que solo incluya los archivos jquery antiguos haciendo lo siguiente:

  1. Crear un nuevo complemento.
  2. Copia todo el enable-jquery-migrate-helper/js archivos desde el plugin de migración de jquery al js/ carpeta en su nuevo complemento.
  3. Agregue este código a su archivo de complemento:
add_action('wp_default_scripts', function ($scripts) {
    $setScripts = function($scripts, $handle, $src, $deps = [], $ver = false, $in_footer = false) {
        $script = $scripts->query( $handle, 'registered' );

        if ( $script ) {
            // If already added
            $script->src  = $src;
            $script->deps = $deps;
            $script->ver  = $ver;
            $script->args = $in_footer;

            unset( $script->extra['group'] );

            if ( $in_footer ) {
                $script->add_data( 'group', 1 );
            }
        } else {
            // Add the script
            if ( $in_footer ) {
                $scripts->add( $handle, $src, $deps, $ver, 1 );
            } else {
                $scripts->add( $handle, $src, $deps, $ver );
            }
        }
    };

    $assets_url = $assets_url = plugins_url( 'js/', __FILE__  );

    $setScripts( $scripts, 'jquery-migrate', $assets_url . 'jquery-migrate/jquery-migrate-1.4.1-wp.js', array(), '1.4.1-wp' );
    $setScripts( $scripts, 'jquery-core', $assets_url . 'jquery/jquery-1.12.4-wp.js', array(), '1.12.4-wp' );
    $setScripts( $scripts, 'jquery', false, array( 'jquery-core', 'jquery-migrate' ), '1.12.4-wp' );
    $setScripts( $scripts, 'jquery-ui-core', $assets_url . 'jquery-ui/core.min.js', array( 'jquery' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-effects-core', $assets_url . 'jquery-ui/effect.min.js', array( 'jquery' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-effects-blind', $assets_url . 'jquery-ui/effect-blind.min.js', array( 'jquery-effects-core' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-effects-bounce', $assets_url . 'jquery-ui/effect-bounce.min.js', array( 'jquery-effects-core' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-effects-clip', $assets_url . 'jquery-ui/effect-clip.min.js', array( 'jquery-effects-core' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-effects-drop', $assets_url . 'jquery-ui/effect-drop.min.js', array( 'jquery-effects-core' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-effects-explode', $assets_url . 'jquery-ui/effect-explode.min.js', array( 'jquery-effects-core' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-effects-fade', $assets_url . 'jquery-ui/effect-fade.min.js', array( 'jquery-effects-core' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-effects-fold', $assets_url . 'jquery-ui/effect-fold.min.js', array( 'jquery-effects-core' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-effects-highlight', $assets_url . 'jquery-ui/effect-highlight.min.js', array( 'jquery-effects-core' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-effects-puff', $assets_url . 'jquery-ui/effect-puff.min.js', array( 'jquery-effects-core', 'jquery-effects-scale' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-effects-pulsate', $assets_url . 'jquery-ui/effect-pulsate.min.js', array( 'jquery-effects-core' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-effects-scale', $assets_url . 'jquery-ui/effect-scale.min.js', array( 'jquery-effects-core', 'jquery-effects-size' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-effects-shake', $assets_url . 'jquery-ui/effect-shake.min.js', array( 'jquery-effects-core' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-effects-size', $assets_url . 'jquery-ui/effect-size.min.js', array( 'jquery-effects-core' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-effects-slide', $assets_url . 'jquery-ui/effect-slide.min.js', array( 'jquery-effects-core' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-effects-transfer', $assets_url . 'jquery-ui/effect-transfer.min.js', array( 'jquery-effects-core' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-ui-accordion', $assets_url . 'jquery-ui/accordion.min.js', array( 'jquery-ui-core', 'jquery-ui-widget' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-ui-autocomplete', $assets_url . 'jquery-ui/autocomplete.min.js', array( 'jquery-ui-menu', 'wp-a11y' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-ui-button', $assets_url . 'jquery-ui/button.min.js', array( 'jquery-ui-core', 'jquery-ui-widget' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-ui-datepicker', $assets_url . 'jquery-ui/datepicker.min.js', array( 'jquery-ui-core' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-ui-dialog', $assets_url . 'jquery-ui/dialog.min.js', array( 'jquery-ui-resizable', 'jquery-ui-draggable', 'jquery-ui-button', 'jquery-ui-position' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-ui-draggable', $assets_url . 'jquery-ui/draggable.min.js', array( 'jquery-ui-mouse' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-ui-droppable', $assets_url . 'jquery-ui/droppable.min.js', array( 'jquery-ui-draggable' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-ui-menu', $assets_url . 'jquery-ui/menu.min.js', array( 'jquery-ui-core', 'jquery-ui-widget', 'jquery-ui-position' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-ui-mouse', $assets_url . 'jquery-ui/mouse.min.js', array( 'jquery-ui-core', 'jquery-ui-widget' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-ui-position', $assets_url . 'jquery-ui/position.min.js', array( 'jquery' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-ui-progressbar', $assets_url . 'jquery-ui/progressbar.min.js', array( 'jquery-ui-core', 'jquery-ui-widget' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-ui-resizable', $assets_url . 'jquery-ui/resizable.min.js', array( 'jquery-ui-mouse' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-ui-selectable', $assets_url . 'jquery-ui/selectable.min.js', array( 'jquery-ui-mouse' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-ui-selectmenu', $assets_url . 'jquery-ui/selectmenu.min.js', array( 'jquery-ui-menu' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-ui-slider', $assets_url . 'jquery-ui/slider.min.js', array( 'jquery-ui-mouse' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-ui-sortable', $assets_url . 'jquery-ui/sortable.min.js', array( 'jquery-ui-mouse' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-ui-spinner', $assets_url . 'jquery-ui/spinner.min.js', array( 'jquery-ui-button' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-ui-tabs', $assets_url . 'jquery-ui/tabs.min.js', array( 'jquery-ui-core', 'jquery-ui-widget' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-ui-tooltip', $assets_url . 'jquery-ui/tooltip.min.js', array( 'jquery-ui-core', 'jquery-ui-widget', 'jquery-ui-position' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-ui-widget', $assets_url . 'jquery-ui/widget.min.js', array( 'jquery' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-touch-punch', false, array( 'jquery-ui-widget', 'jquery-ui-mouse' ), '0.2.2', 1 );
}, -10);

  • Gracias amigo agradezco tu ayuda

    –Bradley Kirkland

    20 de agosto de 2020 a las 20:02

  • La función no funcionó para mí en un tema infantil. Tuve que agregar el script en el pie de página:

    – Loosie94

    9 de noviembre de 2020 a las 12:49


  • "Podría copiar el complemento de migración de jquery a una nueva carpeta" ¿cómo se hace eso?

    – Cody Bugstein

    27 de abril de 2021 a las 1:02

  • @CodyBugstein Copie el contenido del complemento de migración jquery a una nueva carpeta con un nombre diferente. Es esencialmente como crear un nuevo complemento con el mismo código, excepto por el cambio que describí.

    – Cully

    27 de abril de 2021 a las 1:31

  • ¿Cómo lo copia a una nueva carpeta, es lo que estoy preguntando

    – Cody Bugstein

    27 de abril de 2021 a las 2:42

avatar de usuario
bradley kirkland

WordPress 5.5 dejó de usar jquery migrate. Ha estado causando problemas con complementos y temas antiguos. Esta es la solución: https://wordpress.org/plugins/habilitar-jquery-migrate-helper/

  • esto no es una solucion

    – Cody Bugstein

    27 de abril de 2021 a las 0:57

  • @CodyBugstein Esta fue una solución temporal que Cully elaboró ​​más arriba

    –Bradley Kirkland

    28 de abril de 2021 a las 3:56

  • Bueno, resolvió temporalmente mi caso. Confirmado para WordPress 5.7. Tema de Avada: Problemas causados ​​al cambiar de pestaña en Fusion Builder

    - algo esto

    16 de junio de 2021 a las 22:21

  • Es más una solución flash para que pueda mantener su sitio web en funcionamiento hasta que se entregue una resolución permanente (actualización de desarrolladores de temas para soporte).

    –Bradley Kirkland

    1 de julio de 2021 a las 21:38

¿Ha sido útil esta solución?