WordPress 플러그인을 디버깅하려면 어떻게 해야 합니까?
최근 몇 가지 버그가 있는 WordPress 플러그인을 상속받았습니다.WordPress도 처음이라 디버깅메시지를 기록하는 방법을 모르기 때문에 상황을 파악할 수 없습니다.
팝업을 만들거나 콘솔에 로그하는 방법만 있으면 됩니다.
WordPress Stack Exchange에서는 다음과 같은 훌륭한 Q&A가 진행되며 많은 지식인들이 디버깅 기술에 대해 설명합니다.플러그인은 어떻게 디버깅합니까?
Javascript area에서는 기본적으로 다음과 같습니다.<script>console.log('the value is' + variable);</script>Google Chrome 인스펙터 및/또는 Firebug를 사용합니다.
PHP 에서는, 일이 발생하는 장소나 출력하는 장소에 따라서 다릅니다.
WordPress에서의 디버깅
Codex의 공식 문서.
»wp-config.php
// Enable WP_DEBUG mode
define( 'WP_DEBUG', true );
// Enable Debug logging to the /wp-content/debug.log file
define( 'WP_DEBUG_LOG', true );
// Disable display of errors and warnings
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );
// Use dev versions of core JS and CSS files (only needed if you are modifying these core files)
define( 'SCRIPT_DEBUG', true );
로그 파일로 정보 인쇄
다음은 OSX/Unix/Linux 시스템 경로를 사용합니다. Windows에 맞게 조정하십시오.
/* Log to File
* Description: Log into system php error log, usefull for Ajax and stuff that FirePHP doesn't catch
*/
function my_log_file( $msg, $name = '' )
{
// Print the name of the calling function if $name is left empty
$trace=debug_backtrace();
$name = ( '' == $name ) ? $trace[1]['function'] : $name;
$error_dir = '/Applications/MAMP/logs/php_error.log';
$msg = print_r( $msg, true );
$log = $name . " | " . $msg . "\n";
error_log( $log, 3, $error_dir );
}
해서 '보다', '보다', '보다'라는 .my_log_file( $post, 'The post contents are:' );
렌더링된 HTML로 직접 인쇄
/* Echo variable
* Description: Uses <pre> and print_r to display a variable in formated fashion
*/
function echo_log( $what )
{
echo '<pre>'.print_r( $what, true ).'</pre>';
}
필요할 .echo_log( $post );.
파이어 PHP
이 확장은 브라우저 콘솔에 직접 정보를 기록합니다.WordPress Answers에서 다음 Q&A를 참조하십시오.WP-FirePHP 확장 사용방법
모니터 쿼리
이것은 디버깅 툴킷에 필수입니다.플러그인에는 많은 기능이 있습니다.그 중 하나는 Logs 탭입니다.이것을 코드에 넣어, 페이지의 플러그인 인터페이스에 표시해 주세요.
do_action( 'qm/debug', 'This happened!' );
do_action( 'qm/debug', $your_var );
do_action( 'qm/debug', [$var1, $var2] );
- 디버깅 없이 개발하지 마세요!
- http://wp.smashingmagazine.com/2011/03/08/ten-things-every-wordpress-plugin-developer-should-know/ 를 참조해 주세요.
행운을 빌고 우리에게 소식을 전해주세요.
은 "PHP"를 하는 것입니다.print_r( $var )스테이트먼트와 페이지를 갱신합니다.심플하고 간단합니다.Xdebug라는 코드를 사용하고 싶다면 설치하세요.
당신의 코멘트에 따르면Much rather use a system where debug messages can be turned off and on in one place:
WordPress로 할 수 있습니다.다음과 같이 설정할 수 있는 상수가 있습니다.true ★★★★★★★★★★★★★★★★★」false의 서 wp-config.php파일(데이터베이스 파라미터를 추가하는 파일)을 지정합니다.
다음과 같이 사용할 수 있습니다.
if( WP_DEBUG ){
echo "<script> alert('Hello World!'); </script>";
}
경보는 가 WP_DEBUG로 되어 있는 됩니다.true).WP_DEBUG(거기서 거짓으로)
처음 질문 후 몇 년 후에 답변이 온다는 것은 알고 있습니다만, 최근 같은 문제가 발생하여 만족할 만한 해결책을 찾지 못했기 때문에 플러그 인을 코드화했습니다.
특히 OP 요구는 다음과 같습니다.
팝업을 만들거나 콘솔에 로그하는 방법만 있으면 됩니다.
코드를 빠르고 쉽게 디버깅할 수 있는 방법을 찾고 있는 모든 플러그인/하드웨어 개발자에게 도움이 되기를 바랍니다.https://wordpress.org/plugins/bugfu-console-debugger
이를 설치하고 PHP 코드에서 로깅 메서드를 호출하면 브라우저 JavaScript 콘솔에 바로 로그가 됩니다.
BugFu::log($your_string-array-object);
2022년 8월 편집
위의 메서드를 호출하는 것을 기록할 때 사용하는 기술:
- 데이터베이스 로그에 PHP(백엔드) 쓰기
- JavaScript(프런트엔드)가 데이터베이스 로그를 읽기 위해 AJAX 호출을 한다.
- PHP(백엔드)가 데이터베이스 로그를 읽고 내용을 반환합니다.
- JavaScript(프런트엔드)는 반환된 콘텐츠를 브라우저 콘솔에 출력합니다.
BugFu를 설치하면 PHP와 JavaScript 사이에 브릿지를 만들 수 있습니다.이 브릿지는 WordPress 코드(테마 또는 플러그인)의 어디에 있든, 심지어 AJAX 콜백으로만 실행되는 PHP 코드에서라도 빠르고 쉽게 브라우저 콘솔에 로그인할 수 있습니다.
WordPress 디버깅로그의 온/오프를 걱정할 필요도 없고, 일반적인 PHP 로그를 읽기 위해 호스팅 서버에 액세스할 필요도 없으며, 특별한 브라우저 확장 기능이나 IDE 도구를 설치할 필요도 없습니다.
Visual Studio와 dev tools php debugger 확장을 사용하면 실제로 로그 기록 및 실행 시 변수 값 파악을 시도하지 않고 단계별로 디버깅할 수 있습니다.다른 대안도 있을 수 있습니다.
PS: 무료가 아닙니다.
언급URL : https://stackoverflow.com/questions/14541989/how-do-i-debug-a-wordpress-plugin
'programing' 카테고리의 다른 글
| React 구성 요소가 기본 내보내기로 없으면 React/Next 프로젝트 검색 페이지를 빌드할 수 없습니다(콘텍스트 api 파일). (0) | 2023.03.06 |
|---|---|
| 오류: ENOENT: 해당 파일 또는 디렉터리가 없습니다. 오류(네이티브)에서 '/public/main.html'을 stat합니다. (0) | 2023.03.06 |
| 이스케이프된 JSON 문자열을 마킹 해제하는 방법 (0) | 2023.03.06 |
| YAML을 사용한 Spring @PropertySource (0) | 2023.03.06 |
| Java EE 6 대스프링 3 스택 (0) | 2023.03.06 |
