0
Your Rating
use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; add_action('wp_ajax_mme_export', function(){ if (!current_user_can('manage_options')) wp_die('Không đủ quyền.'); $ids = json_decode(stripslashes($_POST['ids'] ?? '[]'), true); if (empty($ids)) wp_die('No IDs selected'); // Include autoload PhpSpreadsheet nếu chưa include if (!class_exists('PhpOffice\PhpSpreadsheet\Spreadsheet')) { require_once __DIR__ . '/vendor/autoload.php'; } $spreadsheet = new Spreadsheet(); $sheet = $spreadsheet->getActiveSheet(); // Tiêu đề cột theo thứ tự mong muốn $sheet->fromArray(['Content', 'Title', 'ID', 'Thumbnail'], null, 'A1'); $row_num = 2; // dữ liệu bắt đầu từ dòng 2 global $wp_manga_functions; foreach ((array)$ids as $i => $manga_id) { $post = get_post($manga_id); if (!$post || $post->post_type !== 'wp-manga') continue; $payload = mme_get_first_chapter_payload($post->ID); // Bỏ truyện rỗng nội dung chương 1 $chapter_text = trim($payload['content'] ?? ''); if ($chapter_text === '') continue; // Bỏ truyện không có thumbnail if (!has_post_thumbnail($post->ID)) continue; $thumb_url = get_the_post_thumbnail_url($post->ID, 'full'); // GHÉP CONTENT $content = "#truyenful #truyenmoihay\n📚\n"; $content .= $chapter_text . "\n\n"; $cta_list = [ 'LINH FULL ĐÃ ĐƯỢC GHIM! Để đường dẫn hiển thị rõ ràng. KÉO XUỐNG CMT, nhớ BẬT XEM TẤT CẢ để thấy linh nha mọi người!', 'Truyện FULL đã được ghim! 🚀 Kéo xuống phần CMT, bật XEM TẤT CẢ để không bỏ lỡ nha mọi người!', 'ĐỪNG LƯỚT QUA! LINH FULL có sẵn, kéo xuống phần CMT và bật XEM TẤT CẢ để lấy link ngay!', 'Cập nhật FULL rồi nè! ⬇️ Kéo xuống comment, nhớ bật XEM TẤT CẢ để nhận link nha cả nhà!', 'LINH FULL đã sẵn sàng! Kéo xuống CMT, bật XEM TẤT CẢ để đường dẫn hiển thị đầy đủ!' ]; $content .= $cta_list[array_rand($cta_list)] . "\n\n"; $content .= $post->ID; // Ghi vào sheet theo thứ tự Content, Title, ID, Thumbnail $sheet->setCellValue("A{$row_num}", $content); $sheet->setCellValue("B{$row_num}", html_entity_decode($post->post_title, ENT_QUOTES | ENT_HTML5, 'UTF-8')); $sheet->setCellValue("C{$row_num}", $post->ID); $sheet->setCellValue("D{$row_num}", $thumb_url); $row_num++; // Đánh dấu đã export update_post_meta($post->ID, '_mme_exported', 1); } // Xuất file Excel $writer = new Xlsx($spreadsheet); $filename = 'manga-export-' . date('Y-m-d_H-i') . '.xlsx'; header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment; filename="' . $filename . '"'); header('Cache-Control: max-age=0'); $writer->save('php://output'); exit; });
Mẹ chồng vừa cắn một miếng bánh đào giòn tan vừa ung dung lên tiếng:
“Đàn bà thì phải ăn đòn.”
Ngay khoảnh khắc cái t/át ấy giáng xuống, bàn tay anh ta vẫn run lẩy bẩy.
Không phải vì thương xót, mà là vì lo rằng ra tay quá nhẹ sẽ khiến mẹ anh ta không vừa ý.
Sau khi t/át xong, anh ta rụt rè quay sang nhìn mẹ mình, giống hệt một con chó đang chờ chủ ban lời khen.
Mẹ chồng tôi nhếch môi, gật đầu đầy thỏa mãn: “Phải như vậy từ sớm thì có phải tốt hơn không.”
Tôi đưa tay chạm vào gò má đang nóng rát, không khóc, cũng không nổi loạn.
Tôi đứng lên, bước vào phòng ngủ rồi khóa chốt cửa lại.
Mười bốn tiếng sau, anh ta quỳ giữa phòng khách trống không, vừa khóc vừa gọi điện cho tôi.
Nhưng khi đó, tôi đã chặn số anh ta từ lâu.