<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Shuaib Yusuf Shuaib</title>
    <description>The latest articles on Forem by Shuaib Yusuf Shuaib (@sysa).</description>
    <link>https://forem.com/sysa</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F562421%2F110c4f9f-58e4-4ab7-92b8-02f2a99722fa.png</url>
      <title>Forem: Shuaib Yusuf Shuaib</title>
      <link>https://forem.com/sysa</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/sysa"/>
    <language>en</language>
    <item>
      <title>RegExp based HTML modification in PHP</title>
      <dc:creator>Shuaib Yusuf Shuaib</dc:creator>
      <pubDate>Fri, 02 Jun 2023 11:00:15 +0000</pubDate>
      <link>https://forem.com/sysa/regexp-based-html-modification-in-php-5e85</link>
      <guid>https://forem.com/sysa/regexp-based-html-modification-in-php-5e85</guid>
      <description>&lt;p&gt;The kinda way I use to modify HTML with RegExp using PHP.&lt;/p&gt;

&lt;h2&gt;
  
  
  HTML Tag Regex
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/\&amp;lt;(?&amp;lt;tag&amp;gt;[a-z][a-z0-9\-]*)(\s+([\s\S]*?))?\/?\&amp;gt;(([\s\S]*?)\&amp;lt;\/(?P=tag)\&amp;gt;)?/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The above RegExp can be broken down as:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;/&lt;/code&gt;: The regex opening delimiter.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;\&amp;lt;&lt;/code&gt;: Matches the character &lt;code&gt;&amp;lt;&lt;/code&gt; of an opening tag.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;(?&amp;lt;tag&amp;gt;[a-z][a-z0-9\-]*)&lt;/code&gt;: Matches HTML valid tag name, which should start with a character between &lt;code&gt;a&lt;/code&gt; and &lt;code&gt;z&lt;/code&gt;, could contain another characters between &lt;code&gt;a&lt;/code&gt; to &lt;code&gt;z&lt;/code&gt;, and numbers between &lt;code&gt;0&lt;/code&gt; and &lt;code&gt;9&lt;/code&gt;, and could also contain the character &lt;code&gt;-&lt;/code&gt; in it.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;(\s+([\s\S]*?))?&lt;/code&gt;: Matches the entire attributes of the tag including spaces between them, but only if they were present.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;\/?&lt;/code&gt;: Matches the character &lt;code&gt;/&lt;/code&gt; of self closing tags.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;\&amp;gt;&lt;/code&gt;: Matches the character &lt;code&gt;&amp;gt;&lt;/code&gt;, which is supposed to be the closing character of the opening tag.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;(([\s\S]*?)\&amp;lt;\/(?P=tag)\&amp;gt;)?&lt;/code&gt;: Matches the content or HTML inside the tag and the closing tag, but only if the tag is not self closing tag.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/&lt;/code&gt;: The regex closing delimiter.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  HTML Tag Attributes Regex
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/([\w\-]+)(\s*\=\s*(?|(?&amp;lt;quot&amp;gt;[\'"])([\s\S]*?)(?P=quot)|(?&amp;lt;quot&amp;gt;)([\w\-]+)))?/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The above RegExp can be broken down as:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;/&lt;/code&gt;: The regex opening delimiter.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;([\w\-]+)&lt;/code&gt;: Matches the attributes key/name.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;(\s*\=\s*(?|(?&amp;lt;quot&amp;gt;[\'"])([\s\S]*?)(?P=quot)|(?&amp;lt;quot&amp;gt;)([\w\-]+)))?&lt;/code&gt;: Matches the value of the attribute, which could be anything wrapped in a single-quote (&lt;code&gt;'&lt;/code&gt;) or in a double-quote (&lt;code&gt;"&lt;/code&gt;). Also, could be naked (not wrapped in a quote). If not wrapped, the value must only contain characters in the range &lt;code&gt;a&lt;/code&gt; to &lt;code&gt;z&lt;/code&gt; or the capitals &lt;code&gt;A&lt;/code&gt; to &lt;code&gt;Z&lt;/code&gt;, and numbers in the range &lt;code&gt;0&lt;/code&gt; to &lt;code&gt;9&lt;/code&gt;, and &lt;code&gt;_&lt;/code&gt; (underscore), and &lt;code&gt;-&lt;/code&gt; (hyphen). This could also match nothing for boolean attributes.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/&lt;/code&gt;: The regex closing delimiter.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Example Usage
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt;

&lt;span class="c1"&gt;// HTML elements&lt;/span&gt;
&lt;span class="nv"&gt;$content&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;&amp;lt;&amp;lt;&amp;lt;EOL

&amp;lt;p&amp;gt;Text paragraph.&amp;lt;/p&amp;gt;
&amp;lt;img src="http://example.com/image-200x320.png" width="200" height="320"&amp;gt;

EOL;&lt;/span&gt;

&lt;span class="c1"&gt;// Tags matching RegExp&lt;/span&gt;
&lt;span class="nv"&gt;$tags_regexp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'/\&amp;lt;(?&amp;lt;tag&amp;gt;[a-z][a-z0-9\-]*)(\s+([\s\S]*?))?\/?\&amp;gt;(([\s\S]*?)\&amp;lt;\/(?P=tag)\&amp;gt;)?/'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// Attributes matching RegExp&lt;/span&gt;
&lt;span class="nv"&gt;$atts_regexp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'/([\w\-]+)(\s*\=\s*(?|(?&amp;lt;quot&amp;gt;[\'"])([\s\S]*?)(?P=quot)|(?&amp;lt;quot&amp;gt;)([\w\-]+)))?/'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// Match all the valid elements in the HTML&lt;/span&gt;
&lt;span class="nb"&gt;preg_match_all&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$tags_regexp&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$content&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$matches&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="no"&gt;PREG_SET_ORDER&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Loop through and make the necessary changes&lt;/span&gt;
&lt;span class="k"&gt;foreach&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$matches&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nv"&gt;$match&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

  &lt;span class="c1"&gt;// We are going to modify only image tags&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;'img'&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="nv"&gt;$match&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt; &lt;span class="s1"&gt;'tag'&lt;/span&gt; &lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;continue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="c1"&gt;// Match all the attributes&lt;/span&gt;
  &lt;span class="nb"&gt;preg_match_all&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$atts_regexp&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$match&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="nv"&gt;$atts_match&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="c1"&gt;// Combine the keys and the values&lt;/span&gt;
  &lt;span class="nv"&gt;$atts_match&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;array_combine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$atts_match&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="nv"&gt;$atts_match&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="c1"&gt;// Build back a HTML valid attributes&lt;/span&gt;
  &lt;span class="nv"&gt;$atts&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;''&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;foreach&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$atts_match&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nv"&gt;$name&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;$value&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nv"&gt;$atts&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;sprintf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;' %s="%s"'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$value&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="c1"&gt;// Replacement for the tag&lt;/span&gt;
  &lt;span class="nv"&gt;$amp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;sprintf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;amp-img%s&amp;gt;&amp;lt;/amp-img&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$atts&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="c1"&gt;// Replace the complete tag match with the new replacement&lt;/span&gt;
  &lt;span class="nv"&gt;$content&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;str_replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$match&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="nv"&gt;$amp&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$content&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="p"&gt;}&lt;/span&gt;


&lt;span class="c1"&gt;// The AMPifyed HTML&lt;/span&gt;
&lt;span class="cd"&gt;/**
 * &amp;lt;p&amp;gt;Text paragraph.&amp;lt;/p&amp;gt;
 * &amp;lt;amp-img src="http://example.com/image-200x320.png" width="200" height="320"&amp;gt;&amp;lt;/amp-img&amp;gt;
 */&lt;/span&gt;
&lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$content&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The above could also be improved to make a complete HTML-to-AMP converter for simple pages.&lt;/p&gt;

</description>
      <category>php</category>
      <category>programming</category>
      <category>html</category>
      <category>regex</category>
    </item>
    <item>
      <title>BoidCMS – Flat file CMS for building simple websites and blogs.</title>
      <dc:creator>Shuaib Yusuf Shuaib</dc:creator>
      <pubDate>Tue, 26 Jul 2022 21:05:00 +0000</pubDate>
      <link>https://forem.com/sysa/boidcms-a-simple-fast-and-super-extensible-cms-8gg</link>
      <guid>https://forem.com/sysa/boidcms-a-simple-fast-and-super-extensible-cms-8gg</guid>
      <description>&lt;p&gt;&lt;a href="https://github.com/BoidCMS/BoidCMS" rel="noopener noreferrer"&gt;BoidCMS&lt;/a&gt; is a free and open-source flat file CMS for building simple websites and blogs in seconds, developed using PHP and JSON as a database.&lt;/p&gt;

&lt;p&gt;BoidCMS is a free and open source content management system designed to be simple, easy to use, and highly extensible. It comes with a range of features to help you create and manage your website with ease.&lt;/p&gt;

&lt;p&gt;BoidCMS is a &lt;strong&gt;fork of &lt;a href="https://www.wondercms.com" rel="noopener noreferrer"&gt;WonderCMS&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Content Types
&lt;/h2&gt;

&lt;p&gt;BoidCMS comes with two pre-defined content types out-of-the-box.&lt;/p&gt;

&lt;h3&gt;
  
  
  Post
&lt;/h3&gt;

&lt;p&gt;Posts are dynamic content items that are typically used for articles, blog posts, news updates, or any other kind of time-sensitive content that gets added to your website over time. They are listed on your homepage as individual posts and can be sorted by date, or other criteria.&lt;/p&gt;

&lt;h3&gt;
  
  
  Page
&lt;/h3&gt;

&lt;p&gt;Pages are static content items that are used for content that doesn't change frequently, such as an "About Us" page, a "Contact Us" page, or a page with specific information that you want to share with your visitors. Pages can be accessed through a link, but they are not listed on your homepage. You can add them to the website navigation menu, footer, or any other section of your website to make them more visible to your visitors.&lt;/p&gt;

&lt;h2&gt;
  
  
  Requirements
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;PHP 8 or greater&lt;/li&gt;
&lt;li&gt;Web server (Apache &lt;code&gt;mod_rewrite&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Features
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;One Step Install&lt;/strong&gt;: BoidCMS can be installed with just one step, making it easy for anyone to get started quickly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Free and Open Source&lt;/strong&gt;: BoidCMS is completely free to use and is released under the permissive MIT license, which means that anyone can download, modify and distribute the software without any legal or financial obligations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Simple and Easy to Navigate Admin Panel&lt;/strong&gt;: The admin panel is designed to be easy to navigate, with an intuitive interface that lets you manage your content quickly and easily.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Themes and Plugins Support&lt;/strong&gt;: BoidCMS supports themes and plugins, allowing you to customize your website and add new features with ease.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Super Extensible&lt;/strong&gt;: BoidCMS is designed to be highly extensible, with a flexible architecture that makes it easy to add new features and functionality.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CSRF Authentication&lt;/strong&gt;: BoidCMS uses CSRF authentication to protect against cross-site request forgery attacks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Custom Admin URL&lt;/strong&gt;: You can customize the URL of the admin panel to make it more secure and harder to guess.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Custom Page Permalink&lt;/strong&gt;: You can customize the permalink structure of your pages to make them more SEO friendly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Custom Page Template&lt;/strong&gt;: BoidCMS allows you to create custom page templates for your website, giving you more control over the look and feel of your content.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Blog Option&lt;/strong&gt;: BoidCMS includes a blog option, allowing you to create and manage a blog on your website.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;File Manager&lt;/strong&gt;: The built-in file manager makes it easy to upload and manage files for your website.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SEO Friendly&lt;/strong&gt;: BoidCMS is designed with SEO in mind, with features like custom permalinks and meta descriptions to help you optimize your content for search engines.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Content Type&lt;/strong&gt;: BoidCMS supports custom content types, allowing you to create and manage different types of content on your website.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GDPR Compliant&lt;/strong&gt;: BoidCMS prioritizes user privacy and ensures that it does not track or collect personal data by default, aligning with the principles of the General Data Protection Regulation (GDPR). It is an ideal option for websites that value user privacy and data protection.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://boidcms.alwaysdata.net" rel="noopener noreferrer"&gt;Demo 1&lt;/a&gt;&lt;br&gt;
&lt;a href="https://shoaiyb.alwaysdata.net" rel="noopener noreferrer"&gt;Demo 2&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Screenshots
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Login page
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feyass0wuxglnln8mt4ps.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feyass0wuxglnln8mt4ps.png" alt="Admin login page" width="800" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Dashboard
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1dksptwkfyld5ueosts6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1dksptwkfyld5ueosts6.png" alt="Admin dashboard page" width="800" height="529"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Settings page
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fws225xwjmn72nqifp19v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fws225xwjmn72nqifp19v.png" alt="Admin settings page" width="800" height="1349"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Create page
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx0pokvbcumzcm5t9lsyw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx0pokvbcumzcm5t9lsyw.png" alt=" " width="800" height="1098"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Update page
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frbhn42zd3drs61avirkq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frbhn42zd3drs61avirkq.png" alt="Admin update page" width="800" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkekqfbuie7575v9ww7g1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkekqfbuie7575v9ww7g1.png" alt="Admin update single page" width="800" height="1098"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Delete page
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhfw19jo4kidbfiwgljt8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhfw19jo4kidbfiwgljt8.png" alt="Admin delete page" width="800" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Media manager
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbs18gs24hbz7axrfkh19.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbs18gs24hbz7axrfkh19.png" alt="Admin media page" width="800" height="730"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Plugins page
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvvadvqvhb53fgoy3ocpz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvvadvqvhb53fgoy3ocpz.png" alt="Admin plugins page" width="800" height="698"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Themes page
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzt289qc3y5d048kacs7t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzt289qc3y5d048kacs7t.png" alt="Admin themes page" width="800" height="531"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Support
&lt;/h2&gt;

&lt;p&gt;Ask questions, get support, and discuss BoidCMS.    &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/BoidCMS/BoidCMS/discussions" rel="noopener noreferrer"&gt;Discussions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>opensource</category>
      <category>php</category>
      <category>webdev</category>
      <category>showdev</category>
    </item>
    <item>
      <title>5 Online Websites To Help You Learn Web Development</title>
      <dc:creator>Shuaib Yusuf Shuaib</dc:creator>
      <pubDate>Sat, 14 Aug 2021 00:00:00 +0000</pubDate>
      <link>https://forem.com/sysa/5-online-websites-to-help-you-learn-web-development-2fan</link>
      <guid>https://forem.com/sysa/5-online-websites-to-help-you-learn-web-development-2fan</guid>
      <description>&lt;p&gt;If you are looking to learn web development online, there are more than enough resources out there to teach you everything you need to know. In fact, many (if not most) of the web developers in the world today have launched successful careers by learning web development online from scratch. But even the most ambitious self-starters run into the problem of deciding where to begin.&lt;br&gt;&lt;br&gt;
Below you will find my picks for the top 5 websites to help you learn web development online.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Learn Web Development Online
&lt;/h2&gt;

&lt;p&gt;As a web developer, your credibility is more about the strength of your portfolio than it is about your credentials.&lt;br&gt;&lt;br&gt;
Your employment opportunities will often come from concrete skills and samples of your work rather than a degree from a university.&lt;br&gt;&lt;br&gt;
It’s not that a proper college education isn’t important or valuable as a web developer. Rather, it’s to say that if attending a university isn’t in the cards, you can learn everything you need to know about web development online.&lt;br&gt;&lt;br&gt;
The web development industry continues to grow exponentially so you won’t find a shortage of resources.&lt;br&gt;&lt;br&gt;
The most important thing to do is start.&lt;/p&gt;

&lt;p&gt;This list should help.&lt;/p&gt;

&lt;h3&gt;
  
  
  Codecademy
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fcodeacademy.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fcodeacademy.webp" alt="Codeacademy" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.codecademy.com/" rel="noopener noreferrer"&gt;Codecademy&lt;/a&gt; is a course-based online learning site that provides a unique hands on approach to learning code.&lt;br&gt;&lt;br&gt;
To start learning, you must select a path (like web development). Each path includes lessons that begin with the basics and ends with advanced practical application. Each lesson includes written instructions that help you write out actual code that progresses with each lesson.&lt;br&gt;&lt;br&gt;
It is a nice “learn by doing” approach that one does at their own pace.&lt;/p&gt;

&lt;p&gt;They also offer what they call Codecademy Pro Intensives to take your learning to the next level by providing programs that will deliver job-ready outcomes. For example, you can build real-world projects and get professional developer feedback.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pluralsight
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fpluralsight.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fpluralsight.webp" alt="Pluralsight" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.pluralsight.com/codeschool" rel="noopener noreferrer"&gt;Pluralsight&lt;/a&gt; offers a unique online platform for sharpening your coding skills for web development.&lt;br&gt;&lt;br&gt;
What’s unique about Pluralsight is that it allows you to take a Pluralsight IQ assessment to identify gaps in your knowledge so that you can concentrate on learning only those skills you need.&lt;br&gt;&lt;br&gt;
You can even choose learning paths to help guide your learning experience, but they also have stand-alone courses as well.&lt;br&gt;&lt;br&gt;
You can test it out with a free trial and their personal membership starts at &lt;strong&gt;$35&lt;/strong&gt; per month.&lt;/p&gt;

&lt;h3&gt;
  
  
  Codewars
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fcodewars.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fcodewars.webp" alt="Codewars" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.codewars.com/" rel="noopener noreferrer"&gt;Codewars&lt;/a&gt; is one of the more popular coding challenge websites that allow you to master your web developer skills by solving challenges in the programming language of your choice. You can even compare your solution with other for great understanding.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Odin Project
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fodin-project.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fodin-project.webp" alt="The Odin Project" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.theodinproject.com/" rel="noopener noreferrer"&gt;The Odin Project&lt;/a&gt; is a great place to jumpstart your career in web development with a full stack curriculum approach that is backed by an open source community.&lt;br&gt;&lt;br&gt;
The curriculum is made up of a collection of online tutorials, blogs, and courses. For example, there is a web development 101 course made up of lessons that start and the basics and end with you building a practical web application. So you will have opportunities to build portfolio-worthy projects alongside a community of developers.&lt;/p&gt;

&lt;h3&gt;
  
  
  MDN Web Docs
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fmdn-web-docs.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fmdn-web-docs.webp" alt="MDN Web Docs" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.mozilla.org/en-US/" rel="noopener noreferrer"&gt;MDN Web Docs&lt;/a&gt; is a valuable online resource created by an open community of developers which is updated regularly by employees of Mozilla, Apple, Google, &amp;amp; Microsoft.&lt;br&gt;&lt;br&gt;
You can easily search for what you are looking for and find pragmatic explanations from credible professionals.&lt;br&gt;&lt;br&gt;
They even include entire lessons for &lt;a href="https://developer.mozilla.org/en-US/docs/Learn" rel="noopener noreferrer"&gt;learning web development&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Their &lt;a href="https://hacks.mozilla.org/" rel="noopener noreferrer"&gt;Hacks Blog&lt;/a&gt; is also a great reference for the web development industry.&lt;/p&gt;

&lt;h2&gt;
  
  
  More Places to Learn Web Development
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.w3schools.com/" rel="noopener noreferrer"&gt;W3 Schools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sysa.ml/categories/#Develop" rel="noopener noreferrer"&gt;shoaiyb sysa&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;When it comes to starting a career in web development, getting started can be the hardest part.&lt;br&gt;&lt;br&gt;
But once you do, you might be surprised at just how much you can learn in just a single day with the online resources available.&lt;br&gt;&lt;br&gt;
Then it is just a matter of mastering your skills toward your new career. Hopefully, these web developer resources can help you along the way.&lt;/p&gt;

&lt;p&gt;Feel free to share some of your favorite online resources in the comments below.&lt;/p&gt;

&lt;p&gt;Cheers!&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>develop</category>
    </item>
    <item>
      <title>How To Interlink Your Blog Articles To Help Seo And Increase Traffic</title>
      <dc:creator>Shuaib Yusuf Shuaib</dc:creator>
      <pubDate>Mon, 05 Jul 2021 00:00:00 +0000</pubDate>
      <link>https://forem.com/sysa/how-to-interlink-your-blog-articles-to-help-seo-and-increase-traffic-19j0</link>
      <guid>https://forem.com/sysa/how-to-interlink-your-blog-articles-to-help-seo-and-increase-traffic-19j0</guid>
      <description>&lt;p&gt;Your blog should be like a spider’s web, with each article linking to other articles in your blog.&lt;/p&gt;

&lt;p&gt;This technique can deliver some nice traffic benefits. Here’s how to do it…&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is A Pingback?
&lt;/h2&gt;

&lt;p&gt;In some circles I’ve read there is no difference between a trackback and a pingback. Many people will use the term interchangeably and in fact I’ve been known to confuse the two myself.&lt;/p&gt;

&lt;p&gt;Generally there is one main difference – a trackback is forced by a human blogger while a pingback occurs automatically by the blogging software.&lt;/p&gt;

&lt;p&gt;I read a description online which I think is a good way to discern the difference however I don’t agree 100% with the distinction presented. It does offer a simple way to get your head around the semantics of using the two techniques –&lt;/p&gt;

&lt;p&gt;Where trackback is “Here’s what I think of that” a pingback is more simply “I’m using that”.&lt;/p&gt;

&lt;p&gt;Trackbacks are intentional attention grabbers that give an opinion of another blogger’s work. A pingback merely informs another blog that you are referencing their writing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Internal Pingbacks
&lt;/h2&gt;

&lt;p&gt;I experience pingbacks when I reference to my own blog posts within my blog. I use the blogging system WordPress which automatically sends pingbacks if I link to one of my previous articles, creating a link between the two blog entries.&lt;/p&gt;

&lt;p&gt;Linking between your own articles is a good thing, and certainly pingbacking your own entries helps make the process efficient because it’s automatic, but there is a lot more you can do proactively to create links between your own blog posts. As with most things in blogging, there is a “smarter way”.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is Interlinking?
&lt;/h2&gt;

&lt;p&gt;Interlinking means when you link one of your own pages to another internally within a website.&lt;/p&gt;

&lt;p&gt;Since you control your site you can control your blog’s entire internal linking structure. This is important for traffic because of how search engines work.&lt;/p&gt;

&lt;p&gt;If you want the search engines to rank every single page of your blog you need to make sure they can find every page.&lt;/p&gt;

&lt;p&gt;Search engines use little software programs called “spiders” or “bots” that trawl around the web following links and “indexing” all the content of web pages.&lt;/p&gt;

&lt;p&gt;If your site is internally linked well together then you make it easy for the little spiders to index every page of your blog.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sitemaps
&lt;/h2&gt;

&lt;p&gt;I will briefly mention sitemaps because they are a convenient way to tell the search engines where all your pages are. Most search engines do a pretty good job of finding pages but sometimes they have trouble indexing your entire site, especially if your site is new.&lt;/p&gt;

&lt;p&gt;I’m not going to cover sitemaps in-depth because it is a whole topic on its own, however I do recommend you have one as the first step to create a good internal linking structure for your blog.&lt;/p&gt;

&lt;p&gt;Here are some resources for building and learning more about sitemaps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If you are a WordPress user, install the &lt;a href="http://wordpress.org/extend/plugins/google-sitemap-generator/" rel="noopener noreferrer"&gt;Google Sitemap generator plugin&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Google Looks At Each Web Page
&lt;/h2&gt;

&lt;p&gt;Google ranks pages based on how many other pages link to it. That’s PAGES, not SITES, which means when you link one blog entry to another you are helping each blog article earn better search engine rankings so it will bring in more search traffic.&lt;/p&gt;

&lt;p&gt;Simply linking to all your blog posts in every new blog post you make is not going to do much for your traffic and will turn away your readers (not a good strategy!), however a few well placed internal linking patterns can be very helpful over the long term.&lt;/p&gt;

&lt;p&gt;During the first few months I blogged I wrote definition articles for many key terms in my industry, including RSS, PageRank and other Internet business and blogging topics.&lt;/p&gt;

&lt;p&gt;I regularly link back to those articles when I mention the terms in a new blog post so that beginner readers can read my definition article to get a grasp of the concepts. Not only is this great for usability it helps my blog search rankings too.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get Your Keywords Right
&lt;/h2&gt;

&lt;p&gt;The most important thing when you link your blog entries together is to choose the right keywords. The keywords you use in the anchor text (the text your readers see as underlined links) help to define what search terms that article will rank well for.&lt;/p&gt;

&lt;p&gt;Lets say your blog topic is “share trading” and you wrote a definition of the PE ratio (the price-to-earnings ratio).&lt;/p&gt;

&lt;p&gt;Every chance you get you should reference back to it in new blog posts. Each time you do this you would use anchor text along the lines of “what is the PE ratio”, but be certain to mix it up with variations.&lt;/p&gt;

&lt;p&gt;This helps that page rank higher for search phrases like “what is the PE ratio”.&lt;/p&gt;

&lt;h2&gt;
  
  
  Increase Your Pageviews
&lt;/h2&gt;

&lt;p&gt;Even if I’ve totally confused you with all this talk about search engine rankings there is one very good plain and simple reason to interlink your blog articles as often as you can – to increase your pageviews.&lt;/p&gt;

&lt;p&gt;Pageviews are how many individual pages each visitor to your blog reads. Obviously you want to increase the number of pageviews because that means your readers stay longer at your blog and read more of your content.&lt;/p&gt;

&lt;p&gt;By interlinking your articles well, and that means placing links between your own articles in a logical manner, you create a nice pathway for a reader to navigate through your blog.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cover The Basics
&lt;/h2&gt;

&lt;p&gt;Some of the topics I covered may be too technical for beginner bloggers. If there is one piece of advice you should take away from this newsletter and implement on your blog it is to link back to your previous blog posts regularly.&lt;/p&gt;

&lt;p&gt;Use logical anchor text links and don’t worry too much about keywords. If you label your links well for humans you generally label well for search engines too. It’s easy to get caught up with keywords so don’t spend too much energy worrying about how you link to your articles, just do it.&lt;/p&gt;

&lt;p&gt;Whenever you write a new article think whether it would be appropriate to link to another article that includes relevant content.&lt;/p&gt;

&lt;p&gt;It takes two seconds and can provide fantastic benefits in search engine rankings, pageview numbers and increases the length of time each visitor stays at your blog.&lt;/p&gt;

</description>
      <category>seo</category>
      <category>interlink</category>
      <category>traffic</category>
      <category>pingback</category>
    </item>
    <item>
      <title>Best 5 Most Used Premium WordPress Plugins</title>
      <dc:creator>Shuaib Yusuf Shuaib</dc:creator>
      <pubDate>Mon, 05 Jul 2021 00:00:00 +0000</pubDate>
      <link>https://forem.com/sysa/best-5-most-used-premium-wordpress-plugins-2f7b</link>
      <guid>https://forem.com/sysa/best-5-most-used-premium-wordpress-plugins-2f7b</guid>
      <description>&lt;h2&gt;
  
  
  Elementor Pro
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Felementor.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Felementor.webp" alt="elementor pro" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Since its release in 2016, &lt;a href="https://elementor.com/" rel="noopener noreferrer"&gt;Elementor&lt;/a&gt; has quickly grown to become one of the most popular page builders for WordPress, with 5+ million active installs. You can even buy Elementor themes from ThemeForest. It’s easy to see why it’s so popular.&lt;br&gt;&lt;br&gt;
With Elementor you can build complex, pixel perfect page designs using drag and drop. Want to start designing from scratch? Choose from over 80 design elements and add text, buttons and even forms to your pages. Need a template? There are 100+ pre-designed templates to help get you started.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pricing&lt;/strong&gt; :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;$49 per year&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Divi
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fdivi.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fdivi.webp" alt="divi" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.elegantthemes.com/affiliates/idevaffiliate.php?id=68820&amp;amp;url=69769" rel="noopener noreferrer"&gt;Divi&lt;/a&gt; is the most popular page builder for WordPress, according to &lt;a href="https://trends.builtwith.com/framework" rel="noopener noreferrer"&gt;BuiltWith&lt;/a&gt;, though it’s had a lot of time to climb the ranks — it was first released in 2013 as Elegant Themes’s flagship theme.&lt;/p&gt;

&lt;p&gt;The Divi offers user-friendly visual page building that’s really fast. There are 46 modules for everything from text and email optins to filterable portfolios and galleries. A unique feature of Divi is its integrated a/b split testing and conversions rate optimization system, which lets you test different design — no other page builder offers this.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pricing&lt;/strong&gt; :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;$89 per year&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  WP Rocket
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fwprocket.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fwprocket.webp" alt="wp rocket" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://wp-rocket.me/?utm_source=shoaiyb%20sysa&amp;amp;utm_medium=post" rel="noopener noreferrer"&gt;WP Rocket&lt;/a&gt; is the most popular premium caching plugin for WordPress thanks to its huge list of features and user-friendly interface. Compared to free plugins like W3 Total Cache, which are confusing to configure, WP Rocket works as soon as you activate it and includes simple settings for further tweaking your site’s performance.&lt;/p&gt;

&lt;p&gt;In addition to browser caching, WP Rocket also provides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Minification and GZIP compression for HTML, CSS, and JavaScript files&lt;/li&gt;
&lt;li&gt;Database cleaning&lt;/li&gt;
&lt;li&gt;Lazy loading&lt;/li&gt;
&lt;li&gt;Cache preloading&lt;/li&gt;
&lt;li&gt;DNS prefetching&lt;/li&gt;
&lt;li&gt;File deferring&lt;/li&gt;
&lt;li&gt;Google Fonts optimization&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Pricing&lt;/strong&gt; :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;$49 per year&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Yoast Seo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fyoastseo.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fyoastseo.webp" alt="yoast seo" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you log in to any WordPress site, more often than not you’ll find Yoast SEO installed. This plugin offers advanced SEO features that are easy enough for beginners to set up and configure.&lt;/p&gt;

&lt;p&gt;The premium version of &lt;a href="https://yoast.com/?utm_source=shoaiyb%20sysa&amp;amp;utm_medium=post" rel="noopener noreferrer"&gt;Yoast SEO&lt;/a&gt; includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Advanced XML sitemaps&lt;/li&gt;
&lt;li&gt;Full control over site breadcrumbs&lt;/li&gt;
&lt;li&gt;Set canonical URLs to avoid duplicate content&lt;/li&gt;
&lt;li&gt;Title and meta description templating&lt;/li&gt;
&lt;li&gt;Content and SEO analysis, including readability&lt;/li&gt;
&lt;li&gt;Text insights&lt;/li&gt;
&lt;li&gt;Automatic internal linking suggestions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Pricing&lt;/strong&gt; :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;$89 for each site per year&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Amelia
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Famelia.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Famelia.webp" alt="amelia" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://wpamelia.com/?utm_source=shoaiyb%20sysa&amp;amp;utm_medium=post" rel="noopener noreferrer"&gt;Amelia&lt;/a&gt; is an enterprise-level appointment booking Premium WordPress Plugin, built with the newest technology. It can be your automated booking specialist which works 24/7. It provides a smooth booking experience for your customers, take care of the payments, and it will fully automate the interaction with the potential customers.&lt;/p&gt;

&lt;p&gt;With Amelia you can receive a booking engine with lots of features, it’s easy to use, you can install it with a few clicks. You can customize it to fit your needs on your website, and it has a tons of demos what you can use.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pricing&lt;/strong&gt; :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;$59 per year&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>wordpress</category>
      <category>plugins</category>
      <category>premium</category>
      <category>free</category>
    </item>
    <item>
      <title>How To ByPass WordPress Admin Login</title>
      <dc:creator>Shuaib Yusuf Shuaib</dc:creator>
      <pubDate>Tue, 29 Jun 2021 00:00:00 +0000</pubDate>
      <link>https://forem.com/sysa/how-to-bypass-wordpress-admin-login-2pk</link>
      <guid>https://forem.com/sysa/how-to-bypass-wordpress-admin-login-2pk</guid>
      <description>&lt;p&gt;We’ve all been there: You have a website that is running well for a while.&lt;br&gt;&lt;br&gt;
Then you want to install some updates or change some text on the home page.&lt;br&gt;&lt;br&gt;
But when you arrive at the WordPress &lt;code&gt;wp-login.php&lt;/code&gt; page you cannot even remember the username of your WordPress admin account… So, here is the solution to quickly log into your WordPress dashboard without knowing the username or the password.&lt;/p&gt;

&lt;p&gt;For now, we’ll have a look at two ways to login into your WordPress site: First one is to reset the users’ password via the Database; for this, you need access to your sites MySQL database (e.g. via phpMyAdmin). For the second alternative, we add a small script via FTP to bypass the WordPress login mechanism.&lt;/p&gt;
&lt;h2&gt;
  
  
  Reset Password via DATABASE
&lt;/h2&gt;

&lt;p&gt;Even when you have access to your WordPress database, you can discover valid user names (and email addresses), but there’s no way to find out the users passwords.&lt;br&gt;&lt;br&gt;
However, you can use the Database to insert a new password for a specific user.&lt;br&gt;&lt;br&gt;
Note, that this approach will permanently reset the users password.&lt;/p&gt;

&lt;p&gt;First, you need to create a Password-Hash that you can insert into the Database.&lt;br&gt;&lt;br&gt;
You can use this online &lt;a href="https://sysa.ml/tools/md5/" rel="noopener noreferrer"&gt;tool to create an MD5 password hash&lt;/a&gt;. For example, the password &lt;code&gt;shoaiyb sysa&lt;/code&gt; has an MD5 hash of &lt;code&gt;38f88f2d99a3737129d63361c0c8c9bf&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;You simply insert this value into the column &lt;code&gt;user_password&lt;/code&gt; in your &lt;code&gt;wp_users&lt;/code&gt; table for the user you want to log in with.&lt;br&gt;&lt;br&gt;
A sample SQL query might look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;UPDATE&lt;/span&gt; &lt;span class="n"&gt;wp_users&lt;/span&gt; 
&lt;span class="k"&gt;SET&lt;/span&gt; &lt;span class="n"&gt;user_password&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;"38f88f2d99a3737129d63361c0c8c9bf"&lt;/span&gt; 
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;user_login&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;"admin"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note: This will reset the password of the user.&lt;br&gt;&lt;br&gt;
You can now log in with the new password.&lt;br&gt;&lt;br&gt;
However, all login cookies of this user will become invalid. When you want to revert the password to the old value, simply reset the user_password field to the previous value (for example, when you need to make a quick change for a client without knowing his password)&lt;/p&gt;
&lt;h2&gt;
  
  
  ByPass The WordPress Login Logic
&lt;/h2&gt;

&lt;p&gt;This is a more elegant solution when you only need temporary access to the website, since it does not alter any details in the database.&lt;br&gt;&lt;br&gt;
Clients can still log in with their password, while you can log in with a different password. Cool, right?&lt;/p&gt;

&lt;p&gt;For this, you need access to the FTP account of the website.&lt;br&gt;&lt;br&gt;
You have to upload the scripts into the &lt;code&gt;/wp-contents/mu-plugins&lt;/code&gt; folder.&lt;br&gt;&lt;br&gt;
When the folder does not exist, create it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Option 1&lt;/strong&gt; : Disable password check The first script here will disable the password check.&lt;br&gt;&lt;br&gt;
You only need to enter a valid user name and press the Login button.&lt;br&gt;&lt;br&gt;
As this is highly insecure on production sites, you should use this script with great care!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class="cd"&gt;/**
*******************************************************************************
 * Log in with any password. You only need to know the username or email address.
 * 
 * How to use it:
 * 
 * 1. Save this code to wp-content/mu-plugins/auto-login.php
 * 2. Now go to wp-login.php and enter a valid username together with any 
 * password. The password is not validated, only the username must exist.
 * 3. To disable this plugin again simply delete the file from mu-plugins.
*******************************************************************************
 */&lt;/span&gt;
&lt;span class="nf"&gt;add_filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;'authenticate'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'nop_auto_login'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;nop_auto_login&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$user&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$username&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$password&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="nv"&gt;$user&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nv"&gt;$user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;get_user_by&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;'email'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$username&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="nv"&gt;$user&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nv"&gt;$user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;get_user_by&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;'login'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$username&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$user&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nf"&gt;wp_set_current_user&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$user&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="no"&gt;ID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$user&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;user_login&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nf"&gt;wp_set_auth_cookie&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$user&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="no"&gt;ID&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nf"&gt;do_action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;'wp_login'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$user&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;user_login&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;

        &lt;span class="nf"&gt;wp_safe_redirect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nf"&gt;admin_url&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="k"&gt;exit&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Option 2&lt;/strong&gt; : Hardcoded master password The second script here does a slightly different job: It requires a small change in wp-config.php where you define a custom login-name and password. The file also belongs into the “/wp-content/mu-plugins” folder. This enables you to use your hardcoded username and password to log in as the default sites administrator.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class="cd"&gt;/**
 *******************************************************************************
 * MAL: Maintenance Auto-Login.
*******************************************************************************
 * Automatically logs you in as the first admin user found in the WordPress 
 * database.
 * 
 * How to use it:
 * 
 * 1. Add the following 2 lines to wp-config.php - adjust the values
 * define( 'MAL_SECRET_USER', 'admin:auto' );
 * define( 'MAL_SECRET_PASS', ' ****' );
 * 2. Save this code to wp-content/mu-plugins/auto-login.php
 * 3. Now you can login to WordPress by using the SECRET_USER / SECRET_PASS 
 * combination. When using these credentials you will end up as admin user.
 * 4. To disable this plugin again comment out the 2 lines in wp-config.php
 *******************************************************************************
 */&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="nb"&gt;defined&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;'ABSPATH'&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;die&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nb"&gt;defined&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;'MAL_SECRET_USER'&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; 
    &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;defined&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;'MAL_SECRET_PASS'&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; 
    &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="no"&gt;MAL_SECRET_USER&lt;/span&gt; 
    &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="no"&gt;MAL_SECRET_PASS&lt;/span&gt; 
&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;add_filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;'authenticate'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'mal_auto_login'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;mal_auto_login&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$user&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$username&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$password&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="no"&gt;MAL_SECRET_USER&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="nv"&gt;$username&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="no"&gt;MAL_SECRET_PASS&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="nv"&gt;$password&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// Find an admin user ID.&lt;/span&gt;
        &lt;span class="nv"&gt;$user_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;mal_get_admin_user_id&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="nv"&gt;$user_id&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nf"&gt;wp_die&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;'No admin user found'&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="c1"&gt;// Log in as admin user automatically.&lt;/span&gt;
        &lt;span class="nv"&gt;$user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;get_user_by&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;'id'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$user_id&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nf"&gt;wp_set_current_user&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$user_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$user&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;user_login&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nf"&gt;wp_set_auth_cookie&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$user_id&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nf"&gt;do_action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;'wp_login'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$user&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;user_login&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;

        &lt;span class="nf"&gt;wp_safe_redirect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nf"&gt;admin_url&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="k"&gt;exit&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;mal_get_admin_user_id&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;global&lt;/span&gt; &lt;span class="nv"&gt;$wpdb&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;$sql&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"
    SELECT u.ID
    FROM &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;$wpdb&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;users&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; u
    INNER JOIN &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;$wpdb&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;usermeta&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; m ON m.user_id = u.ID
    WHERE
        (m.meta_key = '&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;$wpdb&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;prefix&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;user_level' AND m.meta_value = 10)
        OR
        (m.meta_key = '&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;$wpdb&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;prefix&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;capabilities' AND m.meta_value LIKE '%&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;administrator&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;%')
    "&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;$res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;intval&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$wpdb&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;get_var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$sql&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nv"&gt;$res&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>wordpress</category>
      <category>bypass</category>
      <category>beginners</category>
      <category>guide</category>
    </item>
    <item>
      <title>Build A WordPress Community Website With BuddyPress</title>
      <dc:creator>Shuaib Yusuf Shuaib</dc:creator>
      <pubDate>Tue, 01 Jun 2021 00:00:00 +0000</pubDate>
      <link>https://forem.com/sysa/build-a-wordpress-community-website-with-buddypress-5fm0</link>
      <guid>https://forem.com/sysa/build-a-wordpress-community-website-with-buddypress-5fm0</guid>
      <description>&lt;p&gt;WordPress is a robust platform that can handle most types of websites out of the box, with a few notable exceptions.&lt;br&gt;&lt;br&gt;
For example, you’ll need to do a little tinkering if you’re hoping to set up a website with social media capabilities such as profiles and private groups.&lt;br&gt;&lt;br&gt;
In the end, though, creating a WordPress community website is entirely doable.&lt;/p&gt;

&lt;p&gt;Community sites can be a major asset, especially for private work or study groups.&lt;br&gt;&lt;br&gt;
They enable users to stay in touch and remain aware of the latest developments in their areas of interest.&lt;br&gt;&lt;br&gt;
Best of all, each user can choose how engaged they want to be with the community.&lt;/p&gt;

&lt;p&gt;In this article, we’ll discuss how community websites work, why you’d want one, and how to set one up using WordPress.&lt;br&gt;&lt;br&gt;
Let’s jump right in!&lt;/p&gt;

&lt;h2&gt;
  
  
  What Are Community Websites
&lt;/h2&gt;

&lt;p&gt;A community website is a platform primarily intended to enable user interaction.&lt;br&gt;&lt;br&gt;
It usually provides its members with customizable profile pages, a ‘friending’ feature, and activity streams where users can monitor what’s going on in the community.&lt;br&gt;&lt;br&gt;
Many community sites also support their own forums, which enable users to interact with each other and ask questions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fcommunity-example.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fcommunity-example.webp" alt="community example" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;By default, WordPress doesn’t support any of those features, which is a shame because they can be highly engaging.&lt;br&gt;&lt;br&gt;
Community websites make it so you don’t have to worry about creating content continuously, since users will entertain themselves by chatting with each other. Furthermore, these types of websites can be quite addictive since they’re modeled after social media.&lt;/p&gt;

&lt;p&gt;A community site is a great option if you need to set up a platform for company employees or departments to communicate with each other.&lt;br&gt;&lt;br&gt;
The same applies to study groups, and virtually any organization where in-group communication is critical.&lt;/p&gt;

&lt;p&gt;Fortunately for you, WordPress does enable us to set up these kinds of websites fairly easily, even if the platform wasn’t built with that purpose in mind.&lt;br&gt;&lt;br&gt;
Let’s find out how!&lt;/p&gt;

&lt;h2&gt;
  
  
  How to build a WordPress community website (in 2 steps)
&lt;/h2&gt;

&lt;p&gt;There are plenty of plugins that can help you put together a WordPress community website, but my vote has to go to BuddyPress.&lt;br&gt;&lt;br&gt;
Not only is it one of the most popular WordPress plugins around, but it also has fantastic documentation and is easy to set up.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://buddypress.org/" rel="noopener noreferrer"&gt;BuddyPress&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fbuddypress-banner.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fbuddypress-banner.webp" alt="BuddyPress" width="800" height="400"&gt;&lt;/a&gt;      &lt;/p&gt;

&lt;p&gt;Author(s): &lt;a href="https://buddypress.org/" rel="noopener noreferrer"&gt;The BuddyPress Community&lt;/a&gt;&lt;br&gt;&lt;br&gt;
 Current Version: 7.3.0&lt;br&gt;&lt;br&gt;
 Last Updated: April 14, 2021&lt;br&gt;&lt;br&gt;
 Download Link: &lt;a href="https://downloads.wordpress.org/plugin/buddypress.7.3.0.zip" rel="noopener noreferrer"&gt;buddypress.7.3.0.zip&lt;/a&gt;      &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ratings&lt;/strong&gt;: 84%&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Installs&lt;/strong&gt;:200,000+&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Requires&lt;/strong&gt;: WP-4.9+   &lt;/p&gt;

&lt;p&gt;Once you’ve installed it, you’re ready to get down to business.&lt;br&gt;&lt;br&gt;
Let’s start by configuring the settings:&lt;/p&gt;

&lt;h3&gt;
  
  
  Configure BuddyPress
&lt;/h3&gt;

&lt;p&gt;After you install the plugin, a BuddyPress tab will appear under Settings in your dashboard. Click on it, then go to Options.&lt;/p&gt;

&lt;p&gt;In this tab, you’ll find several of BuddyPress’ main settings, including the option to enable users to upload profile and cover photos.&lt;br&gt;&lt;br&gt;
I recommend allowing both, since that will provide members with an incentive to customize their own pages:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fenable-photo.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fenable-photo.webp" alt="enable members" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After dealing with those settings, scroll down and you’ll find two more options. One will enable activity stream comments on your regular blog posts – I recommend using this option to provide more opportunities for engagement.&lt;br&gt;&lt;br&gt;
You can also make sure new items will appear on the main activity stream without the need for users to reload the page:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Factivity-settings.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Factivity-settings.webp" alt="activity settings" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Finally, it’s worth noting that BuddyPress won’t work properly if your WordPress site is using the default permalink structure.&lt;br&gt;&lt;br&gt;
That means you need to go into the Settings &amp;gt; Permalinks tab and select a different structure if you haven’t done so yet.&lt;br&gt;&lt;br&gt;
Once you’ve taken care of that, you’ll be ready to move on.&lt;/p&gt;

&lt;h2&gt;
  
  
  Set up your community pages
&lt;/h2&gt;

&lt;p&gt;Before users can start enjoying your WordPress community website, you need to decide what pages to include.&lt;br&gt;&lt;br&gt;
To do this, return to the Settings tab and click on &lt;code&gt;BuddyPress &amp;gt; Components&lt;/code&gt;.&lt;br&gt;&lt;br&gt;
The following section will display a list of all the components or pages that you can add to your community, including profiles, activity streams, private messages, and so on:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fcomponents.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fcomponents.webp" alt="components" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The decision about which components to include will depend largely on the type of community you want to set up.&lt;br&gt;&lt;br&gt;
For example, if you want to provide users with the ability to create private groups, you’ll need to enable the User Groups component.&lt;br&gt;&lt;br&gt;
Most of the options available are self-explanatory, but you can always check out BuddyPress’ documentation if you want to find out more about their individual features.&lt;/p&gt;

&lt;p&gt;For now, I’d recommend that you enable at least the following basic components:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Extended profiles:
These enable users to include more personal information than WordPress’ default options.&lt;/li&gt;
&lt;li&gt;Friend connections:
Enabling users to establish ‘friendships’ is a crucial component of any community website.&lt;/li&gt;
&lt;li&gt;Activity stream:
This is the page where users will be able to check out all the latest developments in the community.&lt;/li&gt;
&lt;li&gt;User groups:
Users can take advantage of this component to set up public and private groups within your community. This can help keep your site organized if it has many members.&lt;/li&gt;
&lt;li&gt;BuddyPress core:
This is the component that enables all the plugin’s other features – don’t disable this one!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once you’ve checked off all the components you want and saved your changes, your WordPress community website will be ready to go.&lt;br&gt;&lt;br&gt;
Before you wrap up, you may want to set the activity stream as your site’s default homepage, which will ensure that users can see the latest happenings as soon as they log in.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Establishing a community website might seem complicated at first, but – as is usually the case with WordPress – using the right plugin makes it very achievable.&lt;br&gt;&lt;br&gt;
This type of site can be useful for organizations that require group members to stay in touch and be aware of new developments, and it will help keep those members active and engaged.&lt;/p&gt;

&lt;p&gt;If you’re interested in building a community website using BuddyPress, all you need to do is configure the plugin and enable the pages you want your site to include (following the instructions above).&lt;/p&gt;

&lt;p&gt;Do you have any questions about how to set up a WordPress community website? Ask away in the comments section below!&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>beginners</category>
      <category>guide</category>
      <category>buddypress</category>
    </item>
    <item>
      <title>Build A Simple WordPress Contact Form Plugin</title>
      <dc:creator>Shuaib Yusuf Shuaib</dc:creator>
      <pubDate>Tue, 01 Jun 2021 00:00:00 +0000</pubDate>
      <link>https://forem.com/sysa/build-a-simple-wordpress-contact-form-plugin-2hfp</link>
      <guid>https://forem.com/sysa/build-a-simple-wordpress-contact-form-plugin-2hfp</guid>
      <description>&lt;p&gt;Most websites are typically designed to comply with standard web practices by including a dedicated page where a contact form is located.&lt;br&gt;&lt;br&gt;
This provides visitors with an easy way to reach out to the site owner.&lt;/p&gt;

&lt;p&gt;In simple terms, a contact form has a set of questions and fields which are filled in by a visitor.&lt;br&gt;&lt;br&gt;
The information is usually automatically sent via email to the site administrator or another nominated email account.&lt;br&gt;&lt;br&gt;
It is worth noting that this email address isn’t displayed to visitors, so using a contact form typically reduces email spam from bots that harvest naked email addresses on the Internet.&lt;br&gt;&lt;br&gt;
Contact forms play a very important role on a website, where they are used for collecting feedback, enquiries and other data from users.&lt;/p&gt;

&lt;p&gt;If your website is powered by WordPress, there are numerous plugins that seamlessly integrate a contact form on your website.&lt;/p&gt;

&lt;p&gt;In this article, I will provide a list of some free WordPress contact form plugins.&lt;br&gt;&lt;br&gt;
I will also discuss why you should consider rolling your own contact form.&lt;br&gt;&lt;br&gt;
Then, I will provide you with a short tutorial showing you how to build your own WordPress contact form plugin.&lt;/p&gt;
&lt;h2&gt;
  
  
  WordPress Contact Form Plugins
&lt;/h2&gt;

&lt;p&gt;Before we get started, we’re going to go over a few of the popular free contact form plugins available in the WordPress Plugin Directory.&lt;br&gt;&lt;br&gt;
These are great to use, but even better to learn from when you’re getting started building your own plugins.&lt;/p&gt;

&lt;p&gt;Below are some of the most highly rated free contact form plugins for WordPress:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Contact Form 7:&lt;br&gt;&lt;br&gt;
This is the second most popular plugin with over 18 million downloads, it could almost be considered as the de facto contact form plugin for a WordPress website.&lt;br&gt;&lt;br&gt;
Contact Form 7 can manage multiple contact forms and you can customize the form and the email contents with simple markup.&lt;br&gt;&lt;br&gt;
The form features include Ajax-powered submission, CAPTCHA, Akismet spam filtering and lots more.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Contact Form to Email:&lt;br&gt;&lt;br&gt;
This plugin not only creates contact forms and sends the data to a specified email address it also saves the contact form data into a database, providing printable reports and the option to export the selected data to CSV/Excel file.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;FormGet Contact Form:&lt;br&gt;&lt;br&gt;
An easy online drag and drop contact form builder tool.&lt;br&gt;&lt;br&gt;
All you need to do is click on the fields that you want in your form, and within few seconds your contact form is ready.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Bestwebsoft Contact Form:&lt;br&gt;&lt;br&gt;
Allows you to implement a feedback form to a web page or a post effortlessly.&lt;br&gt;&lt;br&gt;
It is extremely easy, and you won’t require any additional settings, even though there are some available to play with.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Why Roll Your Own Contact Form Plugin?
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Becoming a Better Developer
&lt;/h3&gt;

&lt;p&gt;Developing your own WordPress plugin helps you better understand how WordPress works ‘under the hood’ which can help you to become a more experienced web developer.&lt;br&gt;&lt;br&gt;
While there are tens of thousands of plugins in the &lt;a href="https://wordpress.org/plugins/" rel="noopener noreferrer"&gt;WordPress Plugin Directory&lt;/a&gt; to use, being able to modify and extend other plugins is a very useful skill.&lt;/p&gt;
&lt;h3&gt;
  
  
  Building a Better Form
&lt;/h3&gt;

&lt;p&gt;Many WordPress contact form plugins are bloated.&lt;br&gt;&lt;br&gt;
They include many features that you may never use.&lt;br&gt;&lt;br&gt;
Heavy usage of JavaScript and CSS files are also common in some of the standard contact form plugins.&lt;br&gt;&lt;br&gt;
This increases the number of HTTP requests which adversely affects WordPress performance.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;80% of the end-user response time is spent on the front-end.&lt;br&gt;&lt;br&gt;
Most of this time is tied up in downloading all the components in the page: images, stylesheets, scripts, Flash, etc.&lt;br&gt;&lt;br&gt;
Reducing the number of components in turn reduces the number of HTTP requests required to render the page.&lt;br&gt;&lt;br&gt;
This is the key to faster pages. &lt;br&gt;
– According to &lt;a href="http://developer.yahoo.com/performance/rules.html#num_http" rel="noopener noreferrer"&gt;Yahoo’s performance rules&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you are like me, and you desire a simple contact form plugin that just works, read on.&lt;br&gt;&lt;br&gt;
I’ll guide you through the simple process of develop your own plugin so you can kiss goodbye bloated plugins.&lt;br&gt;&lt;br&gt;
In this example no extra CSS and JavaScript files are required, the validation done using HTML5.&lt;/p&gt;
&lt;h2&gt;
  
  
  Contact Form Plugin Development
&lt;/h2&gt;

&lt;p&gt;In five minutes, you will learn how to develop a simple WordPress contact form, that’s a promise!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ready&lt;/strong&gt;? &lt;strong&gt;Set&lt;/strong&gt;? &lt;strong&gt;Go&lt;/strong&gt;!&lt;/p&gt;

&lt;p&gt;All WordPress pluigns are PHP files, located in the &lt;code&gt;/wp-content/plugins/&lt;/code&gt; directory.&lt;br&gt;&lt;br&gt;
In our example, the file will be called &lt;code&gt;formtact.php&lt;/code&gt;.&lt;br&gt;&lt;br&gt;
I assume you’re comfortable with connecting to your server using &lt;code&gt;FTP/SFTP/SCP&lt;/code&gt; or &lt;code&gt;SSH&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;If you want to follow along, simply create a file called formtact.php (the final complete example will be available at the end of the article):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class="cm"&gt;/*
Plugin Name: FormTact
Plugin URI: https://sysa.ml/build-simple-wordpress-contact-form-plugin/
Description: Simple non-bloated WordPress Contact Form
Version: 1.0
Author: shoaiyb sysa
Author URI: https://sysa.ml
*/&lt;/span&gt;
    &lt;span class="c1"&gt;//&lt;/span&gt;
    &lt;span class="c1"&gt;// the plugin code will go here..&lt;/span&gt;
    &lt;span class="c1"&gt;//&lt;/span&gt;
&lt;span class="cp"&gt;?&amp;gt;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, we add the &lt;code&gt;function formtact_html()&lt;/code&gt; that contains the contact form HTML:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;formtact_html&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;form action="'&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="nf"&gt;esc_url&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$_SERVER&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'REQUEST_URI'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="s1"&gt;'" method="post"&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;p&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'Your Name (required) &amp;lt;br /&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;input type="text" name="ft-name" pattern="[a-zA-Z0-9]+" value="'&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="k"&gt;isset&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$_POST&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"cf-name"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;?&lt;/span&gt; &lt;span class="nf"&gt;esc_attr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$_POST&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"cf-name"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;''&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="s1"&gt;'" size="40" /&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;/p&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;p&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'Your Email (required) &amp;lt;br /&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;input type="email" name="ft-email" value="'&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="k"&gt;isset&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$_POST&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"cf-email"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;?&lt;/span&gt; &lt;span class="nf"&gt;esc_attr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$_POST&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"cf-email"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;''&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="s1"&gt;'" size="40" /&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;/p&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;p&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'Subject (required) &amp;lt;br /&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;input type="text" name="ft-subject" pattern="[a-zA-Z]+" value="'&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="k"&gt;isset&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$_POST&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"cf-subject"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;?&lt;/span&gt; &lt;span class="nf"&gt;esc_attr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$_POST&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"cf-subject"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;''&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="s1"&gt;'" size="40" /&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;/p&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;p&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'Your Message (required) &amp;lt;br /&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;textarea rows="10" cols="35" name="cf-message"&amp;gt;'&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="k"&gt;isset&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$_POST&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"cf-message"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;?&lt;/span&gt; &lt;span class="nf"&gt;esc_attr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$_POST&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"cf-message"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;''&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;/textarea&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;/p&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;p&amp;gt;&amp;lt;input type="submit" name="ft-submit" value="Send"/&amp;gt;&amp;lt;/p&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;/form&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Basic validation was added to the form via the pattern input attribute.&lt;/p&gt;

&lt;p&gt;The RegEX in the contact form does the following field validation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;a-zA-Z0-9: only letters, spaces and numbers allowed in the name field; special symbols are deemed invalid.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;a-zA-Z: only letters and spaces are allowed in the subject field.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The &lt;code&gt;email&lt;/code&gt; form control validates the email field hence there is no need for a pattern attribute.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hurry Up!
&lt;/h3&gt;

&lt;p&gt;Okay, how many minutes do we have left? Four minutes! We still have time to get this over with.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;function deliver_mail()&lt;/code&gt; sanitizes the form data and sends the mail to the WordPress administrator’s email address.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;deliver_mail&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

    &lt;span class="c1"&gt;// if the submit button is clicked, send the email&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="k"&gt;isset&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$_POST&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'ft-submit'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

        &lt;span class="c1"&gt;// sanitize form values&lt;/span&gt;
        &lt;span class="nv"&gt;$name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;sanitize_text_field&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$_POST&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"ft-name"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nv"&gt;$email&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;sanitize_email&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$_POST&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"ft-email"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nv"&gt;$subject&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;sanitize_text_field&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$_POST&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"ft-subject"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nv"&gt;$message&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;esc_textarea&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$_POST&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"ft-message"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;

        &lt;span class="c1"&gt;// get the blog administrator's email address&lt;/span&gt;
        &lt;span class="nv"&gt;$to&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;get_option&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;'admin_email'&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;

        &lt;span class="nv"&gt;$headers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"From: &lt;/span&gt;&lt;span class="nv"&gt;$name&lt;/span&gt;&lt;span class="s2"&gt; &amp;lt;&lt;/span&gt;&lt;span class="nv"&gt;$email&lt;/span&gt;&lt;span class="s2"&gt;&amp;gt;"&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\r\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="c1"&gt;// If email has been process for sending, display a success message&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nf"&gt;wp_mail&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$to&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$subject&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$message&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$headers&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;div&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;p&amp;gt;Thanks for contacting me, expect a response soon.&amp;lt;/p&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;/div&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'An unexpected error occurred'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The sanitation of the form data is done by the following WordPress internal functions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;sanitize_text_field()&lt;/code&gt;: Sanitize the data from user input.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;sanitize_email()&lt;/code&gt;: Strips out all characters that are not allowable in an email.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;esc_textarea()&lt;/code&gt;: Escape the message text area values.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The code &lt;code&gt;get_option( 'admin_email' )&lt;/code&gt; programmatically retrieves the WordPress administrator’s email address from the database where the email will be delivered to.&lt;/p&gt;

&lt;p&gt;Don’t want the contact form to send the mail to admin? Simply set the variable &lt;code&gt;$to&lt;/code&gt; to the desired email address.&lt;/p&gt;

&lt;p&gt;If the email has successfully been processed without any errors by the &lt;code&gt;function wp_mail()&lt;/code&gt;, the text Thanks for contacting me, expect a response soon will be shown, otherwise An unexpected error occurred is displayed.&lt;/p&gt;

&lt;h3&gt;
  
  
  1 Minute and 30 Seconds Left
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;function ft_shortcode()&lt;/code&gt; is the callback function that is called when the contact form shortcode [formtact] is active.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;ft_shortcode&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nb"&gt;ob_start&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nf"&gt;deliver_mail&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nf"&gt;formtact_html&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nb"&gt;ob_get_clean&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The above functions calls the &lt;code&gt;formtact_html()&lt;/code&gt; and &lt;code&gt;deliver_mail()&lt;/code&gt; functions to display the contact form HTML form and validate the form data respectively.&lt;/p&gt;

&lt;p&gt;Finally, the shortcode [formtact] is registered to WordPress. So simply add:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nf"&gt;add_shortcode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;'formtact'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'ft_shortcode'&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  3, 2, 1… Time’s Up!
&lt;/h2&gt;

&lt;p&gt;Congratulations, we have successfully developed our own WordPress contact form plugin and I have fulfilled my earlier promise.&lt;/p&gt;

&lt;p&gt;Now, to use this plugin on your website, simply activate it in under the ‘Plugins’ section of your WordPress dashboard, then create a post or page and then simply add the shortcode where you want the form to appear [formtact].&lt;/p&gt;

&lt;p&gt;If you then preview the page and you should see the contact form displayed as shown below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fformtact-preview.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fformtact-preview.webp" alt="preview" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;To further understand how the plugin was built and how to implement it on your WordPress site, copy the code below, paste in a file and upload it to your &lt;code&gt;/wp-content/plugins/&lt;/code&gt; directory.&lt;/p&gt;

&lt;p&gt;Here’s the entire plugin example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class="cm"&gt;/*
Plugin Name: FormTact
Plugin URI: https://sysa.ml/build-simple-wordpress-contact-form-plugin/
Description: Simple non-bloated WordPress Contact Form
Version: 1.0
Author: shoaiyb sysa
Author URI: https://sysa.ml
*/&lt;/span&gt;

&lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;formtact_html&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;form action="'&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="nf"&gt;esc_url&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$_SERVER&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'REQUEST_URI'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="s1"&gt;'" method="post"&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;p&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'Your Name (required) &amp;lt;br/&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;input type="text" name="ft-name" pattern="[a-zA-Z0-9]+" value="'&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="k"&gt;isset&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$_POST&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"ft-name"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;?&lt;/span&gt; &lt;span class="nf"&gt;esc_attr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$_POST&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"ft-name"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;''&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="s1"&gt;'" size="40" /&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;/p&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;p&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'Your Email (required) &amp;lt;br/&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;input type="email" name="ft-email" value="'&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="k"&gt;isset&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$_POST&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"ft-email"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;?&lt;/span&gt; &lt;span class="nf"&gt;esc_attr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$_POST&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"ft-email"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;''&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="s1"&gt;'" size="40" /&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;/p&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;p&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'Subject (required) &amp;lt;br/&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;input type="text" name="ft-subject" pattern="[a-zA-Z]+" value="'&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="k"&gt;isset&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$_POST&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"ft-subject"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;?&lt;/span&gt; &lt;span class="nf"&gt;esc_attr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$_POST&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"ft-subject"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;''&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="s1"&gt;'" size="40" /&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;/p&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;p&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'Your Message (required) &amp;lt;br/&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;textarea rows="10" cols="35" name="ft-message"&amp;gt;'&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="k"&gt;isset&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$_POST&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"ft-message"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;?&lt;/span&gt; &lt;span class="nf"&gt;esc_attr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$_POST&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"ft-message"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;''&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;/textarea&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;/p&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;p&amp;gt;&amp;lt;input type="submit" name="ft-submit" value="Send"&amp;gt;&amp;lt;/p&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;/form&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;deliver_mail&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

    &lt;span class="c1"&gt;// if the submit button is clicked, send the email&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="k"&gt;isset&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$_POST&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'ft-submit'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

        &lt;span class="c1"&gt;// sanitize form values&lt;/span&gt;
        &lt;span class="nv"&gt;$name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;sanitize_text_field&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$_POST&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"ft-name"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nv"&gt;$email&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;sanitize_email&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$_POST&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"ft-email"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nv"&gt;$subject&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;sanitize_text_field&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$_POST&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"ft-subject"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nv"&gt;$message&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;esc_textarea&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$_POST&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"ft-message"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;

        &lt;span class="c1"&gt;// get the blog administrator's email address&lt;/span&gt;
        &lt;span class="nv"&gt;$to&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;get_option&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;'admin_email'&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;

        &lt;span class="nv"&gt;$headers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"From: &lt;/span&gt;&lt;span class="nv"&gt;$name&lt;/span&gt;&lt;span class="s2"&gt; &amp;lt;&lt;/span&gt;&lt;span class="nv"&gt;$email&lt;/span&gt;&lt;span class="s2"&gt;&amp;gt;"&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\r\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="c1"&gt;// If email has been process for sending, display a success message&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nf"&gt;wp_mail&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$to&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$subject&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$message&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$headers&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;div&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;p&amp;gt;Thanks for contacting me, expect a response soon.&amp;lt;/p&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;/div&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'An unexpected error occurred'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;ft_shortcode&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nb"&gt;ob_start&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nf"&gt;deliver_mail&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nf"&gt;html_form_code&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nb"&gt;ob_get_clean&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nf"&gt;add_shortcode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;'formtact'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'ft_shortcode'&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="cp"&gt;?&amp;gt;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let me know your thoughts and questions in the comments.&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>beginners</category>
      <category>develop</category>
      <category>plugin</category>
    </item>
    <item>
      <title>Build Static Blog With Jekyll For Free On Github Pages</title>
      <dc:creator>Shuaib Yusuf Shuaib</dc:creator>
      <pubDate>Wed, 26 May 2021 10:10:35 +0000</pubDate>
      <link>https://forem.com/sysa/build-static-blog-with-jekyll-for-free-on-github-pages-43o</link>
      <guid>https://forem.com/sysa/build-static-blog-with-jekyll-for-free-on-github-pages-43o</guid>
      <description>&lt;h2&gt;
  
  
  What is Github?
&lt;/h2&gt;

&lt;p&gt;To understand GitHub, you must first have an understanding of Git.     &lt;/p&gt;

&lt;h3&gt;
  
  
  What is Git?
&lt;/h3&gt;

&lt;p&gt;Git is an open-source version control system that was started by Linus Torvalds—the same person who created Linux. Git is similar to other version control systems—Subversion, CVS, and Mercurial to name a few.&lt;br&gt;&lt;br&gt;
So, Git is a version control system, but what does that mean? When developers create something (an app, for example), they make constant changes to the code, releasing new versions up to and after the first official (non-beta) release.&lt;br&gt;&lt;br&gt;
Version control systems keep these revisions straight, storing the modifications in a central repository. This allows developers to easily collaborate, as they can download a new version of the software, make changes, and upload the newest revision. Every developer can see these new changes, download them, and contribute&lt;br&gt;&lt;br&gt;
Similarly, people who have nothing to do with the development of a project can still download the files and use them. Most Linux users should be familiar with this process, as using Git, Subversion, or some other similar method is pretty common for downloading needed files—especially in preparation for compiling a program from source code (a rather common practice for Linux geeks).&lt;br&gt;&lt;br&gt;
Git is the preferred version control system of most developers, since it has multiple advantages over the other systems available. It stores file changes more efficiently and ensures file integrity better. If you’re interested in knowing the details, the &lt;a href="http://git-scm.com/book/en/Getting-Started-Git-Basics" rel="noopener noreferrer"&gt;Git Basics page&lt;/a&gt; has a thorough explanation on how Git works.     &lt;/p&gt;

&lt;h3&gt;
  
  
  The 'Hub' in Github
&lt;/h3&gt;

&lt;p&gt;We’ve established that Git is a version control system, similar but better than the many alternatives available.&lt;br&gt;&lt;br&gt;
So, what makes GitHub so special? Git is a command-line tool, but the center around which all things involving Git revolve is the hub—GitHub.com where developers store their projects and network with like minded people.&lt;br&gt;&lt;br&gt;
Let’s go over a few of the main reasons that geeks like to use GitHub, and learn some terminology along the way.     &lt;/p&gt;

&lt;h3&gt;
  
  
  Repository
&lt;/h3&gt;

&lt;p&gt;A repository (usually abbreviated to “repo”) is a location where all the files for a particular project are stored.&lt;br&gt;&lt;br&gt;
Each project has its own repo, and you can access it with a unique URL.    &lt;/p&gt;

&lt;h3&gt;
  
  
  Forking a Repo
&lt;/h3&gt;

&lt;p&gt;“Forking” is when you create a new project based off of another project that already exists.&lt;br&gt;&lt;br&gt;
This is an amazing feature that vastly encourages the further development of programs and other projects.&lt;br&gt;&lt;br&gt;
If you find a project on GitHub that you’d like to contribute to, you can fork the repo, make the changes you’d like, and release the revised project as a new repo. If the original repository that you forked to create your new project gets updated, you can easily add those updates to your current fork.     &lt;/p&gt;

&lt;h3&gt;
  
  
  Pull Requests
&lt;/h3&gt;

&lt;p&gt;You’ve forked a repository, made a great revision to the project, and want it to be recognized by the original developers—maybe even included in the official project/repository. You can do so by creating a pull request. The authors of the original repository can see your work, and then choose whether or not to accept it into the official project.&lt;br&gt;&lt;br&gt;
Whenever you issue a pull request, GitHub provides a perfect medium for you and the main project’s maintainer to communicate.    &lt;/p&gt;

&lt;h3&gt;
  
  
  Social networking
&lt;/h3&gt;

&lt;p&gt;The social networking aspect of GitHub is probably its most powerful feature, allowing projects to grow more than just about any of the other features offered.&lt;br&gt;&lt;br&gt;
Each user on GitHub has their own profile that acts like a resume of sorts, showing your past work and contributions to other projects via pull requests.&lt;br&gt;&lt;br&gt;
Project revisions can be discussed publicly, so a mass of experts can contribute knowledge and collaborate to advance a project forward. Before the advent of GitHub, developers interested in contributing to a project would usually need to find some means of contacting the authors—probably by email—and then convince them that they can be trusted and their contribution is legit.    &lt;/p&gt;

&lt;h3&gt;
  
  
  Changelogs
&lt;/h3&gt;

&lt;p&gt;When multiple people collaborate on a project, it’s hard to keep track revisions—who changed what, when, and where those files are stored.&lt;br&gt;&lt;br&gt;
GitHub takes care of this problem by keeping track of all the changes that have been pushed to the repository.    &lt;/p&gt;

&lt;h3&gt;
  
  
  GitHub Isn’t Just for Developers
&lt;/h3&gt;

&lt;p&gt;All this talk about how GitHub is ideal for programmers may have you believing that they are the only ones who will find it useful. Although it’s a lot less common, you can actually use GitHub for any types of files. If you have a team that is constantly making changes to a word document, for example,  you could use GitHub as your version control system. This practice isn’t common, since there are better alternatives in most cases, but it’s something to keep in mind.&lt;br&gt;&lt;br&gt;
Now that you know what GitHub is all about, and you're ready to get to the next step. and be sure to check out their.     &lt;/p&gt;

&lt;h2&gt;
  
  
  What is Github Pages
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://pages.github.com" rel="noopener noreferrer"&gt;GitHub Pages&lt;/a&gt; is a free place to store the files that run a website and host that website for people to visit (it only works for particular types of website, like basic HTML sites or Jekyll sites, and does not host databases).    &lt;/p&gt;

&lt;h2&gt;
  
  
  What is Jekyll?
&lt;/h2&gt;

&lt;p&gt;Jekyll is a website generator that’s designed for building minimal, static blogs to be hosted on GitHub Pages.&lt;br&gt;&lt;br&gt;
It is a static site generator. It takes text written in your favorite markup language and uses layouts to create a static website. You can tweak the site’s look and feel, URLs, the data displayed on the page, and more.&lt;br&gt;&lt;br&gt;
Jekyll takes your content written in Markdown, passes it through your templates and spits it out as a complete static website, ready to be served. GitHub Pages conveniently serves the website directly from your GitHub repository so that you don’t have to deal with any hosting.&lt;br&gt;&lt;br&gt;
Here are some websites that were created with Jekyll:     &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://sysa.ml/" rel="noopener noreferrer"&gt;shoaiyb sysa&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://jekyllrb.com" rel="noopener noreferrer"&gt;Jekyll&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Purpose of Jekyll
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://tom.preston-werner.com" rel="noopener noreferrer"&gt;Tom Preston-Werner&lt;/a&gt; created Jekyll to enable people to blog using a simple static HTML website, with all of the content hosted and version-controlled on Git repository.&lt;br&gt;&lt;br&gt;
The goal was to eliminate the complexity of other blogging platforms by creating a workflow that allows you to blog like a hacker.     &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;On Sunday, October 19th, I sat down in my San Francisco apartment with a glass of apple cider and a clear mind. After a period of reflection, I had an idea. While I’m not specifically trained as an author of prose, I am trained as an author of code. What would happen if I approached blogging from a software development perspective? What would that look like?     &lt;/p&gt;

&lt;p&gt;Over the last month I’ve brought these concepts to fruition and I’m pleased to announce &lt;a href="https://github.com/mojombo/jekyll" rel="noopener noreferrer"&gt;Jekyll&lt;/a&gt;.&lt;br&gt;&lt;br&gt;
-- Tom Preston-Werner       &lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Reminder
&lt;/h2&gt;

&lt;p&gt;Here’s a quick reminder of what you need to know about this option:    &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Price: FREE&lt;/li&gt;
&lt;li&gt;Difficulty: Medium&lt;/li&gt;
&lt;li&gt;Knowledge: Git, Markdown&lt;/li&gt;
&lt;li&gt;Required Tools: GitHub account, Internet Browser&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Pros
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Totally Free
&lt;/li&gt;
&lt;li&gt;No database
&lt;/li&gt;
&lt;li&gt;No CMS
&lt;/li&gt;
&lt;li&gt;Security
&lt;/li&gt;
&lt;li&gt;Design control
&lt;/li&gt;
&lt;li&gt;Super fast (only static files)
&lt;/li&gt;
&lt;li&gt;Easy to make changes (edit, commit &amp;amp; push)
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Cons
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;A bit of tech knowledge is required
&lt;/li&gt;
&lt;li&gt;Need to pay for a domain name (to avoid the url myname.github.io)
&lt;/li&gt;
&lt;li&gt;Have to use Disqus for comments
&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>jekyll</category>
      <category>github</category>
      <category>develop</category>
      <category>build</category>
    </item>
    <item>
      <title>Difference Between WordPress and Blogger</title>
      <dc:creator>Shuaib Yusuf Shuaib</dc:creator>
      <pubDate>Wed, 26 May 2021 00:00:00 +0000</pubDate>
      <link>https://forem.com/sysa/difference-between-wordpress-and-blogger-14bg</link>
      <guid>https://forem.com/sysa/difference-between-wordpress-and-blogger-14bg</guid>
      <description>&lt;p&gt;It is easy to decide that you want to &lt;a href="https://sysa.ml/how-to-start-blog/" rel="noopener noreferrer"&gt;make a blog&lt;/a&gt;.&lt;br&gt;&lt;br&gt;
You probably already have some ideas about what to write and how everything should look like.&lt;br&gt;&lt;br&gt;
Maybe you know a thing or two about blogging, marketing, and website building, but if you haven’t worked on your own site, the chances are that you still don’t know which platform to go for.&lt;/p&gt;

&lt;p&gt;Maybe you have heard about them from friends and colleagues, or you have already searched for comparisons – &lt;strong&gt;WordPress&lt;/strong&gt; and &lt;strong&gt;Blogger&lt;/strong&gt; are definitely among the most &lt;a href="https://sysa.ml/best-blogging-platforms/" rel="noopener noreferrer"&gt;popular blogging platforms&lt;/a&gt;.&lt;br&gt;&lt;br&gt;
So, the question arises; which one should you use for your first blog?&lt;/p&gt;

&lt;h2&gt;
  
  
  What are WordPress and Blogger?
&lt;/h2&gt;

&lt;p&gt;Powering about 28% of the world wide web, WordPress is not a stranger to most people.&lt;br&gt;&lt;br&gt;
Even if you haven’t blogged so far, we are quite sure that you have heard about the platform and even stumbled upon a few sites that are built with it.&lt;br&gt;&lt;br&gt;
Since we have already talked about WordPress, please see what WordPress is and why it’s so popular.&lt;/p&gt;

&lt;p&gt;On the other hand, Blogger is somewhat different, but it still finds its spot on the Internet.&lt;br&gt;&lt;br&gt;
Since it is owned by Google, many bloggers decide to give their trust to Blogger.&lt;br&gt;&lt;br&gt;
The service is free, and all it takes is a free Google account (which you probably already have) to start your first blog.&lt;br&gt;&lt;br&gt;
But, as it’s obvious by now, Blogger and WordPress have their differences, and that’s why we decided to put together this article.&lt;/p&gt;

&lt;h2&gt;
  
  
  Simplicity
&lt;/h2&gt;

&lt;p&gt;Both WordPress and Blogger can be tagged as simple. But unless someone else hasn’t prepared WordPress for you, things get much more complicated than having a Blogger account.&lt;/p&gt;

&lt;h3&gt;
  
  
  WordPress
&lt;/h3&gt;

&lt;p&gt;Although it is beginner-friendly, it takes the time to learn WordPress.&lt;br&gt;&lt;br&gt;
Even before you can publish the first post, WordPress needs to be set up correctly.&lt;br&gt;&lt;br&gt;
So, someone who does not have experience with the platform might drift away in the wrong direction.&lt;br&gt;&lt;br&gt;
It is not that hard to install WordPress even for the first time, but the entire process isn’t as nearly easy as setting up a Blogger account that takes just a few clicks.&lt;/p&gt;

&lt;h3&gt;
  
  
  Blogger
&lt;/h3&gt;

&lt;p&gt;With Blogger, things can’t be simpler.&lt;br&gt;&lt;br&gt;
Unless you already have a Google account, you just need to register one.&lt;br&gt;&lt;br&gt;
Then log in to Blogger, choose a template, and you are ready to start running your blog and publishing posts.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fblogger-home.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fblogger-home.webp" alt="blogger" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Ownership and Control
&lt;/h2&gt;

&lt;p&gt;Before you start the blog, it would be a smart idea to rethink the importance of ownership – do you want to own your blog or let others have control over it?&lt;/p&gt;

&lt;h3&gt;
  
  
  WordPress
&lt;/h3&gt;

&lt;p&gt;WordPress is an open-source platform which means you, and anyone else can have it for free.&lt;br&gt;&lt;br&gt;
Once you download the installation files, it becomes your responsibility.&lt;br&gt;&lt;br&gt;
From the very moment you start hosting a site, you get the feeling that it is yours. And that is true.&lt;br&gt;&lt;br&gt;
Even though you will probably be paying a few bucks a month for hosting, the website is still 100% yours.&lt;br&gt;&lt;br&gt;
So, it is possible to do whatever you want with it – move it, expand it, change it, delete it, etc.&lt;/p&gt;

&lt;h3&gt;
  
  
  Blogger
&lt;/h3&gt;

&lt;p&gt;As a free service, Blogger is a property of Google.&lt;br&gt;&lt;br&gt;
That means that guys at the company get to do anything they want with the service.&lt;br&gt;&lt;br&gt;
Although it’s quite unlikely, it is still possible that the technology giant decides to shut down Blogger.&lt;br&gt;&lt;br&gt;
And in that case, no one would care much about your content.&lt;br&gt;&lt;br&gt;
How does that make you feel? Also, without any reason, Google may block you from accessing your own blog.&lt;/p&gt;

&lt;p&gt;While you are pretty much safe when we talk about Google, just knowing that you are not in control of something as personal as a blog may give you a headache.&lt;br&gt;&lt;br&gt;
We don’t know about you, but we like to know that we can do whatever we decide with our own website or blog.&lt;/p&gt;

&lt;p&gt;Also, if you don’t like how the server performs or you want to change a few things about accessibility, Google won’t let you do much.&lt;br&gt;&lt;br&gt;
The control is in their hands, and you can just hope that their decisions will affect you nicely.&lt;/p&gt;

&lt;h2&gt;
  
  
  Themes
&lt;/h2&gt;

&lt;p&gt;You may not be a web designer, but one of the most interesting parts of setting up a blog is choosing the way it is going to look like.&lt;br&gt;&lt;br&gt;
How can Blogger and WordPress help you when it comes to the appearance of your site?&lt;/p&gt;

&lt;p&gt;Whatever niche you are interested in, there are hundreds of free themes that will help you shape the blog.&lt;/p&gt;

&lt;h3&gt;
  
  
  WordPress
&lt;/h3&gt;

&lt;p&gt;Just looking at the official &lt;a href="https://wordpress.org/themes" rel="noopener noreferrer"&gt;WordPress themes&lt;/a&gt; repository that provides free products, you get thousands of themes to choose from.&lt;/p&gt;

&lt;p&gt;If you decide to spend a few extra bucks, there are also thousands more &lt;a href="https://sysa.ml/wordpress-premium-themes/" rel="noopener noreferrer"&gt;premium WordPress themes&lt;/a&gt; that look even better and have additional features that will push your blog in the new league.&lt;/p&gt;

&lt;p&gt;Whether you go for a free one or purchase a premium theme, you still have full control over it.&lt;br&gt;&lt;br&gt;
Most of the themes have a vast variety of customizing options that let you personalize the entire site.&lt;br&gt;&lt;br&gt;
And a great part is that you get to modify the source code as well.&lt;br&gt;&lt;br&gt;
So, if you know something about HTML and CSS, you can change each and every part of your site.&lt;br&gt;&lt;br&gt;
Even if you aren’t skilled enough, you can always hire a professional designer to make changes for you.&lt;/p&gt;

&lt;h3&gt;
  
  
  Blogger
&lt;/h3&gt;

&lt;p&gt;In comparison to the self-hosted version of WordPress, Blogger falls way behind.&lt;br&gt;&lt;br&gt;
While there is a good number of templates that you can apply to your free blog, the choice is quite limited compared to WordPress.&lt;br&gt;&lt;br&gt;
And once you select a template, you only get to play with the limited number of customization tools.&lt;br&gt;&lt;br&gt;
Don’t get me wrong; the customization options that come with Blogger are user-friendly and relatively useful, but they can’t relate to WordPress.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fblogger-template.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fblogger-template.webp" alt="blogger template" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you plan on creating a custom theme or modifying an existing template in details, you can forget about it – Blogger simply does not allow that.&lt;br&gt;&lt;br&gt;
Even though there are some unofficial Blogger templates, those are usually better left untouched as they’re most of the times the low quality.&lt;/p&gt;

&lt;h2&gt;
  
  
  Content Management
&lt;/h2&gt;

&lt;p&gt;Blogging is all about content management. Before you start writing your first post, make sure that the platform that you are about to use is well-built for blogging. Makes sense, right?&lt;/p&gt;

&lt;h3&gt;
  
  
  WordPress
&lt;/h3&gt;

&lt;p&gt;WordPress has it all. Once you get accustomed to its standard editors, all other blogging platforms just won’t be able to compare.&lt;br&gt;&lt;br&gt;
By using Visual and Text editors, it is a pleasure to add new content in WordPress at any time.&lt;br&gt;&lt;br&gt;
Formatting text is natural and it takes just a few articles until you can relax and get to know both editors in detail.&lt;br&gt;&lt;br&gt;
Managing media files is also intuitive, and it’s easy to add new images and videos.&lt;/p&gt;

&lt;p&gt;But since WordPress allows extensions, it is possible to improve both editor and media management systems to your likings. Many free and premium plugins will let you add stuff directly to the editor and allow you to reorganize Media Library if you wish so.&lt;/p&gt;

&lt;p&gt;WordPress makes blogging perfect both for casual authors and more experienced users who get to use HTML and CSS code directly from the Text Editor.&lt;/p&gt;

&lt;h3&gt;
  
  
  Blogger
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fblogger-editor.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fblogger-editor.webp" alt="blogger editor" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As its name already suggests, Blogger is made for blogging.&lt;br&gt;&lt;br&gt;
So it makes sense that content management is done right. And it really is.&lt;br&gt;&lt;br&gt;
Google made it easy to start your first post and to manage it without problems.&lt;/p&gt;

&lt;p&gt;All it takes to start writing is to log into your Google account and open Blogger.&lt;br&gt;&lt;br&gt;
If you have used other Google’s documents, the environment will look familiar.&lt;/p&gt;

&lt;p&gt;Blogger lets you enjoy writing.&lt;br&gt;&lt;br&gt;
A simple bar on top shows all the options that allow you to format text and add media.&lt;/p&gt;

&lt;h2&gt;
  
  
  Support
&lt;/h2&gt;

&lt;p&gt;Even experienced users need help from time to time.&lt;br&gt;&lt;br&gt;
No matter how much you know about WordPress or Blogger, we are convinced that you will need support at some point.&lt;/p&gt;

&lt;h3&gt;
  
  
  WordPress
&lt;/h3&gt;

&lt;p&gt;It takes time to master WordPress.&lt;br&gt;&lt;br&gt;
Although it is very user-friendly, WordPress is full of features and options that take the time to understand.&lt;br&gt;&lt;br&gt;
But when it comes to support, you can expect tons of online materials that will help you.&lt;br&gt;&lt;br&gt;
Whether you open official articles that explain how things work or browse one of the numerous websites devoted to the platform, you will probably find the answer to your questions in no time.&lt;/p&gt;

&lt;p&gt;There are official support forums that hold thousands of threads.&lt;br&gt;&lt;br&gt;
But when it comes to more complicated tasks, you will either have to solve problems on your own or hire professionals.&lt;br&gt;&lt;br&gt;
Unfortunately, no support comes with the self-hosted version of WordPress by default.&lt;/p&gt;

&lt;h3&gt;
  
  
  Blogger
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fblogger-support.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fblogger-support.webp" alt="blogger support" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As it comes from Google, one would expect a lot of documentation for Blogger.&lt;br&gt;&lt;br&gt;
But unfortunately, that’s not the case.&lt;br&gt;&lt;br&gt;
Although there are documentation files to be found, the support is quite limited.&lt;br&gt;&lt;br&gt;
You can even navigate your browser to support forums, but don’t expect much from it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Portability
&lt;/h2&gt;

&lt;p&gt;Although you have to decide where to start your blog, that does not mean that you always have to host in on the same server or even use the same platform.&lt;br&gt;&lt;br&gt;
Changing hosts is nothing unusual, and also many bloggers decide to switch from one service to another at some point.&lt;br&gt;&lt;br&gt;
So, how do WordPress and Blogger behave when it comes to exporting content to another place?&lt;/p&gt;

&lt;h3&gt;
  
  
  WordPress
&lt;/h3&gt;

&lt;p&gt;Switching hosts with WordPress isn’t a problem.&lt;br&gt;&lt;br&gt;
You will have to know your way around servers and WordPress, but moving the data isn’t much big of a deal.&lt;/p&gt;

&lt;p&gt;Also, WordPress allows you to quickly export the content of one site, and quickly import it into another one without any risk of losing the data.&lt;/p&gt;

&lt;h3&gt;
  
  
  Blogger
&lt;/h3&gt;

&lt;p&gt;Even though it is possible to switch from Blogger to another platform, Google has made the task very difficult.&lt;br&gt;&lt;br&gt;
The process of exporting the blog from their service is slow and complicated.&lt;br&gt;&lt;br&gt;
Also, while doing the transfer, you are risking SEO. Blogger does allow data export, but the truth is that Google stores your data for a long period of time even after you’re done with them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Comparison table
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;WordPress&lt;/th&gt;
&lt;th&gt;Blogger&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Simplicity&lt;/td&gt;
&lt;td&gt;Beginner-friendly with a learning curve&lt;/td&gt;
&lt;td&gt;Just a few clicks until your first post&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Themes&lt;/td&gt;
&lt;td&gt;Tens of thousands of themes&lt;/td&gt;
&lt;td&gt;Very limited options, can’t customize templates in detail&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Content Management&lt;/td&gt;
&lt;td&gt;Revisions, autosave, custom HTML…&lt;/td&gt;
&lt;td&gt;Much simpler document editor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Support&lt;/td&gt;
&lt;td&gt;Community, pay for support&lt;/td&gt;
&lt;td&gt;Support forum, basic documentation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Portability&lt;/td&gt;
&lt;td&gt;Quickly export and import content, switch hosts and platforms&lt;/td&gt;
&lt;td&gt;It’s hard to switch from Blogger to another platform&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ownership &amp;amp; Control&lt;/td&gt;
&lt;td&gt;You own the site with complete control&lt;/td&gt;
&lt;td&gt;Google owns it, limited control&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Deciding between Blogger and WordPress should be a no-brainer.&lt;br&gt;&lt;br&gt;
Although both platforms allow you to quickly start a personal blog, WordPress and Blogger are very different.&lt;/p&gt;

&lt;p&gt;While Blogger lets you start a free blog in just a few clicks of the mouse button, the platform is very limited.&lt;br&gt;&lt;br&gt;
It is just good enough for those who want a simple blogging experience without many options.&lt;br&gt;&lt;br&gt;
But anything beyond is practically impossible with Blogger.&lt;/p&gt;

&lt;p&gt;On the other hand, WordPress is almost limitless.&lt;br&gt;&lt;br&gt;
Not only that you can start a blog with it, but you can create any type of site that comes to your mind.&lt;br&gt;&lt;br&gt;
You may even transform your blog into an online store, extend it with thousands of plugins and themes, and it will always be under your control.&lt;/p&gt;

&lt;p&gt;If you are ready to learn WordPress, I strongly suggest choosing it as your starting platform.&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>blogger</category>
      <category>blogging</category>
      <category>website</category>
    </item>
    <item>
      <title>Blogging Mistakes To Avoid</title>
      <dc:creator>Shuaib Yusuf Shuaib</dc:creator>
      <pubDate>Wed, 26 May 2021 00:00:00 +0000</pubDate>
      <link>https://forem.com/sysa/blogging-mistakes-to-avoid-44l</link>
      <guid>https://forem.com/sysa/blogging-mistakes-to-avoid-44l</guid>
      <description>&lt;p&gt;At this point, You might know &lt;a href="https://sysa.ml/how-to-start-blog/" rel="noopener noreferrer"&gt;how to start a blog&lt;/a&gt;, but you have no idea how to make it productive and prosperous. I see a lot of people jump right in with little preparation and start churning away content with the little useful information that looks generic and boring to read.&lt;br&gt;&lt;br&gt;
Content like that would get seen by few people, and get your blog nowhere.&lt;/p&gt;

&lt;p&gt;Regardless of whether you are an upcoming entrepreneur and want to use a blog to promote your business or a passionate expert in a niche looking to build a personal brand there are some things that you just don’t do.&lt;br&gt;&lt;br&gt;
Here is a list of mistakes that will ruin your blog and, therefore, you should avoid them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Focusing on quantity over quality
&lt;/h2&gt;

&lt;p&gt;That is something that quite a lot of bloggers do.&lt;br&gt;&lt;br&gt;
Instead of focusing on providing quality content, they focus on quantity.&lt;br&gt;&lt;br&gt;
There are two reasons for making this huge blogging mistake.&lt;br&gt;&lt;br&gt;
The first has to do with people wanting their blogs to look fresh, always providing new stuff to readers.&lt;br&gt;&lt;br&gt;
The second reason has to do with SEO (Search Engine Optimization).&lt;br&gt;&lt;br&gt;
Bloggers tend to focus more on improving their ranks in search engines, without caring too much about the quality of their content.&lt;br&gt;&lt;br&gt;
That is exactly why the “quantity over quality” approach is a mistake.&lt;br&gt;&lt;br&gt;
You may improve your SEO ranking that way, but only for a short time, as your content will be underperforming.&lt;br&gt;&lt;br&gt;
An excellent blog post requires time for adequate research, not to mention for writing and editing.&lt;br&gt;&lt;br&gt;
Only when you make sure to provide quality blog content, will you be able actually to yield positive results.&lt;/p&gt;

&lt;h2&gt;
  
  
  Failing to work on improving your grammar
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fimprove-grammar.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fimprove-grammar.webp" alt="grammar" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you keep providing content filled with grammar mistakes, people will not think of you as a professional.&lt;br&gt;&lt;br&gt;
You will paint the picture of a lazy blogger who doesn’t want to make an effort to appeal to and connect with the readers.&lt;br&gt;&lt;br&gt;
Grammar mistakes will kill your credibility.&lt;br&gt;&lt;br&gt;
Thus, if you are having trouble constructing correct sentences, make sure that you work on improving your grammar.&lt;br&gt;&lt;br&gt;
You can use tools like Grammarly that would help you improve your writing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Failing to select and focus on the right audience
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Faudience.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Faudience.webp" alt="right audience" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you try and write content for everybody, your blog will end up being too generic.&lt;br&gt;&lt;br&gt;
That will not bring positive results.&lt;br&gt;&lt;br&gt;
You need to understand who your target audience is so that you can focus on tailoring your content to them.&lt;br&gt;&lt;br&gt;
That is exactly how you will create a community of people who want to listen to what you have to say.&lt;br&gt;&lt;br&gt;
Focusing on a specific demographic will enable you to provide valuable content, relevant, and useful to an audience.&lt;/p&gt;

&lt;h2&gt;
  
  
  Repeating others’ opinions
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fopinions.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fopinions.webp" alt="opinions" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One of the most common blogging mistakes is taking other people’s views and including them in your content as your own.&lt;br&gt;&lt;br&gt;
That isn’t plagiarism, but it borders on it.&lt;br&gt;&lt;br&gt;
If you want others to take you seriously, you cannot regurgitate others’ opinions – you need to have your own.&lt;br&gt;&lt;br&gt;
If you repackage existing information, why should people read your blog in the first place? They can find what they need someplace else.&lt;br&gt;&lt;br&gt;
If you share someone’s opinion, make a twist and show what you think about the matter in question.&lt;br&gt;&lt;br&gt;
You can even cite others in your blog posts, which will help you forge new connections.&lt;br&gt;&lt;br&gt;
Nonetheless, the key is to tackle every topic from your perspective.&lt;br&gt;&lt;br&gt;
That will make you unique and credible, and help you establish yourself as an expert in your niche.&lt;/p&gt;

&lt;h2&gt;
  
  
  Spending too little time sharing your content on social media
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fsocial-media.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fsocial-media.webp" alt="share on social media" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No matter the type of your blog, you run it to promote something, be it your business, your art, or anything else that made you want to create one in the first place.&lt;br&gt;&lt;br&gt;
To promote your blog and its content, you need to attract customers or followers.&lt;br&gt;&lt;br&gt;
What better way of doing that than to establish your presence on social media using social media tools? You need to share your content on the social media networks that preferred by the target audience.&lt;br&gt;&lt;br&gt;
That way you can extend your reach and achieve your goals.&lt;br&gt;&lt;br&gt;
You need to engage them and communicate with them so that you can build and grow your list of subscribers.&lt;br&gt;&lt;br&gt;
You need to be active on social media, but remember not to spam your followers.&lt;br&gt;&lt;br&gt;
That will only annoy them and push them away.&lt;/p&gt;

&lt;h2&gt;
  
  
  Focusing too much on self-promotion and sales pitches
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fself-promotion.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fself-promotion.webp" alt="self promotion" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you pitch every single blog posts and you indulge in too much self-promotion, you will have a tough time selling anything.&lt;br&gt;&lt;br&gt;
People will see you as another marketer who doesn’t care about them.&lt;br&gt;&lt;br&gt;
But instead, sees them only as sales opportunities.&lt;br&gt;&lt;br&gt;
Your blog should be so much more than a place for sales pitches.&lt;br&gt;&lt;br&gt;
It should provide insights, solutions, and useful advice that will improve the lives of your audience.&lt;br&gt;&lt;br&gt;
When you provide all that and give them value, you will instill trust, and sooner or later they will want to buy from you.&lt;br&gt;&lt;br&gt;
Thus, create content that will make a difference, and you can be sure that real sales opportunities will arise.&lt;/p&gt;

&lt;h2&gt;
  
  
  Taking too long to get your content out
&lt;/h2&gt;

&lt;p&gt;Procrastination is the killer of motivation and success.&lt;br&gt;&lt;br&gt;
Time is of the essence.&lt;br&gt;&lt;br&gt;
The sooner you publish your content, the sooner you can reap the rewards and generate leads.&lt;br&gt;&lt;br&gt;
One of the common blogging mistakes is trying to make your every blog post perfect.&lt;br&gt;&lt;br&gt;
You should never obsess over it because there will always be something more to do to improve your content.&lt;br&gt;&lt;br&gt;
The longer you take to get your content out, the more things you will want to change.&lt;br&gt;&lt;br&gt;
Sometimes, it’s better to hit “publish” and focus on your other tasks and new blog posts.&lt;br&gt;&lt;br&gt;
After all, you can always update your posts anytime you want.&lt;/p&gt;

&lt;h2&gt;
  
  
  Not taking the time to guest post on other blogs
&lt;/h2&gt;

&lt;p&gt;Your blog shouldn’t be all alone in the vast sea of blogs.&lt;br&gt;&lt;br&gt;
Guest blogging will get you to a whole new world of possibilities.&lt;br&gt;&lt;br&gt;
You can build a network of professional bloggers who can help you make a real difference.&lt;br&gt;&lt;br&gt;
Thus, take the time to connect with other bloggers in your niche.&lt;br&gt;&lt;br&gt;
Not only will you serve them to promote their content, but you will also enjoy free publicity from them, which can go a long way.&lt;br&gt;&lt;br&gt;
If you connect with influential bloggers, it will be a matter of time when you become one of the big guns.&lt;/p&gt;

&lt;h2&gt;
  
  
  Failing to interact with the community
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Finteract-community.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Finteract-community.webp" alt="interact with community" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You cannot ignore your readers and expect positive results.&lt;br&gt;&lt;br&gt;
If you keep neglecting them, they will take their trust and loyalty someplace else.&lt;br&gt;&lt;br&gt;
If you want to connect with the community you have created, you need to interact with your audience.&lt;br&gt;&lt;br&gt;
Answer their questions, respond to their comments, and take their feedback into account.&lt;br&gt;&lt;br&gt;
If the audience suggests that you should change something, you should consider it.&lt;br&gt;&lt;br&gt;
After all, it’s reader needs that you have to please.&lt;br&gt;&lt;br&gt;
You never know – seeing things from their perspective may open the door to significant opportunities for improvement.&lt;br&gt;&lt;br&gt;
Interacting with your community will help you forge strong relationships, and they will feel valued.&lt;/p&gt;

&lt;h2&gt;
  
  
  Failing to set up a coherent content schedule
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fschedule.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fschedule.webp" alt="content schedule" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the world of blogging, consistency is key.&lt;br&gt;&lt;br&gt;
If you don’t update your content on a regular basis, you can lose a lot of traffic and quality leads.&lt;br&gt;&lt;br&gt;
It can affect your SEO ranking, and your readers may even completely lose interest in your blog.&lt;br&gt;&lt;br&gt;
Not only will, setting up a consistent schedule help you develop a habit, but your readers will also know when to expect new content.&lt;br&gt;&lt;br&gt;
It will support you in establishing trust and credibility, as you will show that you are a professional who cares about them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;If you want to make your blog successful, make sure that you avoid all these blogging mistakes.&lt;br&gt;&lt;br&gt;
Avoiding the common pitfalls of blogging will help you focus on what matters.&lt;br&gt;&lt;br&gt;
You can step up your game plan and make sure that your every effort pays off in the long run.&lt;br&gt;&lt;br&gt;
You can also check out some examples of &lt;a href="https://dev.to/successful-blogs/"&gt;successful blogs&lt;/a&gt;.&lt;br&gt;&lt;br&gt;
Learn how some bloggers made their content attractive and their blogs successful.&lt;/p&gt;

</description>
      <category>blogging</category>
      <category>beginners</category>
      <category>guide</category>
      <category>post</category>
    </item>
    <item>
      <title>WordPress Maintenance Mode</title>
      <dc:creator>Shuaib Yusuf Shuaib</dc:creator>
      <pubDate>Tue, 25 May 2021 09:39:53 +0000</pubDate>
      <link>https://forem.com/sysa/wordpress-maintenance-mode-19c8</link>
      <guid>https://forem.com/sysa/wordpress-maintenance-mode-19c8</guid>
      <description>&lt;h2&gt;
  
  
  What is WordPress Maintenance Mode?
&lt;/h2&gt;

&lt;p&gt;Maintenance mode makes your website temporarily unavailable to visitors.&lt;br&gt;&lt;br&gt;
It replaces your website with a page that displays a message to the visitor that the site is under maintenance or temporarily unavailable.          &lt;/p&gt;

&lt;p&gt;Maintenance mode is primarily used to run updates, make changes to design, or fix a security issue, move WordPress site to root, but is not limited to this.    &lt;/p&gt;

&lt;p&gt;There are different reasons why you might want to put your site into maintenance mode.&lt;br&gt;&lt;br&gt;
For example, you may have just &lt;a href="https://sysa.ml/buy-domain-name/" rel="noopener noreferrer"&gt;bought a domain&lt;/a&gt; and &lt;a href="https://sysa.ml/best-wordpress-hosting/" rel="noopener noreferrer"&gt;hosting plan&lt;/a&gt;.&lt;br&gt;&lt;br&gt;
While you build your website, you would like for visitors not to view an incomplete site.&lt;br&gt;&lt;br&gt;
Such situations make maintenance mode a nifty little feature.          &lt;/p&gt;
&lt;h2&gt;
  
  
  When To Use WordPress Maintenance Mode?
&lt;/h2&gt;

&lt;p&gt;As much as I’d like zero downtime for my sites, there are times when it’s unavoidable and I need to enter into maintenance mode.&lt;br&gt;&lt;br&gt;
But I have also witnessed WordPress users choosing maintenance mode and experiencing downtime when it could be avoided.        &lt;/p&gt;

&lt;p&gt;So here, I address when it’s a good idea to put WordPress site in maintenance mode:         &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Bug:&lt;br&gt;&lt;br&gt;
You’ve found a bug on your site and you need to fix it, especially if it’s affecting your site majorly.          &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Hacked:&lt;br&gt;&lt;br&gt;
Your WordPress site is hacked and you need to fix it.&lt;br&gt;&lt;br&gt;
While you restore your backup, you can activate maintenance mode so that your visitors will be blocked from accessing your site.           &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Under Construction:&lt;br&gt;&lt;br&gt;
If you’re just starting out and building your website, you should put it in maintenance mode that displays ‘Coming Soon’ or ‘Under Construction’ to the visitor.    &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Updates:&lt;br&gt;&lt;br&gt;
If you have missed updating a plugin/theme that has a vulnerability and you need to update your site, you should put it in maintenance mode.&lt;br&gt;&lt;br&gt;
This way, your visitors will not be put at risk while you install the new version with the security patch.         &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  How to Put Your WordPress Site in Maintenance Mode
&lt;/h2&gt;

&lt;p&gt;There are various ways to implement maintenance mode on your website including a default setting in WordPress.         &lt;/p&gt;

&lt;p&gt;If you like doing it the easy way, you can install one of the many plugins available in the WordPress repository.&lt;br&gt;&lt;br&gt;
But if you prefer going the technical way, then you can proceed with the manual method.          &lt;/p&gt;
&lt;h3&gt;
  
  
  With plugins
&lt;/h3&gt;

&lt;p&gt;There are several plugins available to put your site into maintenance mode and they are very easy to use.&lt;br&gt;&lt;br&gt;
However, with all plugins, they vary in features, pricing, and reliability.&lt;br&gt;&lt;br&gt;
I’ve listed five plugins I think do a great job at setting up maintenance mode:         &lt;/p&gt;
&lt;h4&gt;
  
  
  Coming Soon
&lt;/h4&gt;

&lt;p&gt;This plugin is by far the most popular one among maintenance mode plugins.&lt;br&gt;&lt;br&gt;
It enables you to create a simple page that mentions ‘Coming Soon’, ‘Under Construction’, or ‘Maintenance Mode’.&lt;br&gt;&lt;br&gt;
It has over 1 million active installations and is available in 15 languages.        &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pricing&lt;/strong&gt;:&lt;br&gt;&lt;br&gt;
There’s a free version.&lt;br&gt;&lt;br&gt;
The pro version starts at $29 per year.        &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Features&lt;/strong&gt;:       &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Compatible with any WordPress theme.
&lt;/li&gt;
&lt;li&gt;Customize the look and feel of the page
&lt;/li&gt;
&lt;li&gt;Supports Multisite
&lt;/li&gt;
&lt;li&gt;Easily add Custom CSS and HTML
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
  
  
  Maintenance
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fmaintenance-wp-plugin.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fmaintenance-wp-plugin.webp" alt="maintenance" width="800" height="400"&gt;&lt;/a&gt;         &lt;/p&gt;

&lt;p&gt;This easy-to-use plugin is loved by over 400,000 active users.&lt;br&gt;&lt;br&gt;
As a site admin, you can close your website and enable a temporary page to be displayed.&lt;br&gt;&lt;br&gt;
Maintenance partnered with Weglot to offer the plugin in over 100 languages.&lt;br&gt;&lt;br&gt;
Plus, you get access to Security Ninja to take care of your site’s security.          &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pricing&lt;/strong&gt;:&lt;br&gt;&lt;br&gt;
Free.      &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Features&lt;/strong&gt;:       &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Retina-ready layouts (Both in HTML and CSS).
&lt;/li&gt;
&lt;li&gt;Upload you own logo.
&lt;/li&gt;
&lt;li&gt;Customize content, fonts, icons, backgrounds, and color.
&lt;/li&gt;
&lt;li&gt;Supports Google Analytics.
&lt;/li&gt;
&lt;li&gt;Supports all popular caching plugins.
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
  
  
  CMP
&lt;/h4&gt;

&lt;p&gt;The CMP plugin stands apart from the rest of the plugins because it offers premium features for free.&lt;br&gt;&lt;br&gt;
It’s easy to set up a customized maintenance mode page and even add videos and images to it.        &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pricing&lt;/strong&gt;:&lt;br&gt;&lt;br&gt;
Free.       &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Features&lt;/strong&gt;:        &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1-click activation of the maintenance page.
&lt;/li&gt;
&lt;li&gt;Readymade predefined layouts available.
&lt;/li&gt;
&lt;li&gt;Customizable logo, background, text, graphics, and content.
&lt;/li&gt;
&lt;li&gt;Add YouTube videos or Unsplash images.
&lt;/li&gt;
&lt;li&gt;Add subscriber form and social media icons.
&lt;/li&gt;
&lt;li&gt;Works with all themes.
&lt;/li&gt;
&lt;li&gt;Supports Google Analytics.
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
  
  
  Minimal Coming Soon
&lt;/h4&gt;

&lt;p&gt;This plugin is a simple plugin that works with any WordPress theme or plugin.&lt;br&gt;&lt;br&gt;
It’s easy to integrate it with the MailChimp API so you can collect emails from visitors.&lt;br&gt;&lt;br&gt;
It’s packed with features and is used by over 80,000 WordPress sites.           &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pricing&lt;/strong&gt;:&lt;br&gt;&lt;br&gt;
There’s a free version.&lt;br&gt;&lt;br&gt;
The premium starts at $39.        &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Features&lt;/strong&gt;:         &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Collect leads and subscribers through the maintenance page.
&lt;/li&gt;
&lt;li&gt;Compatible with all WordPress themes and plugins.
&lt;/li&gt;
&lt;li&gt;Completely customizable.
&lt;/li&gt;
&lt;li&gt;Drag and drop to rearrange page elements.
&lt;/li&gt;
&lt;li&gt;Supports Google Analytics.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now, we know there are instances where a plugin may not be your first choice.&lt;br&gt;&lt;br&gt;
In this case, you can insert a snippet of code into your WordPress files.          &lt;/p&gt;

&lt;p&gt;We show you how to do it the manual way next.          &lt;/p&gt;
&lt;h3&gt;
  
  
  Manually
&lt;/h3&gt;

&lt;p&gt;Enabling maintenance mode isn’t too technical and anyone should be able to handle the process.&lt;br&gt;&lt;br&gt;
However, anytime you make manual changes to the backend of your WordPress site, there’s a risk of breaking your site.&lt;br&gt;&lt;br&gt;
Any small error can cause major problems.          &lt;/p&gt;

&lt;p&gt;I recommend taking a complete backup of your site.&lt;br&gt;&lt;br&gt;
Once you have a backup in place, you can move on to the steps of enabling maintenance mode on your own.          &lt;/p&gt;
&lt;h4&gt;
  
  
  Enable
&lt;/h4&gt;

&lt;p&gt;There are four ways you can enable maintenance mode on your WordPress site:                 &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Using .maintenance file:
&lt;strong&gt;Step 1&lt;/strong&gt;:
Log into your hosting account.
Access &lt;code&gt;cPanel &amp;gt; File Manager &amp;gt; public_html&lt;/code&gt;.
&lt;strong&gt;Step 2&lt;/strong&gt;:
Click on New File and name it &lt;code&gt;.maintenance&lt;/code&gt; (ensure you add the period (.) before the word).
Click on Create New File.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 3&lt;/strong&gt;:&lt;br&gt;&lt;br&gt;
Select the .maintenance file, right-click and select Edit.&lt;br&gt;&lt;br&gt;
In case you cannot see the .maintenance file, click on Settings and select Show hidden files.          &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4&lt;/strong&gt;:&lt;br&gt;&lt;br&gt;
Enter the following snippet of code in the file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt;

 &lt;span class="nv"&gt;$upgrading&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;time&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="cp"&gt;?&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now check your site, it should display the following prompt:        &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fpromt.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsysa.ml%2Fassets%2Fimages%2Fpromt.jpg" alt="prompt" width="800" height="400"&gt;&lt;/a&gt;          &lt;/p&gt;

&lt;p&gt;This code won’t allow anyone to access the front end of the site till you remove the .maintenance file.          &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Using the function.php file of your theme
You can add customized messages to your maintenance mode page using the functions.php file.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt;:&lt;br&gt;&lt;br&gt;
Log into your hosting account.&lt;br&gt;&lt;br&gt;
Access &lt;code&gt;cPanel &amp;gt; File Manager &amp;gt; public_html&lt;/code&gt;.         &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt;:&lt;br&gt;&lt;br&gt;
Go to &lt;code&gt;wp-content &amp;gt; Themes&lt;/code&gt; and select your active theme’s folder.        &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3&lt;/strong&gt;:&lt;br&gt;&lt;br&gt;
Right-click on the functions.php file and select Edit.         &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4&lt;/strong&gt;:&lt;br&gt;&lt;br&gt;
Add this snippet of code to the end of the file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Activate WordPress Maintenance Mode&lt;/span&gt;

&lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;wp_maintenance_mode&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nf"&gt;current_user_can&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;‘&lt;/span&gt;&lt;span class="n"&gt;edit_themes&lt;/span&gt;&lt;span class="err"&gt;’&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nf"&gt;is_user_logged_in&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

&lt;span class="nf"&gt;wp_die&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;‘&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;h1&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nc"&gt;Under&lt;/span&gt; &lt;span class="nc"&gt;Maintenance&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;h1&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;br&lt;/span&gt; &lt;span class="o"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="nc"&gt;Website&lt;/span&gt; &lt;span class="n"&gt;under&lt;/span&gt; &lt;span class="n"&gt;planned&lt;/span&gt; &lt;span class="n"&gt;maintenance&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="nc"&gt;Please&lt;/span&gt; &lt;span class="n"&gt;check&lt;/span&gt; &lt;span class="n"&gt;back&lt;/span&gt; &lt;span class="n"&gt;later&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="err"&gt;’&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nf"&gt;add_action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;‘&lt;/span&gt;&lt;span class="n"&gt;get_header&lt;/span&gt;&lt;span class="err"&gt;’&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="err"&gt;‘&lt;/span&gt;&lt;span class="n"&gt;wp_maintenance_mode&lt;/span&gt;&lt;span class="err"&gt;’&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 5&lt;/strong&gt;:&lt;br&gt;&lt;br&gt;
Save Changes and close the file.&lt;br&gt;&lt;br&gt;
You can visit your site in Incognito mode and you’ll see the following prompt:         &lt;/p&gt;

&lt;h4&gt;
  
  
  Disable
&lt;/h4&gt;

&lt;p&gt;To disable maintenance mode, you simply need to delete the .maintenance file.&lt;br&gt;&lt;br&gt;
If you want to activate maintenance mode on a regular basis, you can keep the file and rename it to .maintenance-disabled.&lt;br&gt;&lt;br&gt;
When you want to activate maintenance mode, simply rename this file back to .maintenance.          &lt;/p&gt;

&lt;p&gt;If you used the functions.php method, to deactivate maintenance mode, simply remove the code snippet from the functions.php file.            &lt;/p&gt;

&lt;h3&gt;
  
  
  Default Maintenance Mode
&lt;/h3&gt;

&lt;p&gt;WordPress has a default maintenance mode enabled on every WordPress site.&lt;br&gt;&lt;br&gt;
When you run updates, WordPress automatically makes your site temporarily unavailable until the update is complete.            &lt;/p&gt;

&lt;p&gt;It enables and disables automatically when you run an update.&lt;/p&gt;

&lt;p&gt;And that’s the different ways you can implement maintenance mode on your WordPress site.&lt;br&gt;&lt;br&gt;
Now that you know the methods, it’s important to also understand if it’s the right option to use on your site.&lt;br&gt;&lt;br&gt;
Next, we discuss disadvantages that come along with maintenance mode and the common problems that users incur.        &lt;/p&gt;

&lt;h3&gt;
  
  
  Disadvantages Of Maintenance Mode
&lt;/h3&gt;

&lt;p&gt;Maintenance mode is great because you can make changes without visitors privately.&lt;br&gt;&lt;br&gt;
But there are a few disadvantages:         &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;When you use maintenance mode, your site will experience downtime.&lt;br&gt;&lt;br&gt;
This means you lose visitors and revenue for the duration you keep your site in maintenance mode.        &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Sometimes, you may not anticipate how long changes are going to take and this can result in prolonged downtime.          &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Sometimes, maintenance mode deactivates SSL.&lt;br&gt;&lt;br&gt;
This can jeopardize the safety of your website.          &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Added to this, there are a couple of problems that arise frequently when you use maintenance mode.        &lt;/p&gt;

&lt;h3&gt;
  
  
  Common Problems That Arise When Using Maintenance Mode
&lt;/h3&gt;

&lt;p&gt;WordPress support forums and other popular forums have a long list of problems under ‘maintenance mode’.&lt;br&gt;&lt;br&gt;
This is not to say maintenance mode is not a good option.&lt;br&gt;&lt;br&gt;
We don’t discourage you from using it.&lt;br&gt;&lt;br&gt;
But we want you to be fully aware of problems that ensue so that you can be fully prepared for them.          &lt;/p&gt;

&lt;p&gt;I’ve listed common problems faced while using maintenance mode along with their solutions:          &lt;/p&gt;

&lt;h4&gt;
  
  
  Unable to deactivate maintenance mode
&lt;/h4&gt;

&lt;p&gt;Many users face this issue where they are unable to bring their sites out of maintenance mode both when using a plugin or the manual method.&lt;br&gt;&lt;br&gt;
The solution to this is quite simple.&lt;br&gt;&lt;br&gt;
This is usually a caching issue which means older content is being served.&lt;br&gt;&lt;br&gt;
You simply need to clear your cache.&lt;br&gt;&lt;br&gt;
Refresh your page and try again.          &lt;/p&gt;

&lt;p&gt;Alternatively, use Incognito mode to check if your website is being displayed correctly to visitors.             &lt;/p&gt;

&lt;p&gt;If the problem persists, you need to contact the plugin developer or seek help in WordPress forums.            &lt;/p&gt;

&lt;p&gt;Read my comprehensive guide on solving &lt;a href="https://sysa.ml/wordpress-stuck-in-maintenance-mode/" rel="noopener noreferrer"&gt;WordPress Stuck in Maintenance Mode&lt;/a&gt; issues.           &lt;/p&gt;

&lt;h4&gt;
  
  
  Maintenance Mode page is different than what you set up
&lt;/h4&gt;

&lt;p&gt;Users also complain that they have set up a maintenance page but a different one is being displayed.&lt;br&gt;&lt;br&gt;
This could be an issue that is specific to the plugin being used.&lt;br&gt;&lt;br&gt;
You can contact the developer to get guidance on how to fix it.         &lt;/p&gt;

&lt;h4&gt;
  
  
  Google still showing maintenance mode in SERPs
&lt;/h4&gt;

&lt;p&gt;Another very common issue is that after maintenance mode is deactivated, it still shows up on Google search results.             &lt;/p&gt;

&lt;p&gt;Google crawls and indexes your website’s pages regularly.&lt;br&gt;&lt;br&gt;
You would just need to wait for Google to crawl your website again.           &lt;/p&gt;

&lt;p&gt;If you’re in a hurry, you can request for reindexing using Google Webmasters.          &lt;/p&gt;

&lt;h4&gt;
  
  
  Unable to access wp-admin page in maintenance mode
&lt;/h4&gt;

&lt;p&gt;There have been instances where users have been locked out of their website after activating maintenance mode.            &lt;/p&gt;

&lt;p&gt;They aren’t able to access the frontend of their site nor the wp-admin login page.         &lt;/p&gt;

&lt;p&gt;The solution to this issue is to use wp-login page.&lt;br&gt;&lt;br&gt;
Some plugins create a new page called wp-login instead of wp-admin. For example, to access your site you would need to use &lt;a href="https://yourdomain.com/wp-login" rel="noopener noreferrer"&gt;https://yourdomain.com/wp-login&lt;/a&gt;.         &lt;/p&gt;

&lt;p&gt;If this doesn’t work, you’ll need to manually disable the plugin.&lt;br&gt;&lt;br&gt;
Go to your hosting &lt;code&gt;account -&amp;gt; cPanel -&amp;gt; File Manager &amp;gt; public_html&lt;/code&gt; folder.         &lt;/p&gt;

&lt;p&gt;Look for a folder named wp-content and inside access the plugins folder.&lt;br&gt;&lt;br&gt;
Find the maintenance mode plugin folder.&lt;br&gt;&lt;br&gt;
Rename this folder to nameofplugin_disable.           &lt;/p&gt;

&lt;p&gt;Now go back to yourdomain.com/wp-admin.&lt;br&gt;&lt;br&gt;
You should be able to log back in.          &lt;/p&gt;

&lt;p&gt;For all other miscellaneous problems related to maintenance mode, it’s best to contact the developer directly or ask for help on the WordPress support forum.&lt;br&gt;&lt;br&gt;
WordPress has a very active community that’s ever ready to help a fellow WordPress user.          &lt;/p&gt;

&lt;p&gt;That brings us to the end of our guide to WordPress maintenance mode.&lt;br&gt;&lt;br&gt;
We’re confident that you are now equipped to use maintenance mode with ease on your site.&lt;br&gt;&lt;br&gt;
Before we leave you, we want to give you one more tip on an alternative to maintenance mode that you can use in certain cases.          &lt;/p&gt;

&lt;h3&gt;
  
  
  An Alternative To Maintenance Mode: WordPress Staging
&lt;/h3&gt;

&lt;p&gt;Maintenance mode is great because you can hide your site while you make changes.&lt;br&gt;&lt;br&gt;
But there are some circumstances where you don’t need maintenance mode at all.&lt;br&gt;&lt;br&gt;
You can make your changes without experiencing any downtime.&lt;br&gt;&lt;br&gt;
And this is made possible through staging environments.         &lt;/p&gt;

&lt;p&gt;Here’s when I recommend you use a staging site instead of maintenance mode:          &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;When you want to change your WordPress theme and test out different themes.&lt;br&gt;&lt;br&gt;
You’ll need to make sure the theme looks and functions the way you want to before you make it live.&lt;br&gt;&lt;br&gt;
Using maintenance mode for this can mean extended downtime that can stretch into days or weeks.           &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;When you want to install a new plugin but you want to test its compatibility and functionality.         &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For any unscheduled changes such as finding content errors on your site.        &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;When you want to test and run updates that are available on your site.         &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;When there’s an error on your site and you need to troubleshoot.&lt;br&gt;&lt;br&gt;
You can create a staging site to troubleshoot the issue there.&lt;br&gt;&lt;br&gt;
In the meantime, you can restore your backup to get your site back to normal for your visitors.           &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Under all these circumstances and more, a staging site comes in handy.&lt;br&gt;&lt;br&gt;
It acts as a WordPress testing environment that enables you to experiment with your site and test out changes.&lt;br&gt;&lt;br&gt;
Only once you’re confident that the changes are working for you, then you can make the changes on your live site.          &lt;/p&gt;

&lt;p&gt;The best part is you don’t have to replicate your work all over again.&lt;br&gt;&lt;br&gt;
You can use a feature called Merge to Live.&lt;br&gt;&lt;br&gt;
This feature is available with all popular plugins like BlogVault and even with some hosting providers.&lt;br&gt;&lt;br&gt;
It pushes the changes you made on the staging site to your live site.          &lt;/p&gt;

&lt;h3&gt;
  
  
  Final Thoughts
&lt;/h3&gt;

&lt;p&gt;No matter how well we run our websites, there are times when we need to use maintenance mode.&lt;br&gt;&lt;br&gt;
It’s something that’s unavoidable and it’s best to be prepared.            &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Remember&lt;/strong&gt;:&lt;br&gt;&lt;br&gt;
Always take a backup of your site before installing a plugin, running updates, or making major changes to your site.&lt;br&gt;&lt;br&gt;
Use a staging site when you don’t want downtime.&lt;br&gt;&lt;br&gt;
Keep maintenance mode reserved for unavoidable circumstances.         &lt;/p&gt;

&lt;p&gt;I hope this guide answers all your pressing queries and doubts about maintenance mode.&lt;br&gt;&lt;br&gt;
You can bookmark this guide and come back to it when you need to.&lt;br&gt;&lt;br&gt;
And make sure you follow me on Twitter &lt;a href="https://twitter.com/shoaiybsysa" rel="noopener noreferrer"&gt;@shoaiybsysa&lt;/a&gt; and sign up to my &lt;a href="https://sysa.ml/#newsletter" rel="noopener noreferrer"&gt;newsletter&lt;/a&gt;.        &lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
