source

Uncaught TypeError: null wp-embed.min.js의 속성 'secret'을 읽을 수 없습니다.

itover 2023. 2. 7. 19:46
반응형

Uncaught TypeError: null wp-embed.min.js의 속성 'secret'을 읽을 수 없습니다.

콘솔에 Unaught TypeError: a.wp.receiveEmbedMessage(wp-embed.min.js?x59911:1)의 null 속성 'secret'을 읽을 수 없습니다.

이 문제를 해결할 방법이 있을까요?

Wordpress wp-embedd.js에 문제가 있습니다.다음 코드를 변경해주세요.

if ( ! ( data.secret || data.message || data.value ) ) {

로.

if ( ! data || ! ( data.secret || data.message || data.value ) ) {

32호선입니다.그러면 문제가 해결될 거예요.참고 자료 : https://core.trac.wordpress.org/ticket/44832

발행 티켓(Webmatrix도 링크)은 wp-embed.js(시작선 31)에 대해 다음 코드를 제안합니다.

if ( data && ! ( data.secret || data.message || data.value ) ) {
    return;
}

하지만 wp-embed.min.js 파일이 실제로 사용되고 있기 때문에 변경은 문제가 되지 않습니다.-그리고 모두 한 줄에 있기 때문에, 적절한 장소를 찾기가 조금 어렵습니다.

문자열 검색d.secret||적절한 부품을 찾은 다음 상태 체크를 로 교체합니다.if(d && !(d.secret||d.message||d.value)).

같은 문제를 안고, 이것으로 해결했습니다만, Webmatrix 의 코드(최소화)는 해결되었습니다.if ( !d||!(d.secret||d.message||d.value) )내 문제에는 효과가 없었어

이는 데이터가 실제로 전달되고 있는 경우 데이터가 내가 원하는 가치를 갖지 못하고 있음을 나타냅니다.데이터가 전혀 전달되지 않는 문제도 있을 수 있습니다.이 경우 자신의 데이터를 추가해야 합니다.!data ||내 조건의 맨 처음에, 이렇게.if(!d||d && !(d.secret||d.message||d.value)).


메모

단, 이 상황에서는 다음 업데이트 시 코어 파일이 사라질 수 있으므로 보통 코어 파일을 편집하지 마십시오. 다음 업데이트는 동일하거나 더 나은 수정 사항을 포함할 가능성이 높기 때문에 덮어쓰더라도 상관 없습니다.

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그런 다음 다음 다음 조건 중 하나라도 충족되는지 확인합니다.

수정 업로드 후 캐시 없이 페이지를 새로고침하십시오.+ F5forChrome그리고.FirefoxWindows의 경우는 ++ShiftR 입니다.Chrome ★★★★★★★★★★★★★★★★★」FirefoxMac.

wp-embed.min.js를 직접 수정하면 완벽하게 동작하며 콘솔 오류가 사라집니다.

특히, 이 코드 조각은 최소화된 코드에서

 > if(d.secret||d.message||d.value)

이 코드 조각에 대해서

 > if(!d||!(d.secret||d.message||d.value))return;

(첫 번째 것은 세미콜론이 없고 두 번째 것은 세미콜론이 있으므로 주의해 주십시오.

단, WP 코어 코드를 변경하는 것은 권장하지 않습니다.

코드가 있는 WordPress에 내장 비활성화

WordPress 테마의 기능에 다음을 추가할 수 있습니다.php 파일.

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;
}

또는 wp_dequeue_script 함수를 사용할 수도 있습니다.

function my_deregister_scripts(){
 wp_dequeue_script( 'wp-embed' );
}
add_action( 'wp_footer', 'my_deregister_scripts' );

이 코드를 사용해 보세요.동작하고 있습니다...

감사합니다!

언급URL : https://stackoverflow.com/questions/51893727/uncaught-typeerror-cannot-read-property-secret-of-null-wp-embed-min-js

반응형