חיפוש ]

אופטימיזציה לקונפיגורציה של וורדפרס באמצעות wp-config.php

כפי שאתם יודעים, הקובץ wp-config.php משמש אותנו בכדי להגדיר את שם מסד הנתונים של וורדפרס, את שם המשתמש, הסיסמה והמיקום שלו (כמו גם את קידומת הטבלאות, מפתחות אבטחה והשפה).

אך משתמשים רבים אינם יודעים כי ניתן להשתמש בקובץ wp-config.php על מנת לקבוע מגוון רחב של הגדרות המאפשרות לכם לשפר את הפונקציונליות, את הביצועים ואת אבטחת אתר הוורדפרס שלכם.

במדריך זה אחלוק לא מעט טריקים של קונפיגורציה שנתקלתי בהם במהלך השנים. המדריך יכסה אפשרויות המפורטות ב WordPress Codex כמו גם אפשרויות שיכול להיות ואינכם מכירים….

הנה תמונה של קובץ wp-config.php טיפוסי הנקרא במילים אחרות WordPress Configuration File:

wordpress-wp-config-configuration

בואו נראה מספר הגדרות או ״אופטימיזציות״ שניתן לבצע דרך קובץ זה:

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. מפתחות אבטחה

מגירסת וורדפרס 2.7, ישנן ארבעה מפתחות אבטחה שנועדו להצפנה טובה יותר של עוגיות (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_ הוא דרך טובה על מנת למנוע התקפות מטורגטות אלו.

ניתן אף להשתמש בהגדרה זו בכדי לבצע מספר התקנות וורדפרס על מסד נתונים אחד. פשוט הגדירו את קידומת הטבלה הייחודית בכל אחת מההתקנות:

$table_prefix  = 'wp1_'; // first blog
$table_prefix  = 'wp2_'; // second blog
$table_prefix  = 'wp3_'; // third blog

5. הגדרות שפה

וורדפרס מאפשרת לכם להגדיר את קובץ התרגום של השפה בה אתם משתמשים באתר הוורדפרס שלכם ואת מיקומו. קובץ התרגום הוא קובץ .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 ודורסות את ההגדרות הנמצאות במסד הנתונים (בלי לשנות אותם בפועל).

הוספה של הגדרות אלו לקובץ wp-config.php תקטין את מספר הקריאות למסד הנתונים. על הגדרות אלו להיות זהות להגדרה בלוח הבקרה של וורדפרס. הנה דוגמא (שימו לב כי אין להוסיף "/" בסוף הכתובות):

define('WP_HOME', 'https://savvy.co.il');
define('WP_SITEURL', 'https://savvy.co.il');

טריק נחמד הוא לקבוע הגדרות אלו אוטמוטית על שימוש במשתנה 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 seconds

15. לאפשר העלאה של כל סוגי הקבצים למנהלי מערכת

וורדפרס מגבילה אתכם בסוגי הקבצים אותם ניתן להעלות לספריית המדיה. אינכם יכולים להעלות שום דבר מעבר לקבצי תמונות, מסמכים, קבצי אודיו וקבצי וידאו. אך מה אם אתם מעוניינים להעלות סוגי קובצים נוספים? האם עליכם להעלות אותם דרך FTP? ממש לא, כל שעליכם לעשות הוא להוסיף את השורה הבאה ל wp-config.php כמובן:

define( 'ALLOW_UNFILTERED_UPLOADS', true );

יש לציין כי קוד זה יאפשר אך ורק למנהלי מערכת להעלות את כל סוגי הקבצים. אם אתם מעוניינים לאפשר העלאה של סוגי קבצים ספציפיים למשתמשים שאינם מנהלי מערכת, תנו מבט בפוסט איך לאפשר העלאת סוגי קבצים נוספים בוורדפרס.

16. הוספת ״פח אשפה״ (Trash) לספריית המדיה

יצא לכם פעם למחוק תמונה בספריית המדיה ולקלל את עצמכם (ואת וורדפרס) שאינה מאפשרת לשחזר תמונה זו? לי יצא, בכל אופן עד שהכרתי את ההגדרה הבאה:

define( 'MEDIA_TRASH', true );

הוסיפו אותה בקובץ wp-config.php ולעולם לא תאלצו לדאוג ממחיקה של תמונה בטעות…

17. מעקב אחר שגיאות – Debugging

מגירסת וורדפרס 2.3.1, ישנה אפשרות להציג הודעות שגיאה מסויימות באתר בעזרת Debugging. מגירסת וורדפרס 2.5 ומעלה המערכת מציגה רמה גבוהה יותר של שגיאות ומציגה שגיאות לגבי פונקציות שכבר נזנחו (Deprecated Fuctions). כברירת מחדל בוורדפרס, הצגת שגיאות אינה אפשרות פעילה.

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. שמירה והצגה של הקריאות למסד הנתונים לצורך ניתוח

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

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 בממשק הניהול, אתם יכולים לנסות להשתמש בקוד זה בכדי לבטל את אותו איחוד קבצים (concatanation)..

define( 'CONCATENATE_SCRIPTS', false );

22. תכלס – אין לי מה לכתוב…

סעיף 21 יכול להגיע מהתגובות שלכם – אם יש לכם טריקים מגניבים שקשור ל wp-config.php, שתפו בתגובות ואוסיף אותם לפוסט…. 🙂

רועי יוסף
רועי יוסף

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

2 תגובות...
  • Rubb 8 אוקטובר 2017, 8:32

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

    • רועי יוסף 8 אוקטובר 2017, 9:43

      לא ניתן להשתמש בתווים מיוחדים. אותיות, מספרים וקווים תחתונים בלבד..

תגובה חדשה

הוסיפו קוד באמצעות הכפתורים מטה. למשל, בכדי להוסיף PHP לחצו על הכפתור PHP והוסיפו את הקוד בתוך השורטקוד. מצאתם שגיאה בפוסט? עדכנו אותנו...