{"id":1554,"date":"2022-03-18T08:53:24","date_gmt":"2022-03-18T05:53:24","guid":{"rendered":"https:\/\/saedx.com\/blog\/?p=1554"},"modified":"2022-06-15T16:54:18","modified_gmt":"2022-06-15T13:54:18","slug":"essential-advice-for-improve-wordpress-security-and-performance","status":"publish","type":"post","link":"https:\/\/saedx.com\/blog\/essential-advice-for-improve-wordpress-security-and-performance","title":{"rendered":"Essential Advice for Improve WordPress Security and Performance"},"content":{"rendered":"\n<p>This article is our checklist and guide when setting up any new WordPress website to improve security and performance for any WP website created by us.<br>Plugins we will mention in this article are optional, you could get other plugins that do the same job, but here we suggest plugins that were tested by us.<br>For example, we recommend changing the default login of WordPress and disabling XML-RPC, we suggest two plugins to do that two jobs, but you could use one security plugin to do both jobs.<\/p>\n\n\n\n<p class=\"has-text-align-center\"><\/p>\n\n\n\n<p>Here are a few of the solutions you can try and implement for improving the security and performance of the WordPress site:<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>1- Choose a secure web hosting<\/strong><\/h2>\n\n\n\n<p>The first and most important step if you have still not chosen web hosting yet is to choose a hosting environment that is absolutely secure. Choosing the right host will save a lot of time for you and also pick the right packages that work for your website.<\/p>\n\n\n\n<p class=\"has-text-align-center\"><strong><a href=\"https:\/\/www.bluehost.com\/track\/saedx\/blog\" target=\"_blank\" rel=\"noreferrer noopener\">Bluehost<\/a> Recommended by WordPress<\/strong><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full is-resized\"><a href=\"https:\/\/www.bluehost.com\/track\/saedx\/blog\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/saedx.com\/blog\/wp-content\/uploads\/2022\/03\/bluehost-logo.png\" alt=\"\" class=\"wp-image-1538\" width=\"284\" height=\"154\" srcset=\"https:\/\/saedx.com\/blog\/wp-content\/uploads\/2022\/03\/bluehost-logo.png 900w, https:\/\/saedx.com\/blog\/wp-content\/uploads\/2022\/03\/bluehost-logo-300x163.png 300w, https:\/\/saedx.com\/blog\/wp-content\/uploads\/2022\/03\/bluehost-logo-768x418.png 768w, https:\/\/saedx.com\/blog\/wp-content\/uploads\/2022\/03\/bluehost-logo-585x319.png 585w\" sizes=\"(max-width: 284px) 100vw, 284px\" \/><\/a><figcaption>Click image to Go to the Bluehost website<\/figcaption><\/figure><\/div>\n\n\n\n<p>WordPress recommends several hosting providers to host your WordPress website.<\/p>\n\n\n\n<p>One of these hosting providers that recommended by WordPress and we recommended too is <a href=\"https:\/\/www.bluehost.com\/track\/saedx\/blog\" target=\"_blank\" rel=\"noreferrer noopener\">Bluehost<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/www.bluehost.com\/track\/saedx\/blog\" target=\"_blank\" rel=\"noreferrer noopener\">Bluehost <\/a>is very secure with good support through phone or chat.<\/p>\n\n\n\n<p>And you can easily install WordPress to it and here is <a href=\"https:\/\/saedx.com\/blog\/guidelines-to-create-a-wordpress-website-with-bluehost\" target=\"_blank\" rel=\"noreferrer noopener\">How to Create a WordPress Website with Bluehost<\/a>, from choosing a WordPress package to picking a theme.<\/p>\n\n\n\n<p>Important! at this article we provide some methods that require editing the source code of a WordPress which could break your website if not done correctly. If you are not comfortable with any of these methods requiring coding, please check with a developer first.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>2- Change the WordPress default URL of the admin login<\/strong><\/h2>\n\n\n\n<p><\/p>\n\n\n\n<p>The default WordPress URL to login to the dashboard is (\/wp-admin) or (\/wp-login.php).<\/p>\n\n\n\n<p>We suggest changing these default WordPress URLs for admin login by using this plugin WPS Hide Login.<\/p>\n\n\n\n<p>When you define a new custom login URL to your website then the (wp-admin) directory and the (wp-login.php) page become inaccessible, so you must remember and save the new login URL that you defined.<\/p>\n\n\n\n<p><strong>Suggested Plugin: WPS Hide Login <\/strong><\/p>\n\n\n\n<p><a href=\"https:\/\/wordpress.org\/plugins\/wps-hide-login\/\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/wordpress.org\/plugins\/wps-hide-login\/<\/a><\/p>\n\n\n\n<p>After active it plugin go to Setting &gt; General &gt; WPS Hide Login: define new Login URL &amp; Redirection URL.<\/p>\n\n\n\n<p>Don&#8217;t forget if you\u2019re using any caching plugin you should add the slug of the new login URL to the list of pages not to cache.<\/p>\n\n\n\n<p><strong>Important Note: If you are using another security plugin that may include the option (change the default admin login URL), so don&#8217;t use this plugin in this case to avoid any conflicts issues.<\/strong><\/p>\n\n\n\n<p>In general, don&#8217;t use different plugins that did the same job, especially those plugins for security or performance.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>3- Disable XML-RPC<\/strong><\/h2>\n\n\n\n<p>Simply without talking deeply technically, XMLRPC.php is a feature that allows for connection to WordPress remotely like to connect to a WordPress via a Smart Phone.<\/p>\n\n\n\n<p>The big problem with XML-RPC function is that it has become a backdoor in WordPress for hackers, scripts, Brute Force Attacks, DDoS attacks or bots.<\/p>\n\n\n\n<ul><li><strong>Brute Force Attacks &#8211;&nbsp;<\/strong>Where an attacker can use xml-rpc to test hundreds of username and password combinations until they are eventually able to gain access to your site. This occurs because xml-rpc does not have the same login attempt limit that exists when you log into WordPress normally.<\/li><li><strong>DDoS Attack<\/strong>&nbsp;&#8211; Where an attacker can use xml-rpc to pingback thousands of IPs. This allows them to send a flood of data and traffic which can cause overages and even have networks paralyzed and shutdown.<\/li><\/ul>\n\n\n\n<p>To disable XML-RPC on your WordPress there are many plugins that do this for you and some of the general security plugins have an option to do that<\/p>\n\n\n\n<p>Suggested plugin: Disable XML-RPC<\/p>\n\n\n\n<p><a href=\"https:\/\/wordpress.org\/plugins\/disable-xml-rpc\/\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/wordpress.org\/plugins\/disable-xml-rpc\/<\/a><\/p>\n\n\n\n<p>Just activate this plugin and it will automatically disable XML-RPC.<\/p>\n\n\n\n<p>or on <strong>.htaccess<\/strong>&nbsp;file.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code> # Block WordPress xmlrpc.php requests\n &lt;Files xmlrpc.php&gt;\n order deny,allow\n deny from all\n allow from xxx.xxx.xxx.xxx\n &lt;\/Files&gt;<\/code>\n<\/pre>\n\n\n\n<p>Replace xxx.xxx.xxx.xxx with an IP address you want to give access to xmlrpc.php or remove access completely by simply removing this line.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>3- Disable WP-Cron (wp-cron.php) for Faster Performance<\/strong><\/h2>\n\n\n\n<p>WP-Cron on WordPress is used to schedule a post to publish, check for updates, send email notifications, and more.<\/p>\n\n\n\n<p>WP-Cron on WordPress It is similar to CRON jobs on the host cPanel which is used to schedule tasks at periodic fixed times, dates, or intervals.<\/p>\n\n\n\n<p>It might be a good feature if you need to publish posts at specific dates later on, but the problem with this feature is it slows down the server and impact the performance especially if you run more than WordPress website on the same server or you have a huge web content with a list of tasks that need to be checked by WP-Cron whenever a page is visited which high the load on the server.<\/p>\n\n\n\n<p>For me, I prefer to disable this feature to improve website performance even I have never used the schedule feature, and it is up to you to choose to keep it or disable it according to your needs.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">To disable WP-Cron:<\/h3>\n\n\n\n<p>1- Go to (wp-config.php) file<\/p>\n\n\n\n<p>2- Add:<\/p>\n\n\n\n<p><code>define('DISABLE_WP_CRON', true);<\/code><\/p>\n\n\n\n<p>Before \u201cThat\u2019s all, stop editing! Happy blogging.\u201d<\/p>\n\n\n\n<p>Now wp-cron.php will not run automatically each time someone visits your website.<\/p>\n\n\n\n<p>If you still need a scheduling feature after disabling wp-corn via the above way, you could use plugins like WP Crontrol, Advanced Cron Manager \u2013 Debug &amp; Control, or just make your own search for the best choice from many plugins.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>4- Avoid using a nulled WordPress theme<\/strong><\/h2>\n\n\n\n<p>Nulled theme means a cracked version of a premium theme.<\/p>\n\n\n\n<p>These nulled themes sometimes include malware or backdoors which provide a subsequent access point to your website for hackers.<\/p>\n\n\n\n<p>You should also use any plugins for malware scanners to detect possible malicious code in nulled\/free WordPress Themes before using it, malware scanner like:<\/p>\n\n\n\n<p>Anti-Malware Security and Brute-Force Firewall<\/p>\n\n\n\n<p><a href=\"https:\/\/wordpress.org\/plugins\/gotmls\/\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/wordpress.org\/plugins\/gotmls\/<\/a><\/p>\n\n\n\n<p>if you are familiar with setup WordPress on localhost, it will be better to use this plugin to scan nulled\/free themes locally before uploading it online and using it.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>5-Disable Emojis in WordPress<\/strong><\/h2>\n\n\n\n<p>Disabling WP Emojis is one of a lot of WordPress performance optimizations and tweaks you can do to improve your website loading time. Find here <a href=\"https:\/\/saedx.com\/blog\/how-to-disable-wp-embed-min-js-and-wp-emoji-release-min-js\">How to disable WP Emojis <\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>6- Delete Unused Autoloaded Data in wp_options Table<\/strong><\/h2>\n\n\n\n<p>Honestly, from all tips for improving WordPress performance on the internet that is the one that made a difference to me.<\/p>\n\n\n\n<p>wp_options table stores some data that are no longer used that were left behind by deleted themes, and plugins.<br>Before deleting entries from the wp_options table, ensure to take a backup of your entire database. This step is critical as we are making mass deletions that can potentially break things on your site.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">How to do it?<\/h4>\n\n\n\n<p>Go to <strong>phpMyAdmin<\/strong> &gt; <strong>Select database<\/strong> (left side column) &gt; click on&nbsp;<strong>SQL<\/strong> tap (at top) &gt; Inside the text area, enter what wanted from the below queries &gt; click <strong>Go<\/strong><\/p>\n\n\n\n<p>You can then select unwanted rows and click on \u201cDelete.\u201d<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Check autoloaded data size<\/h3>\n\n\n\n<p><code>SELECT SUM(LENGTH(option_value)) as autoload_size FROM wp_options WHERE autoload='yes';<\/code><\/p>\n\n\n\n<p>Anything above 1 MB is most likely slowing down your site.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2- Check Top 100 Autoloaded Items<\/h3>\n\n\n\n<p><code>SELECT option_name, length(option_value) AS option_value_length FROM wp_options WHERE autoload='yes' ORDER BY option_value_length DESC LIMIT 100;<\/code><\/p>\n\n\n\n<p>Delete the ones you know aren\u2019t being used anymore.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3-Find Specific Autoloaded Data<\/h3>\n\n\n\n<p><code>SELECT *<br>FROM wp_options<br>WHERE autoload = 'yes'<br>AND option_name LIKE '%avada%'<\/code><\/p>\n\n\n\n<p>This command is useful for targeting specific plugins or themes that you KNOW for certain you aren\u2019t using any longer. In this example I have used the Avada theme before I deleted it, now I want to clean up remnants left from the old theme. Simply replace the string \u201cavada\u201d with anything else you like.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Other essential tips for WordPress security<\/strong><\/h2>\n\n\n\n<p>here is a quick list to keep in mind to secure your WordPress:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">&#8211; Strong Password<\/h3>\n\n\n\n<p>That&#8217;s very essential, make sure the password checker gives you high evaluation = Very Strong<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">&#8211; Keep WordPress installation up to date<\/h3>\n\n\n\n<p>Make sure you update WordPress continuously, they always solve bugs and security issues every update.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">&#8211; Download plugins from known resources.<\/h3>\n\n\n\n<h3 class=\"wp-block-heading\">&#8211; Use SSL certificate<\/h3>\n\n\n\n<p>Read more about <a href=\"https:\/\/saedx.com\/blog\/its-time-for-moving-your-website-to-https-ssl\">why you should move your website to HTTPS \/ SSL<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">&#8211; Backup WordPress Website<\/h3>\n\n\n\n<h3 class=\"wp-block-heading\">&#8211; Remove the inactive user\u2019s accounts in WordPress<\/h3>\n","protected":false},"excerpt":{"rendered":"<p>This article is our checklist and guide when setting up any new WordPress website to improve security and performance for any WP website created by us.Plugins we will mention in&hellip;<\/p>\n","protected":false},"author":1,"featured_media":1568,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","footnotes":""},"categories":[18,11],"tags":[],"jetpack_featured_media_url":"https:\/\/saedx.com\/blog\/wp-content\/uploads\/2022\/03\/saedx-blog-featured-80.jpg","jetpack_shortlink":"https:\/\/wp.me\/p3wRFx-p4","_links":{"self":[{"href":"https:\/\/saedx.com\/blog\/wp-json\/wp\/v2\/posts\/1554"}],"collection":[{"href":"https:\/\/saedx.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/saedx.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/saedx.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/saedx.com\/blog\/wp-json\/wp\/v2\/comments?post=1554"}],"version-history":[{"count":24,"href":"https:\/\/saedx.com\/blog\/wp-json\/wp\/v2\/posts\/1554\/revisions"}],"predecessor-version":[{"id":1635,"href":"https:\/\/saedx.com\/blog\/wp-json\/wp\/v2\/posts\/1554\/revisions\/1635"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/saedx.com\/blog\/wp-json\/wp\/v2\/media\/1568"}],"wp:attachment":[{"href":"https:\/\/saedx.com\/blog\/wp-json\/wp\/v2\/media?parent=1554"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/saedx.com\/blog\/wp-json\/wp\/v2\/categories?post=1554"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/saedx.com\/blog\/wp-json\/wp\/v2\/tags?post=1554"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}