はじめに
WordPressで開発や運用を行っている際、トラブルシューティングのために生成されるdebug.logの中身を頻繁に確認する必要がある場面は少なくありません。
通常であれば、FTPクライアントを使用してサーバーへアクセスし、ファイルをダウンロードして確認するという手間が発生します。
しかし、管理画面から直接ログファイルの内容を確認でき、かつボタン一つでファイルを削除できる仕組みがあれば、作業効率は大幅に向上します。
この記事では、この方法について説明します。
完成イメージ

実装手順
以下のコードをfunctions.phpに追加します。
// ダッシュボードウィジェットを追加
add_action('wp_dashboard_setup', function () {
wp_add_dashboard_widget(
'debug-log',
'デバッグログ',
'render_debug_log'
);
});
/**
* ダッシュボードにウィジェットを出力
*
* @return void
*/
if (!function_exists('render_debug_log')):
function render_debug_log() {
$log_file = WP_CONTENT_DIR . '/debug.log';
$log_url = content_url('/debug.log');
$nonce = wp_create_nonce('debug_log_action');
?>
<div class="debug-log">
<?php if (file_exists($log_file)): ?>
<iframe src="<?= esc_url($log_url); ?>" style="width: 100%; height: 200px; border: 1px solid #ccc;"></iframe>
<?php else: ?>
<p class="debug-log__message">現在、debug.logは存在しません。</p>
<?php endif; ?>
<button id="delete-log-btn" class="button button-primary debug-log__delete" data-nonce="<?= esc_attr($nonce); ?>">ログを削除</button>
</div>
<script>
jQuery(function ($) {
$("#delete-log-btn").on("click", function () {
if (!confirm("本当にdebug.logを削除しますか?")) {
return;
}
var $button = $(this);
$button.prop('disabled', true);
$.post(ajaxurl, {
action: "delete_debug_log",
debug_log_nonce: $button.data("nonce")
}, function (response) {
alert(response);
location.reload();
}).fail(function () {
alert("通信に失敗しました。");
$button.prop('disabled', false);
});
});
});
</script>
<?php
}
endif;
// Ajaxアクションを追加
add_action('wp_ajax_delete_debug_log', function () {
// nonceチェック
if (!isset($_POST['debug_log_nonce']) || !wp_verify_nonce($_POST['debug_log_nonce'], 'debug_log_action')) {
wp_die('セキュリティチェックに失敗しました。');
}
// 権限チェック
if (!current_user_can('manage_options')) {
wp_die('権限がありません。');
}
$log_file = WP_CONTENT_DIR . '/debug.log';
if (!file_exists($log_file)) {
wp_die('ファイルは既に存在しません。');
}
if (unlink($log_file)) {
echo 'debug.logを削除しました。';
} else {
echo 'ファイルの削除に失敗しました。パーミッションを確認してください。';
}
wp_die();
});
さいごに
今回紹介した方法を使えば、普段のWordPress開発や運用において、わざわざFTPソフトやサーバーのファイルマネージャーを開かずに、管理画面上から直接デバッグログの確認と削除を行えるようになります。
開発効率が向上するだけでなく、トラブル発生時の初動対応も迅速になるはずです。
ぜひご自身の環境に合わせてカスタマイズし、より快適な開発環境を構築してみてください。
