Hay un error en mi consola que muestra Uncaught TypeError: No se puede leer la propiedad ‘secreta’ de nulo en a.wp.receiveEmbedMessage (wp-embed.min.js?x59911:1)
¿Hay alguna manera de arreglar esto?
El problema es con WordPress wp-embed.js. Cambiar siguiente siguiente código/
if ( ! ( data.secret || data.message || data.value ) ) {
a
if ( ! data || ! ( data.secret || data.message || data.value ) ) {
En la línea 32. Debería resolver el problema. Referencia : https://core.trac.wordpress.org/ticket/44832
-
He hecho los cambios. Sin embargo, por alguna razón, la versión anterior de js aún se está cargando. ¿Alguna idea?
– Kurund Jalmi
6 sep 2018 a las 11:09
-
Compruebe si ha instalado complementos de optimización de velocidad/caché en WordPress.
– matriz web
6 de septiembre de 2018 a las 12:13
-
Estás en lo correcto. Era un problema con el almacenamiento en caché. Sin embargo, no se utilizaron complementos de almacenamiento en caché para WordPress. El alojamiento administrado de Godaddy WordPress tiene este problema y todavía están trabajando para solucionarlo.
– Kurund Jalmi
7 de septiembre de 2018 a las 4:04
-
No es almacenamiento en caché, es el archivo js minimizado que en realidad se está utilizando. Mira mi respuesta.
– Julio
13 de septiembre de 2018 a las 22:08
julix
los emitir boleto (también vinculado por Webmatrix) sugiere el siguiente código para wp-embed.js (línea de inicio 31).
if ( data && ! ( data.secret || data.message || data.value ) ) {
return;
}
Pero cambiar eso no importará, ya que el archivo wp-embed.min.js es el que realmente se usa. – Y como todo está en una sola línea, es un poco más difícil encontrar el lugar correcto.
Busca la cadena d.secret||
para encontrar la parte correcta y luego reemplazar esa condición, verifique con if(d && !(d.secret||d.message||d.value))
.
Tuve el mismo problema y al hacer esto lo solucioné, mientras que el código de webmatrix (minificado) if ( !d||!(d.secret||d.message||d.value) )
no funcionó para mi problema.
Esto sugiere que, en mi caso, los datos se están pasando, simplemente no tienen el valor que quiero. Tal vez también haya un problema de que a veces no se pasan datos, en cuyo caso aún debe agregar su !data ||
al principio de mi condicional, así: if(!d||d && !(d.secret||d.message||d.value))
.
Nota
Sin embargo, tenga en cuenta que normalmente no debería editar archivos principales, ya que podrían desaparecer en la próxima actualización; sin embargo, en esta situación, es muy probable que la próxima actualización contenga la misma solución o una mejor, por lo que si se sobrescribe, no debería asunto.
mario werner
Parece que la solución a ese problema depende de su versión de WordPress. En 4.9.8
el fragmento problemático en /wp-includes/js/wp-embed.min.js
Se ve como esto:
var d=c.data;if(d.secret||d.message||d.value)if(!/[^a-zA-Z0-9]/.test(d.secret)){...}
No hay condición de salida en este caso, sino una condición de continuación. El siguiente código se ejecutará si se cumplen las condiciones anteriores. Por lo tanto, debe verificar si se cumplen las condiciones, en lugar de no cumplirlas.
Esto funcionó para mí:
var d=c.data;if(d&&(d.secret||d.message||d.value))...
Primero comprueba si d
es válido (no null
) y luego pasa a comprobar si se cumple alguna de las siguientes condiciones.
Asegúrese de volver a cargar la página sin el caché después de cargar la corrección. Control+F5 por Chrome
y Firefox
en Windows
o Dominio+Cambio+R por Chrome
y Firefox
en Mac
.
Modificando directamente el wp-embed.min.js y funciona perfectamente y desaparece el error de la consola.
Particularmente, en el código minificado cambio este código
> if(d.secret||d.message||d.value)
para este fragmento de código
> if(!d||!(d.secret||d.message||d.value))return;
(cuidado, el primero no tiene punto y coma y el segundo tiene punto y coma)
Sin embargo, no recomiendo cambiar el código central de WP de ninguna manera.
Deshabilitar incrustaciones en WordPress con código
Puede agregar lo siguiente al archivo functions.php de su tema de WordPress.
function disable_embeds_code_init() {
// Remove the REST API endpoint.
remove_action( 'rest_api_init', 'wp_oembed_register_route' );
// Turn off oEmbed auto discovery.
add_filter( 'embed_oembed_discover', '__return_false' );
// Don't filter oEmbed results.
remove_filter( 'oembed_dataparse', 'wp_filter_oembed_result', 10 );
// Remove oEmbed discovery links.
remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );
// Remove oEmbed-specific JavaScript from the front-end and back-end.
remove_action( 'wp_head', 'wp_oembed_add_host_js' );
add_filter( 'tiny_mce_plugins', 'disable_embeds_tiny_mce_plugin' );
// Remove all embeds rewrite rules.
add_filter( 'rewrite_rules_array', 'disable_embeds_rewrites' );
// Remove filter of the oEmbed result before any HTTP requests are made.
remove_filter( 'pre_oembed_result', 'wp_filter_pre_oembed_result', 10 );
}
add_action( 'init', 'disable_embeds_code_init', 9999 );
function disable_embeds_tiny_mce_plugin($plugins) {
return array_diff($plugins, array('wpembed'));
}
function disable_embeds_rewrites($rules) {
foreach($rules as $rule => $rewrite) {
if(false !== strpos($rewrite, 'embed=true')) {
unset($rules[$rule]);
}
}
return $rules;
}
O también podría usar la función wp_dequeue_script.
function my_deregister_scripts(){
wp_dequeue_script( 'wp-embed' );
}
add_action( 'wp_footer', 'my_deregister_scripts' );
Intenta usar este código. Esta funcionando…
Gracias !
-
Desactivar todas las capacidades de incrustación de WordPress debido a un error de JavaScript parece una corrección excesiva. ¿No es mejor determinar el motivo del error y corregirlo?
– Aterrizaje en Júpiter
27 ago 2018 a las 13:30
-
Desactivar todas las capacidades de incrustación de WordPress debido a un error de JavaScript parece una corrección excesiva. ¿No es mejor determinar el motivo del error y corregirlo?
– Aterrizaje en Júpiter
27 ago 2018 a las 13:30
Tenemos el mismo error, que apareció recientemente. Según las pruebas de nuestra parte y la búsqueda en línea, parece ser un problema con Google ReCaptcha. ¿Usas eso en tu sitio?
– Aterrizaje en Júpiter
27 de agosto de 2018 a las 13:37
efecto de interacción entre el recaptcha y el wp-embed.js del núcleo
– Julio
13/09/2018 a las 21:54