さまざまなことを行うカスタムエンドポイントがいくつか設定されており、/wp/wp-admin/admin-ajax.php?action=some_action
を介してアクセスします。
ただし、構文、論理、致命的など、開発中にエラーが発生すると、ブラウザでページを表示すると「500 InternalServerError」が発生します。
エラーが発生した場合、サイト上の他のすべてのページでPHPエラーが発生し、デバッグに役立ちます。
ただし、エラーがadmin-ajax.php
領域から発生した場合は、代わりにPHPログファイルを開いてエラーを確認する必要があります。これは、積極的に開発する場合はさらに面倒です。
wordpressに、このURL名前空間でのエラーの表示を無効にするものはありますか?もしそうなら、ブラウザでエラーをレンダリングできるようにこれを防ぐにはどうすればよいですか?
ajaxの使用時にPHPエラーが表示される場合は、wp-includes/load.phpファイルを開き、336行目で次の行を変更します。
if ( defined( 'XMLRPC_REQUEST' ) || defined( 'REST_REQUEST' ) || ( defined( 'WP_INSTALLING' ) && WP_INSTALLING ) || wp_doing_ajax() ) {
@ini_set( 'display_errors', 0 );
}
に
if ( defined( 'XMLRPC_REQUEST' ) || defined( 'REST_REQUEST' ) || ( defined( 'WP_INSTALLING' ) && WP_INSTALLING ) || wp_doing_ajax() ) {
@ini_set( 'display_errors', 1 );
}
これで、ブラウザコンソールでajaxエラーを確認できるようになります。デバッグが終了したら、これを元に戻すことを忘れないでください!
https://codex.wordpress.org/Debugging_in_WordPress
_ // 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 );
_
次の定数をそのように定義します。 _debug.log
_の下に_wp-content
_が表示されます。ヘッダーがすでに送信されている問題が発生するため、通常はデバッグ表示もオフのままにします。
編集:
そのため、_wp-includes/load.php
_のメソッドwp_debug_mode()
の最後の行でajaxリクエストのエラーレポートがオフになっているようです。
_if ( defined( 'XMLRPC_REQUEST' ) || defined( 'REST_REQUEST' ) || ( defined( 'WP_INSTALLING' ) && WP_INSTALLING ) || wp_doing_ajax() ) {
@ini_set( 'display_errors', 0 );
}
_