Khi website WordPress có hàng trăm nghìn đến hàng triệu bài viết, việc thao tác qua /wp-admin/ trở nên cực kỳ chậm chạp. Mỗi request phải tải hàng trăm file PHP, khởi tạo toàn bộ plugin, theme và hệ thống hook.
Giải pháp tối ưu là bỏ qua admin mặc định, và include trực tiếp wp-load.php để viết admin riêng, hoặc chạy các script riêng (cron, import, sync, thống kê, …).


⚙️ 1. Vấn đề hiệu năng của /wp-admin/

Khi truy cập WordPress Admin, hệ thống sẽ:

  • Load toàn bộ core (>200 file PHP)
  • Gọi hàng chục hook (admin_init, admin_menu, …)
  • Nạp tất cả plugin đang active (kể cả không dùng)
  • Truy vấn liên tục wp_options
  • Sinh HTML phức tạp, enqueue CSS/JS, REST API, v.v.

Hậu quả:

⚠️ Với dữ liệu lớn (hàng trăm nghìn bản ghi), mỗi thao tác có thể tốn hàng giây, CPU cao, RAM tăng mạnh.


🚀 2. Giải pháp: include wp-load.php

Thay vì dùng /wp-admin/, bạn có thể tạo file PHP riêng và nạp môi trường WordPress tối thiểu.

Ví dụ:

<?php
require_once '/var/www/domain.com/public/wp-load.php';

global $wpdb;

$results = $wpdb->get_results("
    SELECT ID, post_title FROM wp_posts
    WHERE post_type='post' AND post_status='publish'
    ORDER BY ID DESC
    LIMIT 100
");

foreach ($results as $r) {
    echo $r->ID . ' - ' . $r->post_title . '<br>';
}

✅ Ưu điểm:

  • Không load giao diện admin
  • Không load plugin/theme không cần thiết
  • Vẫn dùng được các hàm WordPress (get_post(), update_post_meta(), …)
  • Tốc độ nhanh hơn wp-admin 3–10 lần

⚡ 3. Tăng tốc cực đại với SHORTINIT

Đây là “vũ khí bí mật” của WordPress:

define('SHORTINIT', true);
require_once '/var/www/domain.com/public/wp-load.php';

👉 SHORTINIT là gì?

SHORTINIT báo cho WordPress rằng:

“Chỉ khởi tạo phần tối thiểu, bỏ qua plugin, theme, REST API, hooks…”

Khi bật SHORTINIT, WordPress chỉ load các file nền tảng như:

  • load.php
  • default-constants.php
  • plugin.php
  • formatting.php
  • meta.php
  • functions.php
  • class-wp-error.php
  • l10n.php
  • capabilities.php

Tức là:

  • ✅ Có $wpdb, esc_sql(), sanitize_text_field()
  • ❌ Không có wp_insert_post(), get_post(), wp_schedule_event(), …

🧱 4. Bổ sung hàm cần thiết khi dùng SHORTINIT

Nếu bạn cần thêm bài viết, cập nhật meta hoặc user, chỉ cần include thêm các file core tương ứng:

require_once ABSPATH . WPINC . '/post.php';
require_once ABSPATH . WPINC . '/meta.php';
require_once ABSPATH . WPINC . '/taxonomy.php';
require_once ABSPATH . WPINC . '/user.php';
require_once ABSPATH . WPINC . '/pluggable.php';

Những file này chứa:

  • wp_insert_post(), wp_update_post()
  • update_post_meta(), add_post_meta()
  • wp_set_post_terms()
  • wp_get_current_user()

🧩 5. Ví dụ hoàn chỉnh: insert post bằng SHORTINIT

<?php
// Bật chế độ SHORTINIT
define('SHORTINIT', true);
require_once '/var/www/domain.com/public/wp-load.php';

// Nạp các file cần thiết
require_once ABSPATH . WPINC . '/post.php';
require_once ABSPATH . WPINC . '/meta.php';
require_once ABSPATH . WPINC . '/taxonomy.php';
require_once ABSPATH . WPINC . '/user.php';
require_once ABSPATH . WPINC . '/pluggable.php';

global $wpdb;

// Chuẩn bị dữ liệu
$new_post = array(
    'post_title'   => 'Bài viết test SHORTINIT',
    'post_content' => 'Nội dung bài viết được thêm bằng script riêng.',
    'post_status'  => 'publish',
    'post_author'  => 1,
    'post_type'    => 'post'
);

// Insert bài viết
$post_id = wp_insert_post($new_post, true);

if (is_wp_error($post_id)) {
    echo "❌ Lỗi khi insert: " . $post_id->get_error_message();
} else {
    echo "✅ Thêm bài thành công, ID = $post_id";
}

Kết quả:

  • WordPress load cực nhanh (50–100ms)
  • Không load plugin/theme
  • Dữ liệu thêm vào đúng chuẩn (có thể xem trong wp-admin bình thường)

🔧 6. Thêm meta, taxonomy hoặc slug tùy chỉnh

wp_update_post(['ID' => $post_id, 'post_name' => 'bai-test-shortinit']);
update_post_meta($post_id, '_thumbnail_id', 123);
wp_set_post_terms($post_id, array('Tin nhanh', 'Xe cộ'), 'category');

Các hàm trên vẫn hoạt động trong môi trường SHORTINIT, miễn là bạn đã load đúng file core.


🧠 7. Khi nào nên dùng SHORTINIT

Tình huốngCó nên dùng
Cron job, import, export dữ liệu✅ Rất nên
Dashboard admin riêng, không cần UI WP✅ Nên
Script sync bài viết giữa các site✅ Tốt
Plugin/theme thông thường⚠️ Không cần
Frontend hiển thị cho người dùng❌ Không nên

💡 8. Lợi ích tổng hợp

Cách chạyThời gian loadTài nguyênGhi chú
/wp-admin/ mặc định400–800 msRất nặngLoad toàn bộ WP
include wp-load.php150–250 msTrung bìnhKhông có UI
SHORTINIT + load core50–100 msRất nhẹDành cho script tùy chỉnh

✅ Kết luận

define('SHORTINIT', true);một kỹ thuật tối ưu mạnh mẽ cho developer WordPress chuyên xử lý dữ liệu lớn hoặc viết hệ thống riêng.
Kết hợp SHORTINIT + wp-load.php, bạn có thể:

  • Viết cron, import, sync nhanh gấp 5–10 lần
  • Giữ toàn bộ tính tương thích database WordPress
  • Giảm tải CPU/RAM đáng kể

👉 Tóm lại: “Nếu WordPress của bạn có hơn 100.000 bài viết, hãy tách admin riêng bằng SHORTINIT — và bạn sẽ thấy WordPress thật sự nhanh.”