הקובץ wp-config.php משמש אותנו להגדרת שם מסד הנתונים של וורדפרס, שם המשתמש, הסיסמה והמיקום שלו (כמו גם קידומת הטבלאות, מפתחות אבטחה והשפה).
אך משתמשים רבים אינם יודעים כי ניתן להשתמש בקובץ wp-config.php על מנת לקבוע מגוון רחב של הגדרות המאפשרות לכם לשפר את הפונקציונליות, את הביצועים ואת אבטחת אתר הוורדפרס שלכם.
במדריך זה אחלוק לא מעט טריקים של קונפיגורציה שנתקלתי בהם במהלך השנים. המדריך יכסה אפשרויות המפורטות ב WordPress Developer Resources כמו גם אפשרויות שיכול להיות ואינכם מכירים….
הנה תמונה של קובץ wp-config.php טיפוסי הנקרא במילים אחרות WordPress Configuration File:

בואו נראה מספר הגדרות או ״אופטימיזציות״ שניתן לבצע דרך קובץ זה:
1. הגדרות מסד נתונים
ארבעת הגדרות אלו נחוצות על מנת שוורדפרס תוכל להתחבר למסד הנתונים:
define('DB_NAME', 'database-name');
define('DB_USER', 'database-username');
define('DB_PASSWORD', 'database-password');
define('DB_HOST', 'localhost');שם מסד הנתונים, שם המשתמש והסיסמא הן ההגדרות אשר קבעתם היצירה של מסד הנתונים, אך ההגדרה DB_HOST קצת יותר קשה לפיצוח. ברוב המקרים הערך שלה צריך להיות localhost אך ישנן חברות אחסון הדורשות ערך אחר.
ניתן אף לקבוע פורט אחר לשרת של מסד הנתונים, הנה שתי דוגמאות:
define('DB_HOST', 'localhost:1234');define('DB_HOST', 'mysql.domain.tld:1234');עוד טריק נחמד הוא לזהות את שרת מסד הנתונים בצורה אוטומטית:
define('DB_HOST', $_ENV{DATABASE_SERVER});אם עדיין אתם מתקשים למצוא את הערך הנכון במקרה זה דברו עם חברת האחסון שלכם ובקשו את המידע.
2. מסד הנתונים – Collation & Character Set
מגירסת וורדפרס 2.2, יש באפשרותכם לקבוע את ה Character Set של טבלאות ה MySQL. בגדול אין צורך לגעת בהגדרה זה מכיוון וברירת המחדל היא UTF-8 וזו הגדרה אשר תומכת בכל השפות. הנה ההגדרה המומלצת (הגדרת ברירת המחדל):
define('DB_CHARSET', 'utf8');וורדפרס בגירסה 2.2 ומעלה מאפשרת לכם גם לקבוע את ה Collation, הגדרה זו אחראית על הסדר (sort order) של ה character set במסד הנתונים. הגדרה זו בדרך כלל מתבצעת אוטומטית על ידי MySQL בהתאם ל character set ומתאפשרת על ידי השארת ערך ריק בהגדרה זו. הנה ערך ברירת המחדל המומלץ:
define('DB_COLLATE', '');הערה: השתמשו/שנו בשתי הגדרות אלו אך ורק במידה והם כבר קיימות בקובץ wp-config.php.
3. מפתחות אבטחה
וורדפרס משתמשת בשמונה מפתחות אבטחה (keys ו-salts) שנועדו להצפנה טובה יותר של עוגיות (cookies). מפתחות אלו עובדות בשקט מאחורי הקלעים ואמורות להיות כמה שיותר רנדומליות ומסובכות. הדרך הפשוטה ביותר ליצור מפתחות אלו בצורה אוטומטית היא על ידי השירות WordPress.org secret-key service.
פשוט בקרו בקישור והעתיקו את התוצאה לקובץ wp-config.php בהתקנת הוורדפרס שלכם.
ניתן לשנות מפתחות אלו בכל עת. שינוי המפתחות יבטל את כל ה-cookies הקיימים ויאלץ את כל המשתמשים המחוברים להתחבר מחדש.
define('AUTH_KEY', '_;*Yfw@]Qr#[|YDl-v$pXkPZ^;Ac&YC:|s]-pw`qJYDM<[Z7!%V66bWLu_Qr]MKF');
define('SECURE_AUTH_KEY', 'FF@{y)vPLNmMiIWW~7+fN7Zf7e9Jw37HyGRf9=$`0kg%cKrG33kkJ5 jpE6Ox)8*');
define('LOGGED_IN_KEY', 'q!0/8%dcC6Ey<t)[*r+/W/3R2L&V:=BM<zuAC!#bt&![hIu0@TgF+nqGp)aBLl-2');
define('NONCE_KEY', 'kIHaSGF92lbRElp/UZ4<)@?xoIDaxlve|]oY+53UG.v=g/[.3wz,/|yP-yhc2-aD');4. קידומת הטבלאות במסד הנתונים
קידומת הטבלאות שימושית במיוחד בכדי לחזק את אבטחת אתר הוורדפרס שלכם או להחזיק מספר התקנות וורדפרס על מסד נתונים אחד.
באמצעות שינוי של ערך ברירת המחדל wp_ למשהו יותר ייחודי, תוכלו להקשות על ניסיונות פריצה למסד הנתונים באתר שלכם ולחזק את אבטחת האתר. הנה הגדרת ברירת המחדל:
table_prefix = 'wp_';שינוי הקידומת למשהו כמו sVVV_ מוסיף שכבת הסתרה נוספת. למרות שזה לא יעצור תוקף נחוש, זה יכול למנוע סקריפטים אוטומטיים של SQL Injection המכוונים לקידומת ברירת המחדל wp_.
ניתן אף להשתמש בהגדרה זו בכדי לבצע מספר התקנות וורדפרס על מסד נתונים אחד. פשוט הגדירו את קידומת הטבלה הייחודית בכל אחת מההתקנות:
$table_prefix = 'wp1_'; // first blog
$table_prefix = 'wp2_'; // second blog
$table_prefix = 'wp3_'; // third blog5. הגדרות שפה
וורדפרס מאפשרת לכם להגדיר את קובץ התרגום של השפה בה אתם משתמשים באתר. קובץ התרגום הוא קובץ .mo ומיקום ברירת המחדל שלו הוא wp-content/languages (עם wp-includes/languages כמקור חלופי):
define('WPLANG', '');
define('LANGDIR', '');6. הגדרות הספרייה
זו אינה הגדרה שאתם צריכים לגעת בה. קוד זה מגיע עם הקובץ wp-config.php ומכיל מספר שורות המגדירות את הנתיב האבסולוטי (absolute path) ואת קובץ ההגדרות wp-settings.php.
/** WordPress absolute path to the WordPress directory. */
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');
/** Sets up WordPress vars and included files. */
require_once(ABSPATH . 'wp-settings.php');7. כתובת הבלוג וכתובת האתר
זהו החלק היותר מעניין… 🙂 שתי ההגדרות הבאות אינן מופיעות ב wp-config.php כברירת מחדל, אך יש להוסיף אותן על מנת לשפר את הביצועים של אתר הוורדפרס שלכם – בצורה מזערית יש לציין. הגדרות אלו נוספו בוורדפרס 2.2 ודורסות את ההגדרות הנמצאות במסד הנתונים (בלי לשנות אותם בפועל).
הוספת הגדרות אלו מקטינה את מספר הקריאות למסד הנתונים. וודאו שהן זהות לערכים בלוח הבקרה של וורדפרס (שימו לב: ללא "/" בסוף):
define('WP_HOME', 'https://savvy.co.il');
define('WP_SITEURL', 'https://savvy.co.il');הטריק הבא משתמש במשתנה $_SERVER['HTTP_HOST']. בעוד שזה נוח לפיתוח, הימנעו משימוש בו בסביבת ייצור מכיוון שתוקפים יכולים לזייף ערך זה.
ניתן גם לקבוע הגדרות אלו באופן דינמי באמצעות המשתנה הגלובלי $_SERVER:
define('WP_HOME', 'http://'.$_SERVER['HTTP_HOST'].'/path/to/wordpress');
define('WP_SITEURL', 'http://'.$_SERVER['HTTP_HOST'].'/path/to/wordpress');8. נתיב ה template ונתיב ה stylesheet
מאותה סיבה, ניתן לבטל קריאות מיותרות למסד הנתונים לקבלת ה-template path וה-stylesheet path. הנה הגדרות ברירת המחדל:
define('TEMPLATEPATH', get_template_directory());
define('STYLESHEETPATH', get_stylesheet_directory());כמו שהן, הו עדיין מבצעות קריאה למסד הנתונים, אך ניתן לוותר על קריאות מיותרות אלו באמצעות כתיבת הנתיבים בקוד:
define('TEMPLATEPATH', '/absolute/path/to/wp-content/themes/active-theme');
define('STYLESHEETPATH', '/absolute/path/to/wp-content/themes/active-theme');9. הגדרת דומיין לעוגיות (Cookies)
הגדרה זו מיועדת לאלו עם הגדרת דומיין לא סטנדרטית. לדוגמה, אם אתם משתמשים בסאבדומיין להגשת תכנים סטטיים (תמונות, CSS, JavaScript), תוכלו להגדיר כי Cookies יישלחו רק בדומיין הראשי.
כך הסאבדומיין הסטטי לא ישלח Cookies בכל בקשה לשרת, מה שיכול לשפר את הביצועים.
יש לכך השפעה לא מבוטלת על הביצועים של אתר הוורדפרס שלכם.
define( 'COOKIE_DOMAIN', 'www.example.com' );
10 .דריסת הרשאות של קבצים ותיקיות
אם הגדרת ההרשאות של חברת האחסון שלכם מחמירה מדי, הוספת שורות אלו לקונפיגורציה של וורדפרס יכולה לעזור. שימו לב שאין צורך במרכאות סביב הערך של ההרשאה:
define('FS_CHMOD_FILE', 0755);
define('FS_CHMOD_DIR', 0755);11. טבלאות user & usermeta מותאמות
מה לגבי שינוי הטבלאות האחראיות על המשתמשים במסד הנתונים? ניתן לשנות אלו על ידי שימוש בקוד הבא:
define('CUSTOM_USER_TABLE', $table_prefix.'my_users');
define('CUSTOM_USER_META_TABLE', $table_prefix.'my_usermeta');12. שינוי המיקום של התיקייה wp-content
מגירסת וורדפרס 2.6 ומעלה, ניתן לשנות את מיקום ברירת המחדל של התיקייה wp-content. ישנן מספר סיבות לעשות כגון אבטחת אתר הוורדפרס שלכם, ועדכוני FTP. הנה דוגמאות:
// full local path of current directory (no trailing slash)
define('WP_CONTENT_DIR', $_SERVER['DOCUMENT_ROOT'].'/path/wp-content');
// full URI of current directory (no trailing slash)
define('WP_CONTENT_URL', 'http://domain.tld/path/wp-content');יש ברשותכם גם דרך להגדיר נתיב אחר לתיקיית התוספים שלכם. אפשרות זו יכולה לעזור לפתור ענייני תאימות של תוספים מסוימים:
// full local path of current directory (no trailing slash)
define('WP_PLUGIN_DIR', $_SERVER['DOCUMENT_ROOT'].'/path/wp-content/plugins');
// full URI of current directory (no trailing slash)
define('WP_PLUGIN_URL', 'http://domain.tld/path/wp-content/plugins');13. גרסאות פוסטים
בוורדפרס ישנה מערכת מובנית לשמירת גרסאות פוסטים המאפשרת לחזור לגרסאות ישנות יותר. ישנן מספר קונפיגורציות שבאפשרותכם לבצע:
להגביל את מספר הגירסאות שנשמרות
define('WP_POST_REVISIONS', 3); // integerלבטל את הפונקציונליות של גירסאות פוסטים
define('WP_POST_REVISIONS', false);14. קביעת הזמן בין שמירה אוטומטית של פוסטים
כברירת מחדל וורדפרס שומרת גרסה של פוסט כל 60 שניות. ניתן לשנות מרווח זה:
define('AUTOSAVE_INTERVAL', 160); // in seconds15. לאפשר העלאה של כל סוגי הקבצים למנהלי מערכת
וורדפרס מגבילה את סוגי הקבצים שניתן להעלות לספריית המדיה. ניתן לאפשר העלאה של כל סוגי הקבצים למנהלי מערכת:
define( 'ALLOW_UNFILTERED_UPLOADS', true );יש לציין כי קוד זה יאפשר אך ורק למנהלי מערכת להעלות את כל סוגי הקבצים. אם אתם מעוניינים לאפשר העלאה של סוגי קבצים ספציפיים למשתמשים שאינם מנהלי מערכת, תנו מבט בפוסט איך לאפשר העלאת סוגי קבצים נוספים בוורדפרס.
16. הוספת ״פח אשפה״ (Trash) לספריית המדיה
כברירת מחדל, מחיקת תמונה בספריית המדיה היא סופית. ניתן להפעיל פח אשפה לספריית המדיה:
define( 'MEDIA_TRASH', true );כך תוכלו לשחזר קבצי מדיה שנמחקו בטעות.
17. מעקב אחר שגיאות – Debugging
וורדפרס כוללת מצב debugging מובנה המציג הודעות שגיאה והתראות על פונקציות שנזנחו (Deprecated). כברירת מחדל, debugging מושבת בסביבת ייצור:
define('WP_DEBUG', true); // enable debugging mode
define('WP_DEBUG', false); // disable debugging mode (default)אני ממליץ לכם לתת מבט המאמר הבא המסביר על דרך נכונה יותר לבצע debug לוורדפרס באמצעות WP_DEBUG_LOG.
18. הגדלת זיכרון – Increase PHP Memory
אם אתם מקבלים הודעת שגיאה בסגנון “Allowed memory size of xxx bytes exhausted״, הגדרה זו יכולה לפתור את הבעיה. ההגדרה WP_MEMORY_LIMIT מאפשרת לכם לקבוע את כמות הזיכרון הזמין לשימוש לטובת PHP. כברירת מחדל, וורדפרס מנסה לקבוע הגדרה זו כ 32MB, כך שהגדרה זו נחוצה אך ורק לערך גבוה מכך.
ישנם חברות אחסון המונעים מכם להעלות את זיכרון ה PHP ותאלצו להתחנן בפניהם לעשות זאת. הנה מספר דוגמאות:
define('WP_MEMORY_LIMIT', '64M');
define('WP_MEMORY_LIMIT', '96M');
define('WP_MEMORY_LIMIT', '128M');19. שמירה והצגה של הקריאות למסד הנתונים לצורך ניתוח
טכניקה זו שומרת כל קריאה למסד הנתונים יחד עם הפונקציה שביצעה אותה והזמן הכולל לביצוע. שימושי לניתוח ביצועים:
define('SAVEQUERIES', true);לאחר מכן, הוסיפו את הקוד הבא לפוטר של התבנית להצגת הקריאות למנהלי מערכת:
// display the query array for admin only
if (current_user_can('level_10')) {
global $wpdb;
echo "<pre>";
print_r($wpdb->queries);
echo "</pre>";
}20. ביטול האפשרות לערוך קבצים בלוח הבקרה של וורדפרס
וורדפרס כוללת עורך קבצים מובנה (לוח הבקרה > עיצוב > ערוך) המאפשר עריכת קבצי תוספים ותבניות. ביטול אפשרות זו הוא צעד מומלץ לחיזוק אבטחת האתר:
define(‘DISALLOW_FILE_EDIT’,true);21. איחוד קבצים בממשק הניהול
בכדי להאיץ את ממשק הניהול, וורדפרס מאחדת קבצי JavaScript לבקשה אחת. אם נתקלתם בשגיאות JavaScript בלוח הבקרה, ניתן לבטל את האיחוד:
define( 'CONCATENATE_SCRIPTS', false );22. אילוץ SSL בלוח הבקרה
אם לאתר שלכם יש תעודת SSL, ניתן לאלץ את כל ההתחברויות ללוח הבקרה להשתמש ב-HTTPS:
define( 'FORCE_SSL_ADMIN', true );כך תבטיחו שפרטי ההתחברות וה-cookies מועברים תמיד בחיבור מוצפן.
23. מניעת התקנת תוספים ותבניות
בעוד DISALLOW_FILE_EDIT מסיר את עורך הקבצים, DISALLOW_FILE_MODS מרחיק לכת ומונע גם התקנה, עדכון ומחיקה של תוספים ותבניות דרך לוח הבקרה:
define( 'DISALLOW_FILE_MODS', true );שימושי לסביבות ייצור בהן כל השינויים צריכים לעבור דרך מערכת ניהול גרסאות או תהליך deployment.
24. הגדרת סוג סביבת וורדפרס
מגרסת וורדפרס 5.5, ניתן להגדיר את סוג הסביבה של ההתקנה. כך תוספים ותבניות יכולים להתאים את ההתנהגות שלהם בהתאם:
define( 'WP_ENVIRONMENT_TYPE', 'production' ); // local, development, staging, or productionלדוגמה, כאשר מוגדר production, וורדפרס משביתה את הצגת שגיאות קריטיות. במצב development, WP_DEBUG מופעל כברירת מחדל.
25. העברת wp-config.php מעל תיקיית האתר
לשכבת אבטחה נוספת, ניתן להעביר את קובץ wp-config.php תיקייה אחת מעל התקנת הוורדפרס. וורדפרס בודקת אוטומטית את התיקייה ההורה, כך שאין צורך בהגדרה נוספת.
כך נמנעת גישת HTTP ישירה לקובץ, גם אם עיבוד ה-PHP בשרת נכשל. בשילוב עם הרשאות קובץ נכונות (600 או 640), זהו צעד אבטחה מומלץ.
שאלות נפוצות
לסיכום
קובץ wp-config.php הוא אחד מכלי הקונפיגורציה החזקים ביותר בוורדפרס. מעבר להגדרות מסד הנתונים הבסיסיות, הוא מאפשר לכם לשלוט באבטחה, בביצועים, ב-debugging ובניהול קבצים.
נקודות מפתח: השתמשו תמיד במפתחות אבטחה חזקים, הגבילו את מספר גרסאות הפוסטים למניעת ניפוח מסד הנתונים, בטלו את עורך הקבצים בסביבת ייצור, ושקלו להעביר את wp-config.php מעל תיקיית האתר להגנה נוספת. למידע נוסף על אבטחת האתר, עיינו במדריך שלנו לחיזוק אבטחת אתרי וורדפרס.


מאמר מדהים כמו תמיד.
שאלה לגבי הקידומת של הטבלה, אני תמיד משנה את זה למשהו של 4 אותיות, השם הזה יכול לקבל גם ספרות? מה לגבי תווים מיוחדים?
לא ניתן להשתמש בתווים מיוחדים. אותיות, מספרים וקווים תחתונים בלבד..