我的控制台出现一个错误,显示未捕获的TypeError:无法在a.wp.receiveEmbedMessage(wp-embed.min.js?x59911:1)处读取null的属性“秘密”
有没有办法解决这个问题?
答案 0 :(得分:8)
问题与Wordpress wp-embed.js有关。更改以下代码/
if ( ! ( data.secret || data.message || data.value ) ) {
到
if ( ! data || ! ( data.secret || data.message || data.value ) ) {
第32行。它应该可以解决问题。参考:https://core.trac.wordpress.org/ticket/44832
答案 1 :(得分:5)
该问题的解决方案似乎取决于您的WordPress版本。在4.9.8
中,/wp-includes/js/wp-embed.min.js
中有问题的代码段如下所示:
var d=c.data;if(d.secret||d.message||d.value)if(!/[^a-zA-Z0-9]/.test(d.secret)){...}
在这种情况下,没有退出条件,而是继续条件。如果满足上述条件,将执行以下代码。因此,您需要检查是否满足条件,而不是不满足。
这对我有用:
var d=c.data;if(d&&(d.secret||d.message||d.value))...
它首先检查d
是否有效(而不是null
),然后继续检查是否满足以下任何条件。
确保在上传修复程序后重新加载没有缓存的页面。 Chrome
上的Firefox
和Windows
的 Ctrl + F5 或 Command + Shift < / Chrome
上的/ kbd> + R 和Firefox
上的Mac
。
答案 2 :(得分:1)
直接修改 wp-embed.min.js ,它可以完美运行,并且不会显示控制台错误。
特别是,在最小的代码中,我更改了这段代码
[sS]([oO]([mM]([eE]([tT]([hH]([iI]([nN]([gG])?)?)?)?)?)?)?)? { printf("found prefix"); }
这段代码
> if(d.secret||d.message||d.value)
(请注意,第一个没有分号,第二个没有分号)
但是,我不建议以任何方式更改WP核心代码。
答案 3 :(得分:-1)
使用代码禁用在WordPress中嵌入
您可以将以下内容添加到WordPress主题的functions.php文件中。
Parent1:Child1,Child2,Child3,Child4
Parent2:Child1,Child2,Child3,Child4
Parent3:Child1,Child2
或者您也可以使用wp_dequeue_script函数。
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;
}
尝试使用此代码。工作正常...
谢谢!