1. Tại sao nên dùng Environment Variables?
- Tránh lưu thông tin nhạy cảm trực tiếp trong code (API key, DB credentials…)
- Tách biệt rõ môi trường dev/staging/prod mà không sửa file code mỗi lần
- Dễ tích hợp với các dịch vụ CI/CD, Docker hoặc hệ thống version control
Ví dụ: Trong môi trường local bạn có thể bật WP_DEBUG, nhưng production thì không.
2. Tạo file .env và sử dụng thư viện PHP dotenv
WordPress không hỗ trợ sẵn đọc biến môi trường từ file .env, vì vậy bạn nên cài thư viện vlucas/phpdotenv:
composer require vlucas/phpdotenv
Trong thư mục gốc của site (nơi có wp-config.php), tạo file .env:
# .env
APP_ENV=local
WP_DEBUG=true
API_KEY=abc123xyz
CUSTOM_ENDPOINT=https://api.domain.com
3. Tích hợp dotenv vào wp-config.php
// wp-config.php (phần đầu file)
if (file_exists(__DIR__ . '/vendor/autoload.php')) {
require_once __DIR__ . '/vendor/autoload.php';
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();
}
Giờ bạn có thể sử dụng các biến này như sau:
define('WP_DEBUG', filter_var($_ENV['WP_DEBUG'] ?? false, FILTER_VALIDATE_BOOLEAN));
define('APP_ENV', $_ENV['APP_ENV'] ?? 'production');
$api_key = $_ENV['API_KEY'] ?? '';
$custom_endpoint = $_ENV['CUSTOM_ENDPOINT'] ?? 'https://default.domain.com';
4. Dùng biến môi trường trong theme/plugin
Chỉ cần đảm bảo bạn đã load .env từ wp-config.php, các biến $_ENV có thể dùng ở bất kỳ đâu:
// Trong theme/plugin
$api = $_ENV['API_KEY'] ?? null;
if ($api) {
// gửi request...
}
5. Không dùng Composer? Có cách khác?
Nếu bạn không dùng Composer, bạn có thể viết đoạn code đọc file .env đơn giản như sau:
// functions/load-env.php
$env = parse_ini_file(__DIR__ . '/../.env');
foreach ($env as $key => $val) {
$_ENV[$key] = $val;
}
Và load file đó từ wp-config.php:
require_once __DIR__ . '/functions/load-env.php';
6. Lưu ý bảo mật
Đảm bảo file .env không bị public – thêm dòng này vào .htaccess:
<Files .env>
Order allow,deny
Deny from all
</Files>
Không commit file .env lên Git – thêm vào .gitignore
.env
.env.*
Kết luận
Biến môi trường là cách làm chuyên nghiệp và an toàn hơn khi phát triển WordPress. Dù bạn đang làm site đơn giản hay xây dựng hệ thống phức tạp với nhiều môi trường, việc triển khai .env ngay từ đầu sẽ giúp bạn tiết kiệm thời gian, tránh sai sót và bảo mật tốt hơn.
Bình luận