כחלק משיפור מהירות אתר וורדפרס אפשר לעבור על יכולות מובנות של וורדפרס שיתכן ואין לכם שימוש בהם. במקרה זה, תוכלו לבטל אותם לחלוטין, דבר שיכול לעזור קצת לשיפור מהירות האתר וגם במקרים מסוימים לשפר את אבטחת האתר.
את חלק מהדברים (או אולי את כולם) ניתן לעשות באמצעות תוספים שונים, עם זאת במאמר זה נראה איך לעשות אותם באמצעות שינוי באחד משלושה קבצים. htaccess, functions.php, wp-config.php. שימו לב שהשינויים ב htaccess מיודעים לשרתי Apache.
שינוי בקבצים אלו מיועד למשתמשים שיודעים מה הם עושים ואני לא לוקח אחריות על כל שינוי. בכל מקרה מומלץ לגבות. בנוסף, את קובץ functions.php שנו רק בתבנית הבת.
Really Simple Discovery – RSD
זהו פרוטוקול XML שנוצר על ידי Daniel Berlinger כדי לפשט את הדרך של בלוגים או אתרים לחשוף את המידע הנחוץ בשביל לגשת לשירותים שונים. אם אתם לא יודעים שאתם משתמשים בזה, רוב הסיכויים שאתם לא. כי גם אם יש צורך לתקשר עם האתר, יש דרכים שונות ומומלצות יותר (תראו בהמשך המאמר).
איך זה נראה באתר שלכם? חפשו בהדר שורה שנראית בערך כך:
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://example.com/xmlrpc.php?rsd" />
כדי להסיר את הקישור מההדר, הוסיפו את השורה הבאה לקובץ functions.php
remove_action('wp_head', 'rsd_link');
Windows Live Writer
פיתוח של מייקרוסופט שמאפשר פרסום פוסטים באמצעות כלים שבהם אפשר לכתוב את הפוסטים שלכם אופליין ולפרסם אותם אחר כך. התוכנה הגיעה לסוף חייה לפני שנים כבר וקשה לי להאמין שאתם משתמשים בזה…
איך זה נראה באתר שלכם? חפשו בהדר שורה שנראית בערך כך:
<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://yourwebsite.com/wp-includes/wlwmanifest.xml">
כדי להסיר את הקישור מההדר, הוסיפו את השורה הבאה לקובץ functions.php
remove_action('wp_head', 'wlwmanifest_link');
REST API
וורדפרס תומכת ב REST API שבאמצעותו תוכלו לתקשר עם האתר שלכם, לשלוח ולקבל תוכן ולגשת לתכנים שונים עם הרשאות מתאימות. למעשה תוכלו כך לבנות אפליקציה לטלפון לדוגמה בשפה שהיא לא php בכלל שתהיה הבלוג שלכם. כמובן האפשרויות הן עוד רבות. אבל אם אתם לא משתמשים בזה, תוכלו להסיר את הקישור מההדר שלכם.
איך זה נראה באתר שלכם? חפשו בהדר שורה שנראית בערך כך:
<link rel='https://api.w.org/' href='https://yourwebsite.com/wp-json/' />
כדי להסיר את זה מההדר ומעוד מקומות, הוסיפו את השורות הבאות לקובץ functions.php
remove_action('wp_head', 'rest_output_link_wp_head');
remove_action( 'template_redirect', 'rest_output_link_header', 11 );
Shortlink
שורטלינק נותן קישור מקוצר לפוסט בוורדפרס. אם אתם משתמשים במבנה url מומלץ אין ממש צורך בזה.
איך זה נראה באתר שלכם? חפשו בהדר שורה שנראית בערך כך:
<link rel='shortlink' href="https://yourdomain.com/?p=1">
כדי להסיר את זה מההדר ומעוד מקומות, הוסיפו את השורות הבאות לקובץ functions.php
remove_action('wp_head', 'wp_shortlink_wp_head');
remove_action('template_redirect', 'wp_shortlink_header', 11);
Post Relational Links
זהו תג שמראה על "פוסט קודם" ו-"פוסט הבא". התג הוא סטנדרד ווב שגוגל השתמשו בו גם בשביל SEO. העניין שגוגל פרסמו שהם כבר לא משתמשים בו ולכן אולי אפשר להוריד אותו מההדר. לעומת דברים אחרים במאמר, הפעם אני לא בטוח שעדיף להסיר את זה כי אולי מנועים אחרים כן משתשמים בזה ובנוסף זהו כאמור סטנדרד ווב ולא משהו שגוגל המציאו לכן אפשרי להשאיר. אבל אם תרצו להסיר, מיד תראו איך.
איך זה נראה באתר שלכם? חפשו בהדר שורה שנראית בערך כך:
<link rel='prev' title='Title of post' href='https://yourdomain.com/post-slug-here/' />
כדי להסיר את הקישור מההדר, הוסיפו את השורה הבאה לקובץ functions.php
remove_action('wp_head', 'adjacent_posts_rel_link_wp_head');
WordPress version
וורדפרס מדפיסה את הגרסה שלה בהדר. בין אם זה מזיק לאבטחת האתר ובין אם לא, אני לא רואה למה לא להסיר את זה.
איך זה נראה באתר שלכם? חפשו בהדר שורה שנראית בערך כך:
<meta name="generator" content="WordPress 5.5" />
כדי להסיר את זה מההדר ומעוד מקומות, הוסיפו את השורות הבאות לקובץ functions.php
remove_action('wp_head', 'wp_generator');
add_filter('the_generator', '__return_false');
RSS Feed
אני בטוח כולכם מכירים מה זה RSS, ואם לא תוכלו לקרוא כאן. בכל מקרה אם אין לכם באמת צורך בזה, ניתן להסיר.
כדי להסיר את זה מההדר ומעוד מקומות, הוסיפו את השורות הבאות לקובץ functions.php
add_filter('feed_links_show_posts_feed', '__return_false');
remove_action('wp_head', 'feed_links', 2);
remove_action('wp_head', 'feed_links_extra', 3);
add_filter('feed_links_show_comments_feed', '__return_false');
XML-RPC
עוד שיטה של "דיבור" עם אתר הוורדפרס שלנו באמצעות XML שנשלח על גבי HTTP. אם אתם לא יודעים שאתם משתמשים, אתם כנראה לא.
כדי להסיר את זה מההדר, הוסיפו את השורה הבאה לקובץ functions.php
add_filter('xmlrpc_enabled', '__return_false');
כדי למנוע גישה באמצעות htaccess:
<Files xmlrpc.php>
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Order allow,deny
Deny from all
</IfModule>
</Files>
Emojis
כולנו יודעים מה הם, וורדפרס תומכים בהם החל מגרסה 4.2. תוספת בקשה של קובץ JS שתכלס רובנו לא באמת צריכים.
כך תסירו את השימוש:
// Emojis Actions and Filters
add_action( 'init', 'disable_emojis' );
function disable_emojis() {
remove_action('admin_print_styles', 'print_emoji_styles');
remove_action('wp_head', 'print_emoji_detection_script', 7);
remove_action('admin_print_scripts', 'print_emoji_detection_script');
remove_action('wp_print_styles', 'print_emoji_styles');
remove_filter('wp_mail', 'wp_staticize_emoji_for_email');
remove_filter('the_content_feed', 'wp_staticize_emoji');
remove_filter('comment_text_rss', 'wp_staticize_emoji');
remove_filter('the_content', 'convert_smilies', 20);
add_filter('emoji_svg_url', '__return_false');
add_filter('tiny_mce_plugins', 'disable_emojis_tinymce');
}
function disable_emojis_tinymce($plugins) {
if(is_array($plugins)) {
return array_diff($plugins, array('wpemoji'));
} else {
return array();
}
}
Oembed
וורדפרס הוסיפה את היכולת לקחת URL של סרטון, של ציוץ או של פוסט ולהפוך אותו לתצוגה מקדימה חיה של התוכן. זה דבר נחמד עקרונית אבל אם אתם לא משתמשים, כרגיל תחסכו. עדיין תוכלו להשתמש ב iframe כדי להציג סרטון למשל.
כך תסירו את השימוש:
add_action('init', static function() {
// Remove the REST API endpoint.
remove_action('rest_api_init', 'wp_oembed_register_route');
// Turn off oEmbed auto discovery.
add_filter('embed_oembed_discover', '__return_false');
// Don't filter oEmbed results.
remove_filter('oembed_dataparse', 'wp_filter_oembed_result');
// Remove oEmbed discovery links.
remove_action('wp_head', 'wp_oembed_add_discovery_links');
// Remove oEmbed-specific JavaScript from the front-end and back-end.
remove_action('wp_head', 'wp_oembed_add_host_js');
add_filter('tiny_mce_plugins', static function ($plugins) {
return array_diff($plugins, array('wpembed'));
});
// Remove all embeds rewrite rules.
add_filter('rewrite_rules_array', static function ($rules) {
foreach($rules as $rule => $rewrite) {
if (false !== strpos($rewrite, 'embed=true')) {
unset($rules[$rule]);
}
}
return $rules;
});
// Remove filter of the oEmbed result before any HTTP requests are made.
remove_filter('pre_oembed_result', 'wp_filter_pre_oembed_result');
}, 9999 );
add_action('wp_footer', static function() {
wp_dequeue_script( 'wp-embed' );
});
Hotlinks
הוטלינק מאפשר לך או לבעל אתר אחר, להציג באתר תמונה ישירות מאתר אחר. אם לך יש תמונה או תוכן אחר שמישהו מעוניין להציג באתר שלו, הוא יכול להציג אותה על חשבונך. כלומר, להשתמש במשאבי השרת שלך בשביל זה. ברוב המקרים מומלץ לא לאפשר את זה.
כדי לא לאפשר הוטלינקס, הוסיפו את השורות הבאות לקובץ htaccess: שימו לב שיש הערות שתצטרכו למחוק או להחליף בהתאם למה שרשום.
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?your domain [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?bing.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yahoo.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?add more relevant domains [NC]
RewriteRule \.(webp|jpg|jpeg|png|gif|bmp|you can add here more file types)$ you can write here a url of image\page that you want to send the hotlink user [NC,R,L]
Dashicons
ספריית האייקונים שמשתמשים בה באדמין של וורדפרס. מדובר בקובץ CSS לא גדול אבל אפשר להסירו כל עוד אתם לא באדמין או אתם לא מנהלים.
כדי להסיר את השימוש, הוסיפו את השורות הבאות לקובץ functions.php:
add_action( 'wp_enqueue_scripts', 'deregister_dashicon' );
function deregister_dashicon() {
if (current_user_can( 'update_core' )) {
return;
}
wp_deregister_style('dashicons');
}
Self Pingback
זהו פינגבק עצמי כמו שהשם מעיד. פינגבק רגיל נוצר כשמישהו מאתר אחר שם קישור לבלוג שלכם. פינגבק עצמי זה כשאתם שמים קישור פנימי מפוסט אחד לאחר. את החיצוני אפשר לבטל דרך הגדרות דיון של וורדפרס. את הפינג העצמי תבטלו על ידי הקוד הבא בקובץ functions.php:
function unset_self_ping( &$links ) {
$home = get_option( 'home' );
foreach ( $links as $l => $link )
if ( 0 === strpos( $link, $home ) )
unset($links[$l]);
}
add_action( 'pre_ping', 'unset_self_ping' );
DNS Prefecth
ככלל דבר זה נועד כדי לשפר מהירות על ידי זה שמתבצע ברקע dns resolve אבל יתכן שתראו שם דברים נוספו על ידי וורדפרס או על ידי תבנית שאתם לא בהכרח רוצים. תוכלו להסיר את זה על ידי הקוד הבא בקובץ functions.php:
remove_action( 'wp_head', 'wp_resource_hints', 2 );
אם תרצו להיות יותר נקודתיים ולהסיר רק דומיינים מסוימים או להוסיף כאלה שלכם, תוכלו להשתמש בפילטר הבא בקובץ functions.php:
function customize_resource_hints( $urls, $relation_type ) {
// the function is per relation type so don't touch other rel except dns-prefetch
if ($relation !== 'dns-prefetch') {
return $urls;
}
// filter existing urls
$urls = array_filter($urls, function ($url) {
return condition for what you want to remove;
});
// if you want you can create here more urls and then call 'array_merge' with the existing urls
return $urls; //(or the newly created merged urls)
};
add_filter( 'wp_resource_hints', 'customize_resource_hints', 10, 2 );
Auto save & Revision
וורדפרס שומר אוטומטית את הפוסטים שלנו ויוצר גרסאות של הפוסטים. כדי להגדיל את מרווחי השמירה ולהגביל את הגרסאות שנשמרות הוסיפו את השורות הבאת לקובץ wp-config.php: שימו לב לשנות את הערות בהתאם.
define('AUTOSAVE_INTERVAL', how much seconds?);
define('WP_POST_REVISIONS', 3 or 4 it's enough IMO);
ETag
הפעם לא מדובר ביכולת של וורדפרס אבל בכל זאת אזכיר פה כי יש הרבה שאוהבים לבטל את זה. כדי להבין במדויק מה זה ETag, צריך להבין את המנגנון של HTTP Cache. תוכלו לקרוא בקצרה כאן.
אבל למה בכלל לבטל? זהו שלא בהכרח כדאי. הסיבה העיקרית היא כמו שיאהו כתבו על הנושא, ETag הוא פר שרת, כלומר אם התוכן קיים אצלכם משרת אחר ה- ETag יחזיר תשובה שאין את התוכן בקאש למרות שהוא אצלכם משרת אחר והוא ולידי. לכן מומלץ להשתמש ראשית ב Cache Control כמו שצריך ולהשתמש ב Last Modified. העניין הוא שיכול להיות שבעתיד הקרוב בכל מקרה קאש לא יהיה ואלידי אם הגיע משרת אחר (לפחות בכרום) ואז מנגנון ETag יותר מדויק ואמין. בכל מקרה אם החלטתם להסיר אותו, הוסיפו את השורות הבאות ל htaccess.
<IfModule mod_headers.c>
Header unset ETag
</IfModule>
FileETag None
jQuery-Migrate
בשביל תאימות לאחור של JS וורדפרס יטען לכם את הסקריפט. הסיבה היתה מוצדקת אבל לא בטוח שאתם ספציפית תצטרכו את זה. היום בחצי השני של 2020, אם אתם עם תבנית ופלאגינים מעודכנים רוב הסיכויים שזה מיותר לכם אבל בדקו זאת בזהירות. אם החלטתם להסיר, הוסיפו את השורות הבאות לקובץ functions.php
add_action('wp_default_scripts', function ($scripts) {
if (!empty($scripts->registered['jquery'])) {
$scripts->registered['jquery']->deps = array_diff($scripts->registered['jquery']->deps, ['jquery-migrate']);
}
});
סיכום
מקווה שלמדתם משהו ונעזרתם במאמר. יש הרבה דרכים לשפר את ביצועי האתר וכאן הראתי כמה דברים שכולם קשורים ליכולות מובנות שניתן להסיר. חלקם – כמו שהזכרתי בתחילת המאמר – יתרום גם לאבטחת האתר. לפני שתשנו משהו, היו בטוחים שאתם מבינים במה מדובר ואיך לעשות את השינוי. אם יש לכם שאלה כלשה, תוכלו להגיב פה ואענה.
שיפור מהירות וביצועים של אתרים באינטרנט
מוזמנים להצטרף לקבוצת הפייסבוק היחידה בישראל העוסקת רק בשיפורי ביצועים