Những thiết lập file wp-config.php hữu ích có thể bạn chưa biết

wp-config Explained

   Đúng như tên của nó wp-config.php là tập tin chứa thông tin cấu hình và “định nghĩa” nhiều thông tin quan trọng cho WordPress… trong bài viết này mình sẽ cố gắng giới thiệu và giải thích chi tiết nhiều thiết lập trong wp-config.php rất thú vị mà có thể bạn chưa biết …

  • Cảnh báo:

   Nhắc nhở không bao giờ thừa là đừng quên sao lưu tập tin wp-config.php của bạn trước khi chỉnh sửa, phòng trường hợp 😑 xui…

Bảo mật cho tập tin wp-config.php (CHMOD mặc định của tập tin wp-config.php0644)

Cách thứ 1:
   Di chuyển tập tin wp-config.php lên một cấp thư mục cao hơn thư mục cài đặt WordPress

Ví dụ:
   Bạn cài đặt WordPress vào thư mục gốc của website (public_html) bạn có thể di chuyển wp-config.php lên và đặt ngang hàng với public_html

Cách thứ 2:
   CHMOD tập tin wp-config.php thành 400 hoặc 440 một số máy chủ không hỗ trợ có thể tự động chuyển CHMOD 400 thành 600 hay 440 thành 640 như host GoDaddy mình đang dùng. Lưu ý là bạn chỉ dùng CHMOD khi máy chủ là Linux còn bạn thuê host chạy máy chủ Windows thì khỏi cần.

Cách thứ 3:
   Thêm đoạn mã sau vào tập tin .htaccess đặt trong thư mục cài đặt WordPress của bạn.


   Order Allow,Deny
   Deny from all


Sau đây là những đoạn code thiết lập giúp tùy biến WordPress của bạn với wp-config.php.

1. Quy định lại địa chỉ thư mục cài đặt WordPress và trang chủ:

   Bạn có thể quy định lại (ghi đè lên quy định mặc định trong Settings -> General) địa chỉ tuyệt đối của thư mục cài đặt WordPress và địa chỉ website chính của bạn. Bằng cách thêm đoạn mã sau vào tập tin wp-config.php. Nhớ sửa lại tên miền của bạn.

/* Quy định đường dẫn chính của website */
define( 'WP_SITEURL', 'https://dohuytuong.com' );
/* Quy định đường dẫn đến thư mục cài đặt WordPress */
define( 'WP_HOME', 'https://dohuytuong.com/blog/' );

   Với thiết lập này bạn có thể dùng khi cần di chuyển thư mục cài đặt WordPress sang một đường dẫn (thư mục) mới mà không cần phải chỉnh sửa gì trong database.


2. Thay đổi thời gian tự động lưu bài viết:

   Theo mặc định WordPress sẽ tự động lưu bài viết đang soạn thảo của bạn trong WordPress Admin – Posts là 60 giây… bạn có thể tăng giảm thời gian này tùy thích bằng cách thêm đoạn mã sau vào tập tin wp-config.php.

/* Quy định thời gian tự động sao lưu bài viết khi soạn bài */
define( 'AUTOSAVE_INTERVAL', 180 ); // Thời gian tính bằng giây

Trong đoạn mã bên trên mình tăng thời gian lên 3 phút là 180 giây.


3. Vô hiệu hóa/giảm số lượng bài viết nháp:

   WordPress mặc định cho phép bạn lưu không giới hạn số lượng các bản nháp của bài viết (Post Revisions), phòng trường hợp bạn muốn phục hồi lại bài viết ở lần lưu trước… tuy nhiên bạn có thể vô hiệu hóa hoặc giới hạn số bản nháp WordPress được phép lưu trữ lại nhằm giảm nhẹ dung lượng cho database.

Thêm đoạn mã sau vào wp-config.php nếu bạn muốn vô hiệu hóa tính năng lưu nháp.

/* Khóa tính năng tự động lưu nháp khi soạn bài viết mới  */
define( 'WP_POST_REVISIONS', FALSE );

Thêm đoạn mã sau vào nếu bạn muốn giảm số lượng bản nháp. Mình chọn số lượng là 3.

/* Cố gắng giới hạn số lượng bản lưu nháp khi soạn bài viết  */
define( 'WP_POST_REVISIONS', 3 ); // Giới hạn là 3 bản nháp + 1 Autosave

4. Bật chế độ debug:

   Nếu bạn là plugin hay theme developer… sẽ rất hữu ích nếu bạn bật chế độ debug, WordPress sẽ highlight những lỗi có thể phát sinh trong quá trình bạn code. Theo mặc định chế độ này bị tắt. Bạn có thể mở tập tin wp-config.php và tìm dòng define(‘WP_DEBUG’, false ); và thay nó bằng.

/* Bật tính năng debug cho WordPress */
define('WP_DEBUG', true );

5. Tăng bộ nhớ PHP cho WordPress:

   Việc cài đặt quá nhiều plugin sẽ ngốn rất nhiều bộ nhớ cho WordPress có thể khiến bạn nhận báo lỗi “out of PHP memory” bằng cách thêm đoạn mã sau vào wp-config.php sẽ giúp bạn tăng lượng bộ nhớ PHP mà WordPress có thể sử dụng.

/* Tăng giới hạn bộ nhớ tối đa cho WordPress có thể sử dụng (Mặc định là 40MB) */
define( 'WP_MEMORY_LIMIT', '128M' );
/* Giới hạn bộ nhớ tối đa mà plugin có thể dùng khuyến cáo là ít nhất 128MB */
define( 'WP_MAX_MEMORY_LIMIT', '512M' );

   Ngoài ra các bạn có thể tham khảo thêm bài viết Sự khác biệt giữa WP_MEMORY_LIMIT và WP_MAX_MEMORY_LIMIT


6. Đổi ngôn ngữ cho WordPress Admin:

   Nếu tiếng Anh không phải là tiếng bạn thuần thục bạn có thể thêm đoạn mã sau vào wp-config.php để quy định ngôn ngữ hiển thị khác.

/* Quy định lại ngôn ngữ WordPress sẽ hiện thị */
define( 'WPLANG', 'de_DE' );

   Trong ví dụ trên mình lấy là tiếng Đức… lưu ý là tập tin *.mo của ngôn ngữ muốn đổi phải được upload vào thư mục wp-content/languages.


7. Dọn rác cho WordPress:

   Theo mặc định WordPress quy định những bài viết, trang, hình ảnh… được đưa vào mục Trash sẽ bị xóa trong vòng 30 ngày. Bạn có thể tăng giảm hoặc xóa thẳng (chọn giá trị là 0) các bài viết này bằng cách thêm đoạn mã sau vào wp-config.php

/* Giới hạn số ngày WordPress xóa các bài viết, trang ... trong thùng rác */
define( 'EMPTY_TRASH_DAYS', 365 ); // Xóa rác sau 1 năm.

Trong đoạn mã trên mình tăng thời gian lên đến 365 ngày.

Media - Library - Trash

   Theo mặc định WordPress chỉ bật tính năng Trash cho bài viết (Post) và trang (Page), còn tính năng Trash cho thư viện Media Library thì không. Bạn có bật tính năng Trash Can (Thùng Rác) cho phép WordPress di chuyển các tập tin hình ảnh, nhạc… vào Thùng Rác (Trash Can) bằng cách thêm đoạn mã sau:

/* Bật tính năng Thùng Rác (Trash Can) cho WordPress Media Library */
define( 'MEDIA_TRASH', true );

Move to Trash


8. Giới hạn chỉnh sửa, cài đặt, cập nhật plugin/theme trực tiếp từ WordPress Admin

   Theo mặc định WordPress cho phép bạn sửa mã nguồn của theme/plugin trực tiếp từ WordPress Admin, với một đoạn code sau đây chèn trực tiếp vào wp-config.php có thể giúp bạn tắt tính năng này… rất phù hợp với những blog có nhiều admin quản lý.

/* Không cho phép truy cập chỉnh sửa mã nguồn của theme/plugin... từ WordPress Admin */
define( 'DISALLOW_FILE_EDIT', true );

   Còn nếu bạn muốn tắt luôn tính năng cài đặt và cập nhật theme/plugin trong WordPress Admin thì thêm đoạn mã sau.

/* Không cho phép truy cập, cài đặt và cập nhật theme/plugin... từ WordPress Admin */
define( 'DISALLOW_FILE_MODS', true );

Disable Install Plugin for WordPress

   Ngoài ra các bạn có thể tham khảo thêm bài viết Khóa chỉnh sửa và cài đặt plugin/theme trong WordPress Admin


9. Khai báo thông tin tài khoản FTP và SSH:

   Một số dịch vụ hosting chưa được cấu hình tối ưu với WordPress khi bạn cố gắng upload một plugin/theme trực tiếp từ WordPress Admin sẽ bị bật hộp thoại thông báo đòi nhập lại thông tin tài khoản FTP để xác nhận. Với thủ thuật sau sẽ giúp bạn bỏ qua yêu cầu này một cách dễ dàng. Chèn đoạn mã sau (nhớ tùy chỉnh lại cho phù hợp) vào wp-config.php.

define( 'FS_METHOD', 'ftpext' );
define( 'FTP_BASE', '/path/to/wordpress/installation/' );
define( 'FTP_CONTENT_DIR', '/path/to/wp-content/' );
define( 'FTP_PLUGIN_DIR ', '/path/to/wp-content/plugins/' );
define( 'FTP_PUBKEY', '/home/username/.ssh/id_rsa.pub' );
define( 'FTP_PRIKEY', '/home/username/.ssh/id_rsa' );
define( 'FTP_USER', 'username' );
define( 'FTP_PASS', 'password' );
define( 'FTP_HOST', 'ftp.example.org:21' );
define( 'FTP_SSL', false ); // Đổi thành 'true' nếu bạn dùng port 22 sftp

Trong đó:

  • FileSystem Method – either direct, ssh2, ftpext or ftpsockets
  • FTP Base – đường dẫn thư mục bạn cài đặt WordPress
  • Content Directory – đường dẫn đến thư mục wp-content
  • Plugin Directory – đường dẫn đến thư mục chứa plugin
  • Public Key – đường dẫn đến thư mục chứa SSH public key
  • Private Key – đường dẫn đến thư mục chứa SSH private key
  • FTP User – tài khoản FTP hoặc là SSH của bạn
  • FTP Pass – mật mã của tài khoản FTP của bạn.
  • FTP Host – host và cổng của giao thức FTP/SSH server (FTP mặc định là 21 và SSH là 22)
  • FTP SSL – sử dụng giao thức SFTP tùy máy chủ bạn thuê có hỗ trợ không

   Giờ hầu như mấy dịch vụ hosting có tiếng đều hỗ trợ WordPress tận răng hết rồi … chắc chỉ còn vài hosting free cùi mía thì may ra mới cần dùng thủ thuật này.


10. Bật tính năng cache, nén CSS, script tăng tốc cho WordPress:

   Chèn đoạn mã sau vào tập tin wp-config.php nhằm bật tính năng tạo cache và nén CSS cũng như các mã script nhằm tăng tốc cho blog của bạn… tuy nhiên mình khuyến cáo nên dùng một plugin cache chuyên dụng như W3 Total Cache hay WP Super Cache sẽ tăng tốc cho blog bạn hiệu quả hơn.

define( 'WP_CACHE', true );  
define( 'COMPRESS_CSS', true );
define( 'COMPRESS_SCRIPTS', true );
define( 'ENFORCE_GZIP', true );

11. Quy định lại đường dẫn thư mục wp-content:

   Từ WordPress bản 2.6 trở đi, bạn có thể di chuyển thư mục wp-content để một vị trí bất kỳ khác mà vẫn không ảnh hưởng đến nội dung blog. Bạn chỉ cần thêm một vài dòng mã cấu hình đường dẫn vào tập tin wp-config.php. Xem đoạn mã ví dụ bên dưới rồi sửa lại cho phù hợp.

define( 'WP_CONTENT_DIR', $_SERVER['DOCUMENT_ROOT'] . '/blog/wp-content' );
define( 'WP_CONTENT_URL', 'http://example.com/blog/wp-content' );
define( 'WP_PLUGIN_DIR', $_SERVER['DOCUMENT_ROOT'] . '/blog/wp-content/plugins' );
define( 'WP_PLUGIN_URL', 'http://example.com/blog/wp-content/plugins' );

12. Quy định lại đường dẫn thư mục uploads:

Nếu chỉ muốn di chuyển thư mục uploads bạn có thể thêm dòng mã sau vào tập tin wp-config.php để khai báo lại đường dẫn mới đến thư mục uploads

/* Đổi đường dẫn cho thư mục Uploads của WordPress */
define( 'UPLOADS', 'blog-của-bạn/dữ-liệu/uploads' );

Lưu ý:
   Không được sử dụng đường dẫn tuyệt đối vì có liên quan đến ABSPATH của WordPress.


13. Quy định lại đường dẫn thư mục themes:

   Nếu chỉ muốn di chuyển thư mục themes bạn có thể thêm dòng mã sau vào tập tin wp-config.php để khai báo lại đường dẫn mới đến thư mục themes.

/* Đổi lại đường dẫn cho thư mục chứa theme */
$theme_root = WP_CONTENT_DIR . '/theme-cho-blog'; 

Lưu ý:
   Rất tiếc là bạn không thể thay đổi thư mục chứa theme nằm ngoài thư mục wp-content vì có liên quan mật thiết đến nhân của WordPress.


14. Đổi mã authentication key mới (chả biết dịch sao):

   Mã authentication key (còn được gọi là security key) được dùng để mã hóa thông tin tài khoản thành viên (như username và password) được lưu trong cookies (từ phiên bản 2.6 trở đi WordPress sử dụng 3 key là AUTH_KEY, SECURE_AUTH_KEYLOGGED_IN_KEY thay vì chỉ 1 như ở bản 2.5 nhằm tăng bảo mật). Bạn nên đổi authentication key nếu nghi ngờ blog mình bị hack. Bạn có thể dùng công cụ tạo mã authentication key có sẵn của WordPress tại đây.

Sau đây là đoạn mã chứa authentication key trong wp-config.php

define( 'AUTH_KEY', 'Mã authentication key của bạn' );
define( 'SECURE_AUTH_KEY', 'Mã authentication key của bạn' );
define( 'LOGGED_IN_KEY', 'Mã authentication key của bạn' );
define( 'NONCE_KEY', 'Mã authentication key của bạn' );

Nếu bạn sử dụng WPMU thì cần sửa thêm 3 key nữa

define( 'AUTH_SALT', 'Mã authentication key của bạn' );
define( 'LOGGED_IN_SALT', 'Mã authentication key của bạn' );
define( 'SECURE_AUTH_SALT', 'Mã authentication key của bạn' );

Lưu ý:
   Sau khi bạn cập nhật authentication key, WordPress sẽ tạo lại cookies mới nên mọi thành viên đã đăng nhập buộc phải login lại (bị kick ra).


15. Tự động tối ưu hóa database:

   Từ phiên bản 2.9 trở đi WordPress cho phép bạn bật tính năng tự động tối ưu hóa database… (tối ưu và sửa một số lỗi phát sinh trong quá trình sử dụng như đang upload tập tin thì bị rớt mạng, đang trong quá trình publish bài viết thì server die… gây lỗi corrupt). Để bật tính năng này bạn cần chèn thêm dòng mã sau vào tập tin wp-config.php

/* WordPress tự động sửa lỗi và tối ưu database */
define( 'WP_ALLOW_REPAIR', false );  // Script URL - /wp-admin/maint/repair.php 

Đoạn mã script tối ưu database cho WordPress bạn có thể tìm tại /wp-admin/maint/repair.php


16. Mã hóa và sử dụng giao thức https (SSL):

   Nếu bạn muốn tài khoản và mật mã của mình được mã hóa khi đăng nhập WordPress Admin, nhưng vẫn sử dụng giao thức http (non-SSL) khi truy cập WordPress Admin thì chỉ cần thêm đoạn mã sau vào tập tin wp-config.php

/* Ép buộc sử dùng giao thức https trong quá trình đăng nhập */
define( 'FORCE_SSL_LOGIN', true );

   Còn nếu bạn muốn tăng tính bảo mật ép buộc toàn bộ quá trình từ lúc đăng nhập WordPress Admin cho đến toàn bộ quá trình truy cập WordPress Admin đều phải sử dụng giao thức https thì bạn có thể đoạn mã sau vào tập tin wp-config.php

/* Ép buộc WordPress sử dụng giao thức https khi đăng nhập và quản lý trang WP-Admin */
define( 'FORCE_SSL_ADMIN', true );

Lưu ý:
   Không phải host nào cũng hỗ trợ SSL, và có thế có một số plugin chưa được cấu hình để chạy với giao thức https nên sẽ bị lỗi, bạn nên kiểm tra lại thông tin host của mình trước khi áp dụng.


   Trên đây là một số thay đổi thiết lập cấu hình WordPress cho tập tin wp-config.php mà mình thấy hay và hữu dụng nhất… bạn có thể tham khảo thêm về cấu hình tập tin wp-config.php tại đây.


[ Cập nhật và sửa lỗi lần cuối May 26, 2022 ]


Leave a Reply

Your email address will not be published. Required fields are marked *