programing

알림을 받는 것은 "WP_Scripts::localize was called incorrectly" 워드프레스입니다.

css3 2023. 3. 31. 22:33

알림을 받는 것은 "WP_Scripts::localize was called incorrectly" 워드프레스입니다.

완전한 메시지:주의: WP_Scripts::localize가 잘못 호출되었습니다.$l10n 매개 변수는 배열이어야 합니다.임의 데이터를 스크립트에 전달하려면 대신 wp_add_inline_script() 함수를 사용합니다.자세한 내용은 WordPress의 디버깅을 참조하십시오.(이 메시지는 버전 5.7.0에서 /home3/duconne/public_html/wp-includes/functions에 추가되었습니다).5313행의 php

워드프레스를 5.7.0으로 업데이트한 직후에 표시됨

좋아요, 조회수가 꽤 많고 앞의 답변은 그냥 비밀로 해두니까요.

네, 지금은 경고입니다만, 무슨 일이 일어날지 모릅니다.이것은 이유가 있는 경고입니다.무엇을 무효로 해도 해결되지 않습니다.현재로서는 경고로 설정할 수 있는 이유가 있습니다.

인 , 「」를 유효하게 해 .php_xdebugmanager로 지정합니다.디버깅 후에는 그대로 두지 않는 것이 좋습니다.디버깅을 유효하게 하는 퍼포먼스 비용을 알 수 없기 때문입니다.

php_xdebug는 영향을 받는 모든 파일의 스택을 반환합니다.이 스택에서 문제의 원인을 추적할 수 있습니다.일단 원인을 찾은 수정은 매우 쉽습니다.가장 가능성이 높은 원인은 마지막 파라미터가 다음 중 어느 것이 필요한가 하는 것입니다.array()!

다음과 같은 것을 찾을 수 있습니다.

wp_localize_script( 'handle', 'object_name', 'l10n_culprit_string' );

다음 중 어느 것으로 변환해야 합니까?

wp_localize_script( 'handle', 'object_name', array( 'l10n_culprit_string' ) );

문제 해결은 여기서부터입니다.

이것은 Wordpress 5.7에 나타나는 새로운 경고입니다.WP_DEBUG를 true로 설정하고 싶지 않은 경우에는 예를 들어 다음과 같이 테마의 함수에 추가함으로써 메시지를 비활성화할 수 있습니다.php:

 add_filter('doing_it_wrong_trigger_error', function () {return false;}, 10, 0);

wp5.7과 php7.4를 사용하고 있다면 알림이 되지만, php8로 변경하면 오류로 보고될 수 있습니다.전달된 값을 어레이로 변경했을 때(아마도 관련된 js에도 변경이 필요했을 것입니다), 모든 것이 정상적으로 동작했습니다.

이는 워드프레스 설치의 PHP 스크립트 중 하나가 wp_localize_script()를 사용하여 AJAX 요청을 통해 일부 PHP 변수를 JS 스크립트로 전달하기 때문에 더 이상 좋은 방법이 아닙니다.이것은 플러그인의 내부 또는 커스텀테마 또는 자테마의 함수.php 내에 있을 수 있습니다.wp_localize_script()가 자테마 또는 커스텀테마의 functions.php에 없는 경우 다음을 수행합니다.

  1. 웹 사이트 백업
  2. 모든 플러그인 비활성화
  3. 알림을 다시 받을 때까지 하나씩 다시 활성화하십시오.
  4. 알림이 다시 나타나면 방금 다시 활성화한 플러그인이 잘못된 방법으로 wp_localize_script()를 사용하고 있음을 의미합니다.
  5. 최신이 아닌 경우 업데이트를 시도합니다(원하는 경우). 알림이 사라질 수 있습니다.
  6. 이미 최신 버전이거나 업데이트를 원하지 않으면 wp-content/plugins에서 해당 플러그인의 폴더를 검색하십시오.
  7. 파일을 열고 wp_localize_script()가 호출된 파일을 찾습니다.서버 단말기와 CLI를 사용하여 파일 내의 문자열을 검색할 수도 있습니다.예를 들어 서버가 Linux 상에서 동작하는 경우: grep - H - r "wp_localize _ script()" /root / pathtopluginfolder | cut - d : - f1
  8. 그런 다음 다음과 같이 코드를 바꿉니다.

오래된 것은 거의 다음과 같습니다.

wp_enqueue_script( 'wpdocs-my-script', 'https://url-to/my-script.js' );
wp_localize_script( 'wpdocs-my-script', 'MYSCRIPT', array(
    'ajaxUrl' => admin_url( 'admin-ajax.php' ),
    'otherParam' => 'some value',
) );

새로운 것:

wp_enqueue_script( 'wpdocs-my-script', 'https://url-to/my-script.js' );
wp_add_inline_script( 'wpdocs-my-script', 'const MYSCRIPT = ' . json_encode( array(
    'ajaxUrl' => admin_url( 'admin-ajax.php' ),
    'otherParam' => 'some value',
) ), 'before' );

wp_add_inline_script 함수에 세 번째 파라미터로 'before'를 추가해야 합니다.

작업이 완료되면 알림이 더 이상 표시되지 않습니다.이 경우 플러그인 개발부에 연락하여 다음 업데이트의 일부가 될 수 있도록 이 사실을 알리십시오.

상세한 것에 대하여는, 이 페이지의 Jules Colle의 코멘트를 참조해 주세요.https://developer.wordpress.org/reference/functions/wp_add_inline_script/

언급URL : https://stackoverflow.com/questions/66611705/getting-notice-is-wordpress-wp-scriptslocalize-was-called-incorrectly