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

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

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

wordpress-wp-config-configuration

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

הגדרות מסד נתונים

ארבעת הגדרות אלו נחוצות על מנת שוורדפרס תוכל להתחבר למסד הנתונים:

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});

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

מסד הנתונים – 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.

מפתחות אבטחה

מגירסת וורדפרס 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');

קידומת הטבלאות במסד הנתונים

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

table_prefix  = 'wp_';

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

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

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

הגדרות שפה

וורדפרס מאפשרת לכם להגדיר את קובץ התרגום של השפה בה אתם משתמשים באתר הוורדפרס שלכם ואת מיקומו. קובץ התרגום הוא קובץ .mo ומיקום ברירת המחדל שלו (אם לא ציינתם אחרת) הוא ב wp-content/languages כמקור הראשון ו wp-includes/languages כמקור שני. הנה הגדרות ברירת המחדל:

define('WPLANG', '');
define('LANGDIR', '');

הגדרות הספרייה

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

כתובת הבלוג וכתובת האתר

זהו החלק היותר מעניין… 🙂  שתי ההגדרות הבאות אינן מופיעות ב wp-config.php כברירת מחדל, אך יש להוסיף אותן על מנת לשפר את הביצועים של אתר הוורדפרס שלכם – בצורה מזערית יש לציין. הגדרות אלו נוספו בוורדפרס 2.2 ודורסות את ההגדרות הנמצאות במסד הנתונים (בלי לשנות אותם בפועל).

הצטרפו לרשימת התפוצה!

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

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

טריק נחמד הוא לקבוע הגדרות אלו אוטמוטית על שימוש במשתנה server הגלובלי:

define('WP_HOME', 'http://'.$_SERVER['HTTP_HOST'].'/path/to/wordpress');
define('WP_SITEURL', 'http://'.$_SERVER['HTTP_HOST'].'/path/to/wordpress');

נתיב ה 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');

הגדרת דומיין לעוגיות (cookies)

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

define( 'COOKIE_DOMAIN', 'www.example.com' );

דריסת הרשאות של קבצים ותיקיות

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

define('FS_CHMOD_FILE', 0755);
define('FS_CHMOD_DIR', 0755);

טבלאות user & usermeta מותאמות

מה לגבי שינוי הטבלאות האחראיות על המשתמשים במסד הנתונים? ניתן לשנות אלו על ידי שימוש בקוד הבא:

define('CUSTOM_USER_TABLE', $table_prefix.'my_users');
define('CUSTOM_USER_META_TABLE', $table_prefix.'my_usermeta');

שינוי המיקום של התיקייה 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');

גירסאות פוסטים

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

להגביל את מספר הגירסאות שנשמרות

define('WP_POST_REVISIONS', 3); // integer

לבטל את הפונקציונליות של גירסאות פוסטים

define('WP_POST_REVISIONS', false);

קביעת הזמן בין שמירה אוטומטית של פוסטים

באותו נושא, כברירת מחדל וורדפרס שומרת גירסה של פוסט כל 60 שניות, אך ניתן לקסוע מרווחים שונים בין שמירה לשמירה כבדוגמא הבאה:

define('AUTOSAVE_INTERVAL', 160); // in seconds

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

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

define('WP_DEBUG', true); // enable debugging mode
define('WP_DEBUG', false); // disable debugging mode (default)

הגדלת זיכרון – 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');

שמירה והצגה של הקריאות למסד הנתונים לצורך ניתוח

טכניקה זו מאד שימושית לשמירה של הקריאות (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>";
}

עד כאן כי נשבר לי המוח… יש לכם עוד טריקים של wp-config? בטוח שפספסתי לא מעט אז שתפו אותנו בתגובות… 🙂

רועי יוסף

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

תגובות פייסבוק

{ 2 תגובות… הוסף אחת }

השאירו תגובה

שיתופים
קראו גם את:
מהירות ואופטימיזציה בעידן ה HTTP/2
מהירות ואופטימיזציה בעידן ה HTTP/2

מהם היתרונות, ומהם השינויים שיש לבצע במעבר ל HTTP/2 ברמת אופטימיזציה למהירות האתר. פרוטוקול HTTP...