查看近期目錄變化檔案,並且每日寄信通知
// 將 scan_directory 函數移到外部,並加上前綴以避免衝突 function custom_scan_directory($directory, $exclude_extensions, $exclude_directories, $now) { $output = ''; $files_found = false; if ($handle = opendir($directory)) { while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { $file_path = $directory . $file; // 排除指定的目錄 if (is_dir($file_path) && !in_array(basename($file_path), $exclude_directories)) { // 如果是子目錄,則遞迴掃描 $sub_output = custom_scan_directory($file_path . '/', $exclude_extensions, $exclude_directories, $now); if ($sub_output) { $output .= $sub_output; $files_found = true; } } else if (!is_dir($file_path)) { // 排除特定副檔名的檔案 if (!in_array(pathinfo($file_path, PATHINFO_EXTENSION), $exclude_extensions)) { $file_modified_time = filemtime($file_path); // 如果檔案在最近兩天內被修改過 if (($now - $file_modified_time) <= 2 * 24 * 60 * 60) { $output .= '<li>' . $file_path . ' - ' . date("Y-m-d H:i:s", $file_modified_time) . '</li>'; $files_found = true; } } } } } closedir($handle); } return $files_found ? $output : ''; } function list_recent_files_from_directories($send_email = false) { $directories = ['/var/www/wp/']; $exclude_extensions = ['jpg', 'png']; $exclude_directories = ['cache', 'podscache']; $now = time(); $output = ''; // 設定時區為台北時間 date_default_timezone_set('Asia/Taipei'); foreach ($directories as $directory) { $directory_output = custom_scan_directory($directory, $exclude_extensions, $exclude_directories, $now); if ($directory_output) { $output .= '<h3>Directory: ' . $directory . '</h3>'; $output .= '<ul>'; $output .= $directory_output; $output .= '</ul>'; } } // 如果設置了發送郵件 if ($send_email && !empty($output)) { $subject = '近期變更檔案'; $recipients = ['yourmail@gmail.com']; wp_mail($recipients, $subject, $output, ['Content-Type: text/html; charset=UTF-8']); } return $output; } // 添加 shortcode add_shortcode('recent_files_multiple', 'list_recent_files_from_directories'); // 註冊每日計劃任務 if (!wp_next_scheduled('daily_send_recent_files_report')) { wp_schedule_event(strtotime('00:00:00'), 'daily', 'daily_send_recent_files_report'); } // 定義計劃任務 add_action('daily_send_recent_files_report', 'send_recent_files_report'); function send_recent_files_report() { list_recent_files_from_directories(true); }