<?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: Mainul Hasan</title>
    <description>The latest articles on Forem by Mainul Hasan (@mainulspace).</description>
    <link>https://forem.com/mainulspace</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%2F1109530%2Ffc878a1c-2fa0-47c6-b869-395aeb113e2d.png</url>
      <title>Forem: Mainul Hasan</title>
      <link>https://forem.com/mainulspace</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/mainulspace"/>
    <language>en</language>
    <item>
      <title>Managing WordPress Object Cache with Memcached: Per-Site Flush, Monitoring &amp; Optimization</title>
      <dc:creator>Mainul Hasan</dc:creator>
      <pubDate>Fri, 08 Aug 2025 04:48:05 +0000</pubDate>
      <link>https://forem.com/mainulspace/managing-wordpress-object-cache-with-memcached-per-site-flush-monitoring-optimization-l9j</link>
      <guid>https://forem.com/mainulspace/managing-wordpress-object-cache-with-memcached-per-site-flush-monitoring-optimization-l9j</guid>
      <description>&lt;p&gt;We run multiple WordPress sites on a &lt;a href="https://go.webdevstory.com/namecheap-vps" rel="noopener noreferrer"&gt;single VPS&lt;/a&gt;, all using Memcached for object caching. The problem? Flushing the object cache for one site risks wiping the cache for all others sharing the same memory pool.&lt;/p&gt;

&lt;p&gt;In this post, I’ll walk you through:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Why object caching is critical for WordPress performance&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How Memcached behaves in &lt;a href="https://www.nordicdigisolutions.com/vps-wordpress-hosting-services/" rel="noopener noreferrer"&gt;shared VPS environments&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;And how we built a custom plugin to safely flush cache per site using &lt;code&gt;WP_CACHE_KEY_SALT&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you’re managing multiple sites, I hope this guide helps you optimize caching with clarity and confidence.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Why Object Caching Matters in WordPress
&lt;/h2&gt;

&lt;p&gt;Object caching temporarily stores the results of complex database queries, WordPress options, or transients in memory so they can be quickly reused. This avoids hitting the &lt;a href="https://www.webdevstory.com/database-performance-optimization/" rel="noopener noreferrer"&gt;MySQL database&lt;/a&gt; unnecessarily and significantly reduces load time.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why it matters:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Faster page loads (especially for dynamic or logged-in requests)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Reduced database stress under traffic spikes&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Essential for scaling WordPress on high-traffic sites&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Memcached vs Redis for WordPress
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Feature&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Memcached&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Redis&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Data structure&lt;/td&gt;
&lt;td&gt;Key-value only&lt;/td&gt;
&lt;td&gt;Supports advanced types (lists, sets, etc.)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Persistence&lt;/td&gt;
&lt;td&gt;In-memory only (no persistence)&lt;/td&gt;
&lt;td&gt;Optional persistence to disk&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Use case&lt;/td&gt;
&lt;td&gt;Lightweight, fast for object caching&lt;/td&gt;
&lt;td&gt;More flexible, often used in Laravel or apps needing queues&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;WordPress fit&lt;/td&gt;
&lt;td&gt;Great for object cache (transients, queries)&lt;/td&gt;
&lt;td&gt;Also great; some plugins prefer Redis&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;In many cases, Memcached is faster and simpler to configure, and it’s widely supported by &lt;a href="https://go.webdevstory.com/litespeed" rel="noopener noreferrer"&gt;LiteSpeed&lt;/a&gt; and cPanel providers.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. How Memcached Works in Shared VPS Environments
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Default Port 11211 and Shared Instances
&lt;/h3&gt;

&lt;p&gt;Memcached by default runs on port 11211. Unless explicitly isolated per app, all websites on the server connect to the same instance. That means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;A flush command (&lt;code&gt;flush_all&lt;/code&gt;) affects all keys from all sites.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;There’s no native separation of site-specific data.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why You Need to Namespace Your Keys
&lt;/h3&gt;

&lt;p&gt;WordPress supports namespacing via:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;
  define&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'WP_CACHE_KEY_SALT'&lt;/span&gt;, &lt;span class="s1"&gt;'yoursiteprefix_'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is essential. It prepends a unique string to every cache key generated by WordPress, allowing plugins or scripts (like ours) to selectively flush only your site’s cache.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Without it, you can’t safely delete keys without affecting others.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Memory Limits: Default vs Optimized
&lt;/h3&gt;

&lt;p&gt;Default Memcached allocation on many cPanel servers is &lt;strong&gt;64 MB&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You can monitor it using tools like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;getStats()&lt;/code&gt; via script&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;WordPress Object Cache Pro&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Custom scripts with &lt;code&gt;fsockopen&lt;/code&gt; or Telnet&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Example output:
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;
    &lt;span class="na"&gt;Memory Used  &lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;37 MB&lt;/span&gt;
    &lt;span class="na"&gt;Memory Limit &lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;64 MB&lt;/span&gt;
    &lt;span class="na"&gt;Evictions    &lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;1.4M (means old data is being overwritten)&lt;/span&gt;
    &lt;span class="na"&gt;Hit Rate     &lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;94%&lt;/span&gt;

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

&lt;/div&gt;



&lt;h3&gt;
  
  
  What Happens When Multiple Sites Share the Same Instance
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Cache collisions (without &lt;code&gt;WP_CACHE_KEY_SALT&lt;/code&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Overwrites and evictions&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Full flushes affect every site&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Monitoring gets confusing unless you prefix keys and track them separately&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s why we decided to build our own flusher plugin tailored to a multi-site VPS scenario.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Building a Custom Cache Flusher Plugin
&lt;/h2&gt;

&lt;h3&gt;
  
  
  💡 The Problem
&lt;/h3&gt;

&lt;p&gt;WordPress provides a built-in function:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wp_cache_flush&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But there’s a catch:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;It only works via WP-CLI.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If used programmatically, it often gets blocked in &lt;code&gt;object-cache.php&lt;/code&gt; or flushes everything — not safe for shared environments.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🔨 Plugin Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Adds a “Flush Object Cache” option under &lt;strong&gt;Tools → Flush Object Cache&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Detects cache backend: Memcached, Redis, APC, or unknown&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Checks for &lt;code&gt;WP_CACHE_KEY_SALT&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If defined → flushes only matching keys&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;🧪 Technical Highlights&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Uses &lt;code&gt;Memcached::getAllKeys()&lt;/code&gt; when available&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Uses &lt;code&gt;delete()&lt;/code&gt; for each key that starts with the defined salt&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Handles extensions that don’t support key enumeration (e.g., fallback message)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Displays real-time status messages like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Flushed 318 keys using &lt;code&gt;WP_CACHE_KEY_SALT&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;⚠️ Salt not defined and no confirmation to flush all cache&lt;/li&gt;
&lt;li&gt;❌ Backend not detected&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  4. Monitoring Memcached Usage
&lt;/h2&gt;

&lt;p&gt;Once &lt;a href="https://developer.wordpress.org/reference/classes/wp_object_cache/" rel="noopener noreferrer"&gt;object caching&lt;/a&gt; is active, blindly assuming it’s helping is a mistake. You need visibility into how your Memcached instance is performing, especially if it’s shared among multiple sites.&lt;/p&gt;

&lt;p&gt;We built a lightweight PHP script that outputs useful Memcached stats:&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;/**
   * Memcached Monitor – WordPress-safe PHP script
   * Shows or logs Memcached usage: items, memory, hits, evictions
   */&lt;/span&gt;

  &lt;span class="nb"&gt;header&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Content-Type: text/plain'&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;socf_get_memcached_stats&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nv"&gt;$sock&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="nb"&gt;fsockopen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'127.0.0.1'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;11211&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;$sock&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="s2"&gt;"❌ Could not connect to Memcached at 127.0.0.1:11211."&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="nb"&gt;fwrite&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$sock&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"stats&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$stats&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[];&lt;/span&gt;

    &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nb"&gt;feof&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$sock&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nv"&gt;$line&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;fgets&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$sock&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;128&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;strpos&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$line&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'STAT'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nv"&gt;$parts&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;explode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;' '&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;trim&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$line&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
            &lt;span class="nv"&gt;$stats&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;$parts&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="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$parts&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="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;elseif&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;trim&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$line&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="s1"&gt;'END'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;break&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="nb"&gt;fclose&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$sock&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="c1"&gt;// Output&lt;/span&gt;
    &lt;span class="nv"&gt;$output&lt;/span&gt;  &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"✅ Memcached Status:&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;$output&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"-------------------&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;$output&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"Items Stored       : "&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="nb"&gt;number_format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$stats&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'curr_items'&lt;/span&gt;&lt;span class="p"&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;\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;$output&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"Memory Used        : "&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="nb"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$stats&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'bytes'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;1024&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;1024&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="mf"&gt;.&lt;/span&gt; &lt;span class="s2"&gt;" MB&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;$output&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"Memory Limit       : "&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="nb"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$stats&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'limit_maxbytes'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;1024&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;1024&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="mf"&gt;.&lt;/span&gt; &lt;span class="s2"&gt;" MB&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;$output&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"Cache Hits         : "&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="nb"&gt;number_format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$stats&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'get_hits'&lt;/span&gt;&lt;span class="p"&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;\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;$output&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"Cache Misses       : "&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="nb"&gt;number_format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$stats&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'get_misses'&lt;/span&gt;&lt;span class="p"&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;\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;$output&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"Evictions          : "&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="nb"&gt;number_format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$stats&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'evictions'&lt;/span&gt;&lt;span class="p"&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;\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;$output&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"Hit Rate           : "&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$stats&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'get_hits'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nv"&gt;$stats&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'get_misses'&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
        &lt;span class="o"&gt;?&lt;/span&gt; &lt;span class="nb"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$stats&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'get_hits'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$stats&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'get_hits'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nv"&gt;$stats&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'get_misses'&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;100&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="o"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
    &lt;span class="p"&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;\n&lt;/span&gt;&lt;span class="s2"&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;$output&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Show or log depending on context&lt;/span&gt;
&lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="nf"&gt;socf_get_memcached_stats&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can run this script from your browser or cron to monitor performance.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;
  &lt;span class="na"&gt;✅ Memcached Status&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="s"&gt;----------------------&lt;/span&gt;
  &lt;span class="na"&gt;Items Stored  &lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;107,705&lt;/span&gt;
  &lt;span class="na"&gt;Memory Used   &lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;37.36 MB&lt;/span&gt;
  &lt;span class="na"&gt;Memory Limit  &lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;64 MB&lt;/span&gt;
  &lt;span class="na"&gt;Cache Hits    &lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;631,841,892&lt;/span&gt;
  &lt;span class="na"&gt;Cache Misses  &lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;35,675,800&lt;/span&gt;
  &lt;span class="na"&gt;Evictions     &lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;1,476,500&lt;/span&gt;
  &lt;span class="na"&gt;Hit Rate      &lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;94.66%&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  What These Metrics Mean
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Memory Used vs Limit:&lt;/strong&gt; If usage is consistently close to the limit (e.g., 60 MB of 64 MB), eviction is likely.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Hit/Miss Ratio:&lt;/strong&gt; A high hit rate (90%+) means the cache is effective.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Evictions:&lt;/strong&gt; This shows how many old entries Memcached had to delete to make space. Frequent evictions = not enough memory.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Items Stored:&lt;/strong&gt; Number of keys in cache.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Tracking Per-Site Usage by Prefix (Salt)
&lt;/h3&gt;

&lt;p&gt;We extended our script to group keys by &lt;code&gt;WP_CACHE_KEY_SALT&lt;/code&gt; prefix and output something like:&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;/**
   * Memcached Site-wise Monitor (with defined salts)
   * Groups keys by exact WP_CACHE_KEY_SALT values.
   */&lt;/span&gt;

  &lt;span class="nb"&gt;header&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Content-Type: text/plain'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

 &lt;span class="c1"&gt;// Define your known salts (must match what's in wp-config.php)&lt;/span&gt;
  &lt;span class="nv"&gt;$salt_prefixes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="s1"&gt;'webdevstory_'&lt;/span&gt;     &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'WebDevStory'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s1"&gt;'site2_'&lt;/span&gt;       &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'Site 2'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s1"&gt;'site3_'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'Site 3'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s1"&gt;'site4_'&lt;/span&gt;      &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'Site 4'&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;socf_get_sitewise_memcached_keys&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$salt_prefixes&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nv"&gt;$sock&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="nb"&gt;fsockopen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'127.0.0.1'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;11211&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;$sock&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="s2"&gt;"❌ Could not connect to Memcached at 127.0.0.1:11211."&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="nb"&gt;fwrite&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$sock&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"stats items&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="nv"&gt;$slabs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[];&lt;/span&gt;

    &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nb"&gt;feof&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$sock&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nv"&gt;$line&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;fgets&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$sock&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;128&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;preg_match&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'/STAT items:(\d+):number/'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$line&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="p"&gt;{&lt;/span&gt;
            &lt;span class="nv"&gt;$slabs&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$matches&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="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;elseif&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;trim&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$line&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="s1"&gt;'END'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;break&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="nv"&gt;$site_counts&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;array_fill_keys&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;array_values&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$salt_prefixes&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;$site_counts&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'Untracked'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&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="nb"&gt;array_unique&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$slabs&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nv"&gt;$slab&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nb"&gt;fwrite&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$sock&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"stats cachedump &lt;/span&gt;&lt;span class="nv"&gt;$slab&lt;/span&gt;&lt;span class="s2"&gt; 200&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="k"&gt;while&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nb"&gt;feof&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$sock&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nv"&gt;$line&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;fgets&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$sock&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;512&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;preg_match&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'/ITEM ([^\s]+) /'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$line&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="p"&gt;{&lt;/span&gt;
                &lt;span class="nv"&gt;$key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$matches&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;$matched&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&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;$salt_prefixes&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nv"&gt;$salt&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;$label&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;strpos&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$salt&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                        &lt;span class="nv"&gt;$site_counts&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;$label&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
                        &lt;span class="nv"&gt;$matched&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
                        &lt;span class="k"&gt;break&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;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;$matched&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                    &lt;span class="nv"&gt;$site_counts&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'Untracked'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&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;elseif&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;trim&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$line&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="s1"&gt;'END'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="k"&gt;break&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="nb"&gt;fclose&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$sock&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="nv"&gt;$output&lt;/span&gt;  &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"📊 Memcached Key Usage by Site (Salt Matching):&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;$output&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"---------------------------------------------&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&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;$site_counts&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nv"&gt;$label&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;$count&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nv"&gt;$output&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="s2"&gt;"🔹 %-20s : %d keys&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$label&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$count&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;$output&lt;/span&gt; &lt;span class="o"&gt;?:&lt;/span&gt; &lt;span class="s2"&gt;"No keys found."&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="nf"&gt;socf_get_sitewise_memcached_keys&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$salt_prefixes&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;
  &lt;span class="na"&gt;📊 Memcached Key Usage by Site (Salt Matching)&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="s"&gt;-----------------------------------------------&lt;/span&gt;
  &lt;span class="na"&gt;Site 1       &lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;0 keys&lt;/span&gt;
  &lt;span class="na"&gt;Site 2       &lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;429 keys&lt;/span&gt;
  &lt;span class="na"&gt;Site 3       &lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;164 keys&lt;/span&gt;
  &lt;span class="na"&gt;Site 4       &lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;1273 keys&lt;/span&gt;
  &lt;span class="na"&gt;Untracked    &lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;7 keys&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is invaluable when diagnosing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Why a specific site is bloating memory&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Whether your salt is missing (0 keys = wrong or undefined salt)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Sites not benefiting from caching at all&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  When and Why Evictions Happen
&lt;/h3&gt;

&lt;p&gt;Evictions occur when Memcached runs out of memory and starts removing old keys (often the least recently used). Common causes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Multiple high-traffic sites on the same Memcached instance&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Large WooCommerce or multilingual setups&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Default memory limit too small (e.g., 64 MB)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;💡 &lt;strong&gt;We upgraded our instance to 512 MB after observing high eviction counts and were able to reduce them significantly.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Deciding Which Sites Should Use Object Cache
&lt;/h2&gt;

&lt;p&gt;Not all websites need object caching, or at least not Memcached/Redis-level caching.&lt;/p&gt;

&lt;h3&gt;
  
  
  ✅ When Object Cache Is Helpful
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;WooCommerce stores:&lt;/strong&gt; Dynamic product and cart pages, session data, etc.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Multilingual websites:&lt;/strong&gt; Lots of options and translation strings cached&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Membership or login-based sites:&lt;/strong&gt; Auth checks and custom queries&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Content-heavy blogs with logged-in users (e.g., WebDevStory)&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In these cases, object caching significantly reduces query load and boosts TTFB.&lt;/p&gt;

&lt;h3&gt;
  
  
  ❌ When Object Cache May Not Be Worth It
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Small static brochure sites&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Low-traffic blogs with infrequent updates&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Minimal plugin usage&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, we disabled Memcached for a site which is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Static and updated rarely&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Lightweight in theme and plugins&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Visited occasionally, mostly by anonymous users&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Using object cache here would just consume space in shared memory and increase complexity.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;💡 Rule of Thumb&lt;/strong&gt;
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Scenario&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Use Object Cache?&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;WooCommerce with 500+ products&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Blog with 50 posts, no login&lt;/td&gt;
&lt;td&gt;❌ Probably not&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Multilingual portfolio site&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Static info page&lt;/td&gt;
&lt;td&gt;❌ Skip it&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Membership site&lt;/td&gt;
&lt;td&gt;✅ Absolutely&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  6. Best Practices for Multi-site Memcached Use
&lt;/h2&gt;

&lt;h3&gt;
  
  
  ✅ Always Define &lt;a href="https://developer.wordpress.org/reference/constants/wp_cache_key_salt/" rel="noopener noreferrer"&gt;WP_CACHE_KEY_SALT&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;This is critical. Without it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;All keys go into a global pool&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You lose the ability to flush per site&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Monitoring tools can’t differentiate usage&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Sample setup per wp-config.php:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;define&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'WP_CACHE_KEY_SALT'&lt;/span&gt;, &lt;span class="s1"&gt;'webdevstory_'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;strong&gt;🚫 Avoid Full Flush Unless Using Dedicated Memcached&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Unless you’re on a single-site server, never flush the entire cache without confirming&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use a plugin (like ours) that prevents accidental full flush without salt&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Full flushes can cause downtime or performance drops across other sites on the same instance&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  📊 Use Monitoring to Balance Memory
&lt;/h3&gt;

&lt;p&gt;Whether through:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;A custom PHP stats script&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;LiteSpeed cache panel&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Query Monitor plugin (advanced)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Regular monitoring helps answer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Should you increase memory?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Is one site bloating the cache?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Are your hit rates improving?&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🧠 Be Aware of Key Growth and Expiry
&lt;/h3&gt;

&lt;p&gt;Memcached stores keys in memory until:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;They expire (default: 0 = never)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;They’re evicted due to space pressure&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your plugin or theme stores too many transients or uses long TTLs &lt;code&gt;(wp_cache_set( 'key', 'value', 'group', 3600 ))&lt;/code&gt;, you may:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Waste memory on stale data&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Trigger unnecessary evictions&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Hurt performance rather than improve it&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;📌 &lt;strong&gt;Set sensible expiration times&lt;/strong&gt; and review what’s being cached if you suspect bloat.&lt;/p&gt;

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

&lt;p&gt;Object caching can supercharge your &lt;a href="https://www.webdevstory.com/fixing-wordpress-core-web-vitals-guide/" rel="noopener noreferrer"&gt;WordPress site&lt;/a&gt; — but only if managed correctly.&lt;/p&gt;

&lt;p&gt;From small blogs to large WooCommerce stores, the difference between efficient and wasteful caching comes down to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Using Memcached wisely in shared or VPS setups&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Defining a proper &lt;code&gt;WP_CACHE_KEY_SALT&lt;/code&gt; for isolation&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Monitoring usage and tuning memory limits&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Having tools to flush intelligently, not blindly&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;We learned the hard way:&lt;/strong&gt; full cache flushes, shared memory conflicts, and missed key prefixes can cost you performance and stability.&lt;/p&gt;

&lt;h3&gt;
  
  
  Try Our Simple Object Cache Flusher Plugin
&lt;/h3&gt;

&lt;p&gt;To help manage this, we built a lightweight plugin with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;✅ Admin button to flush object cache&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;✅ Selective flush by salt (&lt;code&gt;WP_CACHE_KEY_SALT&lt;/code&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;✅ Full-flush confirmation if no salt is defined&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;✅ Memcached backend detection&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;✅ Safe UI feedback with hit/miss logging options&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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;/**
   * Plugin Name: Simple Object Cache Flusher
   * Description: Adds an admin menu with backend info and a button to flush only this site's object cache (Memcached) using WP_CACHE_KEY_SALT.
   * Version: 1.3
   * Author: Mainul Hasan
   * Author URI: https://www.webdevstory.com/
   * License: GPL2+
   * License URI: https://www.gnu.org/licenses/gpl-2.0.html
   * Text Domain: simple-object-cache-flusher
   * Domain Path: /languages
 */&lt;/span&gt;

  &lt;span class="nf"&gt;add_action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'admin_menu'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&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_management_page&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="nf"&gt;__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Flush Object Cache'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'simple-object-cache-flusher'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="nf"&gt;__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Flush Object Cache'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'simple-object-cache-flusher'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="s1"&gt;'manage_options'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s1"&gt;'flush-object-cache'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s1"&gt;'socf_admin_page'&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;socf_admin_page&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="s1"&gt;'manage_options'&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="nf"&gt;__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Not allowed.'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'simple-object-cache-flusher'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="nv"&gt;$cache_backend&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Unknown'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'simple-object-cache-flusher'&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;file_exists&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;WP_CONTENT_DIR&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="s1"&gt;'/object-cache.php'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nv"&gt;$file&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;file_get_contents&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;WP_CONTENT_DIR&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="s1"&gt;'/object-cache.php'&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;stripos&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'memcached'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nv"&gt;$cache_backend&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Memcached'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;elseif&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;stripos&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'redis'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nv"&gt;$cache_backend&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Redis'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;elseif&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;stripos&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'APC'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nv"&gt;$cache_backend&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'APC'&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="nv"&gt;$cache_backend&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Custom/Other'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'simple-object-cache-flusher'&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;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nv"&gt;$cache_backend&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Not detected / Disabled'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'simple-object-cache-flusher'&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="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;'socf_flush'&lt;/span&gt;&lt;span class="p"&gt;]))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nf"&gt;check_admin_referer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'socf_flush_cache'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'socf_nonce'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

        &lt;span class="nv"&gt;$prefix&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;'WP_CACHE_KEY_SALT'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;?&lt;/span&gt; &lt;span class="no"&gt;WP_CACHE_KEY_SALT&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="nv"&gt;$deleted&lt;/span&gt; &lt;span class="o"&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;$error_msg&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;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$prefix&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;class_exists&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Memcached'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nv"&gt;$host&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;apply_filters&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'socf_memcached_host'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'127.0.0.1'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="nv"&gt;$port&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;apply_filters&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'socf_memcached_port'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;11211&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="nv"&gt;$mem&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Memcached&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
            &lt;span class="nv"&gt;$mem&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;addServer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$host&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$port&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;method_exists&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$mem&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'getAllKeys'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="nv"&gt;$all_keys&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$mem&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;getAllKeys&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;is_array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$all_keys&lt;/span&gt;&lt;span class="p"&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;$all_keys&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nv"&gt;$key&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;strpos&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$prefix&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="mi"&gt;0&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;$mem&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nb"&gt;delete&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$key&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                                &lt;span class="nv"&gt;$deleted&lt;/span&gt;&lt;span class="o"&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="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;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="nv"&gt;$error_msg&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Your Memcached extension does not support key enumeration (getAllKeys). Partial flush not possible.'&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;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$deleted&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&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 class="notice notice-success is-dismissible"&amp;gt;&amp;lt;p&amp;gt;'&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt;
            &lt;span class="nf"&gt;esc_html__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'✅ Flushed '&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="nv"&gt;$deleted&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="s1"&gt;' object cache keys using WP_CACHE_KEY_SALT.'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'simple-object-cache-flusher'&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;/p&amp;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;'&amp;lt;div class="notice notice-warning is-dismissible"&amp;gt;&amp;lt;p&amp;gt;'&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt;
            &lt;span class="nf"&gt;esc_html__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'⚠️ No matching keys deleted. Either WP_CACHE_KEY_SALT is not set, or key listing is unsupported. '&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'simple-object-cache-flusher'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt;
            &lt;span class="nf"&gt;esc_html&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$error_msg&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;/p&amp;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="p"&gt;}&lt;/span&gt;
    &lt;span class="cp"&gt;?&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"wrap"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt; &lt;span class="nf"&gt;esc_html_e&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Flush Object Cache'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'simple-object-cache-flusher'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="cp"&gt;?&amp;gt;&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt; &lt;span class="nf"&gt;esc_html_e&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Backend detected:'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'simple-object-cache-flusher'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="cp"&gt;?&amp;gt;&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/strong&amp;gt;&lt;/span&gt; &lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt; &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="nf"&gt;esc_html&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$cache_backend&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="cp"&gt;?&amp;gt;&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;form&lt;/span&gt; &lt;span class="na"&gt;method=&lt;/span&gt;&lt;span class="s"&gt;"post"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt; &lt;span class="nf"&gt;wp_nonce_field&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'socf_flush_cache'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'socf_nonce'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="cp"&gt;?&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;
                &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"submit"&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"socf_flush"&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"button button-primary"&lt;/span&gt;
                &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt; &lt;span class="nf"&gt;esc_attr_e&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Flush Object Cache Now'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'simple-object-cache-flusher'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="cp"&gt;?&amp;gt;&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;/form&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt; &lt;span class="nf"&gt;esc_html_e&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"This will flush the Memcached object cache if available on your server. Tries to delete only this site's keys if salt is defined."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'simple-object-cache-flusher'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="cp"&gt;?&amp;gt;&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
        &lt;span class="cp"&gt;&amp;lt;?php&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;$cache_backend&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="nf"&gt;__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Not detected / Disabled'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'simple-object-cache-flusher'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="cp"&gt;?&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;p&lt;/span&gt; &lt;span class="na"&gt;style=&lt;/span&gt;&lt;span class="s"&gt;"color: red;"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt; &lt;span class="nf"&gt;esc_html_e&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'No object cache backend detected. You may not be using object caching.'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'simple-object-cache-flusher'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="cp"&gt;?&amp;gt;&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
        &lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt; &lt;span class="k"&gt;endif&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="cp"&gt;?&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class="cp"&gt;&amp;lt;?php&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="s1"&gt;'plugins_loaded'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;load_plugin_textdomain&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'simple-object-cache-flusher'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;dirname&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;plugin_basename&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;__FILE__&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="s1"&gt;'/languages'&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;👉 Check it out on &lt;a href="https://github.com/mainulspace/wordpress/blob/master/plugins/simple-object-cache-flusher/simple-object-cache-flusher.php" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;🚀 Before You Go:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;👏 Found this guide helpful? &lt;strong&gt;Give it a like!&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;💬 Got thoughts? &lt;strong&gt;Share your insights!&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;📤 Know someone who needs this? &lt;strong&gt;Share the post!&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;🌟 &lt;strong&gt;Your support keeps us going!&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;💻 &lt;em&gt;Level up with the latest tech trends, tutorials, and tips&lt;/em&gt; - Straight to your inbox – no fluff, just value!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://newsletter.webdevstory.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;Join the Community →&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>memcached</category>
      <category>wordpress</category>
      <category>objectcache</category>
      <category>serveroptimization</category>
    </item>
    <item>
      <title>Top 5 Self-Help Classics Every Tech Professional Should Read</title>
      <dc:creator>Mainul Hasan</dc:creator>
      <pubDate>Sat, 02 Aug 2025 18:27:03 +0000</pubDate>
      <link>https://forem.com/mainulspace/top-5-self-help-classics-every-tech-professional-should-read-5bl9</link>
      <guid>https://forem.com/mainulspace/top-5-self-help-classics-every-tech-professional-should-read-5bl9</guid>
      <description>&lt;p&gt;Want to take control of your habits, mindset, and financial future? You’re not alone. People across industries, especially in tech, are increasingly turning to self-help books to unlock personal and professional success.&lt;/p&gt;

&lt;p&gt;But with thousands of titles available, it’s easy to feel overwhelmed. Which books truly make an impact? Which ones offer real, actionable strategies?&lt;/p&gt;

&lt;p&gt;In this post, we’ve curated five of the most powerful self-help books that help you build habits, think clearly, and grow with confidence. Whether you’re a developer, freelancer, startup founder, or lifelong learner, these books provide timeless frameworks to help you reflect, reset, and rise.&lt;/p&gt;

&lt;p&gt;Let’s dive into the top self-help classics for tech professionals, plus a few bonus reads to supercharge your &lt;a href="https://www.webdevstory.com/navigating-developer-journey/" rel="noopener noreferrer"&gt;growth journey&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Atomic Habits by James Clear
&lt;/h2&gt;

&lt;p&gt;The first book, &lt;a href="https://amzn.to/3J3X6ay" rel="noopener noreferrer"&gt;Atomic Habits&lt;/a&gt; by &lt;a href="https://jamesclear.com/" rel="noopener noreferrer"&gt;James Clear&lt;/a&gt; is a bestselling book that offers practical and actionable advice on how to build better habits and achieve long-term success.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Takeaways
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Small Changes, Big Wins:&lt;/strong&gt; Tiny habits lead to massive outcomes over time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Habit Loop:&lt;/strong&gt; Cue, craving, response, reward — understanding this is game-changing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Systems &amp;gt; Goals:&lt;/strong&gt; Focus on identity-based habits rather than just end results.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Habit Stacking:&lt;/strong&gt; Add new habits to existing routines to make them stick.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;‘If-Then’ Planning:&lt;/strong&gt; Prepare for obstacles and stay on track.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2. The 7 Habits of Highly Effective People
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://amzn.to/3CWVa0A" rel="noopener noreferrer"&gt;The 7 Habits of Highly Effective People&lt;/a&gt; by Stephen Covey is a classic self-help book for achieving success and personal fulfillment. The book’s main idea is that success results from developing good habits and being effective in your personal and professional life.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Takeaways
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Be Proactive:&lt;/strong&gt; Take control of your choices and reactions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Begin with the End in Mind:&lt;/strong&gt; Set a clear vision of your goals.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Think Win-Win:&lt;/strong&gt; Collaborate, don’t compete.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Seek First to Understand:&lt;/strong&gt; Empathetic listening leads to better communication.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Sharpen the Saw:&lt;/strong&gt; Continuously renew yourself — mentally, physically, emotionally.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2Fy6ssxaoo0i2lvn3rjt4n.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%2Fy6ssxaoo0i2lvn3rjt4n.png" alt="Post-it notes with self-care and habit advice like reduce stress, eat healthy, stay active" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. The Four Agreements by Don Miguel Ruiz
&lt;/h2&gt;

&lt;p&gt;Based on ancient Toltec wisdom, &lt;a href="https://amzn.to/3KKpvS1" rel="noopener noreferrer"&gt;The Four Agreements&lt;/a&gt; presents a powerful set of rules for personal transformation. Ruiz emphasizes the importance of shedding restrictive beliefs and adopting a &lt;a href="https://www.webdevstory.com/staying-in-comfort-zone/" rel="noopener noreferrer"&gt;new way of thinking&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Takeaways
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Be Impeccable with Your Word:&lt;/strong&gt; Speak truth, avoid gossip.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Don’t Take Anything Personally:&lt;/strong&gt; Others’ actions are reflections of them, not you.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Don’t Make Assumptions:&lt;/strong&gt; Communicate clearly to avoid drama.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Always Do Your Best:&lt;/strong&gt; Even if it changes daily, give what you can.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  4. The 48 Laws of Power by Robert Greene
&lt;/h2&gt;

&lt;p&gt;The book &lt;a href="https://amzn.to/3wXt15O" rel="noopener noreferrer"&gt;The 48 Laws of Power&lt;/a&gt; gives us clear and helpful advice on how to get and keep power. Knowing the rules of power can help you deal with the complicated and often competitive world of people and be successful and have influence over them.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Takeaways
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Guard Your Reputation:&lt;/strong&gt; It’s your most valuable asset.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Conceal Intentions:&lt;/strong&gt; Strategy requires patience and subtlety.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Confidence Wins:&lt;/strong&gt; Power is often perception.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Know What Others Want:&lt;/strong&gt; Influence flows from understanding desire.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Adaptability is Key:&lt;/strong&gt; Environments change. So must your tactics.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  5. Financial Wellness and How to Find It
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://amzn.to/3xgdI8p" rel="noopener noreferrer"&gt;This guide&lt;/a&gt; provides a comprehensive approach to achieving financial wellness. It outlines various aspects of personal finance and offers strategies to meet your financial goals.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Takeaways
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Know Your Money:&lt;/strong&gt; Awareness is the first step.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Create a Game Plan:&lt;/strong&gt; Budgeting, saving, and investing made practical.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Overcome Obstacles:&lt;/strong&gt; Money mindset matters.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Act Now:&lt;/strong&gt; Wealth-building is a habit, not a someday dream.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to Choose the Right Self-Help Book for You
&lt;/h2&gt;

&lt;p&gt;Not every self-help book will resonate the same way for everyone. Consider these when picking your next read:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Your current focus:&lt;/strong&gt; Are you working on habits, mindset, finances, or leadership?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Your learning style:&lt;/strong&gt; Do you prefer stories, step-by-step frameworks, or research-backed models?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Your professional stage:&lt;/strong&gt; Creators, developers, and founders may benefit from books with strategic thinking and execution techniques.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Start with what aligns with your present goals — then build from there.&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%2Fcwsacx3r5uyxb8vl0b1i.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%2Fcwsacx3r5uyxb8vl0b1i.png" alt="Diagram showing components of a financial plan including retirement, investments, insurance, and cash flow" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why These Books Stand Out
&lt;/h2&gt;

&lt;p&gt;Each of these books stands out for its depth, timeless relevance, and practical value. What makes them different from typical “feel-good” reads is their &lt;strong&gt;practicality&lt;/strong&gt;, &lt;strong&gt;timelessness&lt;/strong&gt;, and &lt;strong&gt;depth&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;They’re not just motivational, they offer frameworks that stick. From how we structure our day to how we handle setbacks, many of our strategies trace back to insights from these reads.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick Comparison: Which Self-Help Book Fits Your Focus?
&lt;/h2&gt;

&lt;p&gt;Each book offers a unique lens into personal and professional development. Here’s a side-by-side comparison to help you choose the one that aligns best with your current goals, mindset, and learning style.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Book&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Primary Focus&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Best For&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Why It Stands Out&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="https://amzn.to/3J3X6ay" rel="noopener noreferrer"&gt;Atomic Habits&lt;/a&gt; by James Clear&lt;/td&gt;
&lt;td&gt;Habit formation, behavioral psychology&lt;/td&gt;
&lt;td&gt;People who struggle with consistency, procrastination, or starting new routines&lt;/td&gt;
&lt;td&gt;Breaks down behavior change into small, actionable steps supported by neuroscience. Perfect for anyone seeking a structured, no-fluff approach to self-discipline.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="https://amzn.to/3CWVa0A" rel="noopener noreferrer"&gt;The 7 Habits of Highly Effective People&lt;/a&gt; by Stephen Covey&lt;/td&gt;
&lt;td&gt;Mindset, leadership, long-term effectiveness&lt;/td&gt;
&lt;td&gt;Professionals, students, or anyone looking to align values with action and think strategically&lt;/td&gt;
&lt;td&gt;Combines personal ethics with a structured decision-making framework. Ideal for goal-setters and those seeking holistic growth over quick wins.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="https://amzn.to/3KKpvS1" rel="noopener noreferrer"&gt;The Four Agreements&lt;/a&gt; by &lt;a href="https://www.miguelruiz.com/" rel="noopener noreferrer"&gt;Don Miguel Ruiz&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;Emotional resilience, inner peace, mindset detox&lt;/td&gt;
&lt;td&gt;Anyone feeling mentally overwhelmed or emotionally reactive&lt;/td&gt;
&lt;td&gt;Draws from Toltec wisdom to provide simple but powerful mental “rules” that reduce stress, miscommunication, and self-sabotage.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="https://amzn.to/3wXt15O" rel="noopener noreferrer"&gt;The 48 Laws of Power&lt;/a&gt; by Robert Greene&lt;/td&gt;
&lt;td&gt;Strategy, &lt;a href="https://hbr.org/topic/subject/power-and-influence" rel="noopener noreferrer"&gt;influence, power dynamics&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;Entrepreneurs, founders, leaders, and negotiators&lt;/td&gt;
&lt;td&gt;Unapologetically bold. This book helps you understand real-world power plays and social dynamics with historical references and psychological depth.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://amzn.to/3xgdI8p" rel="noopener noreferrer"&gt;Financial Wellness and How to Find It&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Personal finance, money mindset, long-term planning&lt;/td&gt;
&lt;td&gt;Beginners and professionals looking to gain control over personal finances and future-proof wealth&lt;/td&gt;
&lt;td&gt;Covers budgeting, investing, and emotional behavior around money. Great as a first step for those new to financial planning.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Try the 5-Week Self-Help Reading Challenge
&lt;/h2&gt;

&lt;p&gt;If you’re serious about personal growth but don’t know where to start? Commit to this 5-week reading challenge. Just one book per week, with clear purpose and focus.&lt;/p&gt;

&lt;p&gt;This plan helps you build momentum, apply what you learn, and avoid the common trap of “shelf-help”, collecting books without action.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Week 1: Atomic Habits&lt;/strong&gt; – Build consistency with small wins. Focus on daily routines and identity-based habits.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Week 2: The 7 Habits&lt;/strong&gt; – Align your actions with long-term goals. Start shaping your life with intention and values.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Week 3: The Four Agreements&lt;/strong&gt; – Clear mental clutter. Create space for peace, clarity, and confidence.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Week 4: The 48 Laws of Power&lt;/strong&gt; – Understand how influence works. Identify unspoken dynamics in work and life.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Week 5: Financial Wellness&lt;/strong&gt; – Take control of your money, plan for freedom, and shift your financial mindset.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;✔️ Journal 3 key takeaways from each book.&lt;br&gt;&lt;br&gt;
✔️ Apply one insight that week.&lt;br&gt;&lt;br&gt;
✔️ Share your reflections with your friends&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This challenge isn’t just about reading, it’s about transformation.&lt;/em&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%2Fdh42b6mlz5qwyyd89654.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%2Fdh42b6mlz5qwyyd89654.png" alt="Break bad habits and build good habits visual with coffee and pen" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The ROI of Self-Help Reading: Is It Worth It?
&lt;/h2&gt;

&lt;p&gt;It’s easy to underestimate the impact of a $20 book, until you realize it can save you months (or years) of trial and error. For developers, designers, freelancers, and founders, reading isn’t just for inspiration, it’s a form of mental performance training.&lt;/p&gt;

&lt;p&gt;Personal growth has a compounding return. One concept from a book can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Eliminate costly procrastination habits &lt;/li&gt;
&lt;li&gt;Reshape your money mindset for long-term wealth
&lt;/li&gt;
&lt;li&gt;Help you manage difficult team dynamics with less stress &lt;/li&gt;
&lt;li&gt;Build clarity around goals and execution&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In fact, many high-performing professionals block 30–60 minutes per day for intentional reading as part of their daily success routine — treating it like a &lt;a href="https://fs.blog/mental-models/" rel="noopener noreferrer"&gt;mental gym&lt;/a&gt; session.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;So is it worth it? If you apply even 10% of what you read, the ROI is undeniable.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Beyond the Top 5: Additional Inspiring Reads for Personal Growth
&lt;/h2&gt;

&lt;p&gt;In the ocean of self-help literature, there’s more to explore. Check out these highly acclaimed books to further bolster your journey towards self-improvement and success:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://amzn.to/3wZN9El" rel="noopener noreferrer"&gt;The 4-Hour Workday&lt;/a&gt; by Tim Ferriss: This bestseller promises an escape from the mundane 9-to-5 grind. Learn to outsource, automate your work, create passive income streams, and achieve a work-life balance that suits your lifestyle.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://amzn.to/3RBqohR" rel="noopener noreferrer"&gt;The Alchemist&lt;/a&gt; by Paulo Coelho: Often recommended as a must-read, this inspiring tale encourages self-discovery and dream chasing. Its simple yet profound storytelling has resonated with millions, motivating them to follow their dreams.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://amzn.to/3BeuN4U" rel="noopener noreferrer"&gt;Thinking, Fast and Slow&lt;/a&gt; by Daniel Kahneman: This hit book delves into cognitive biases and the two contrasting systems of thought: the ‘fast’ and ‘slow’. It uncovers how these systems can influence our judgment and decision-making.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://amzn.to/3eqmVV9" rel="noopener noreferrer"&gt;Best Self: Be You, Only Better&lt;/a&gt; by Mike Bayer: With its step-by-step approach towards personal and professional goals, this book is highly praised for its positive messaging and effective techniques for life improvement.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://amzn.to/3CZ17Kp" rel="noopener noreferrer"&gt;Girl, Wash Your Face&lt;/a&gt; by Rachel Hollis: A bestseller designed to help women break free from self-doubt and lies holding them back. It empowers readers to confront their negative attitudes and beliefs head-on.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://amzn.to/3QjdT9M" rel="noopener noreferrer"&gt;You Are a Badass&lt;/a&gt; by Jen Sincero: Known for its humor and approachable writing style, this book is your guide to overcome self-doubt and limiting beliefs. It motivates readers to take control of their lives with confidence.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://amzn.to/3eof1M1" rel="noopener noreferrer"&gt;Rich Dad, Poor Dad&lt;/a&gt; by Robert Kiyosaki: This personal finance bestseller offers a fresh perspective on money and investing, challenging conventional wisdom and encouraging wealth generation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://amzn.to/3QfXy5t" rel="noopener noreferrer"&gt;Think and Grow Rich&lt;/a&gt; by Napoleon Hill: A timeless classic, this book provides practical advice and principles for success, based on Hill’s extensive studies of over 500 self-made millionaires.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Success isn’t accidental, it’s intentional. These self-help books don’t just offer theory; they provide blueprints for transformation.&lt;/p&gt;

&lt;p&gt;I hope this list gives you the foundation to build powerful habits, grow your wealth, or strengthen your mindset. Read them. Revisit them. Apply them.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Remember: Small steps, repeated daily, lead to extraordinary outcomes.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;Looking to build a strong web presence, a website, brand, web application or digital product? Explore how &lt;a href="https://www.nordicdigisolutions.com/" rel="noopener noreferrer"&gt;Nordic Digi Solutions&lt;/a&gt; can help.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;🚀 Before You Go:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;👏 Found this guide helpful? &lt;strong&gt;Give it a like!&lt;/strong&gt; &lt;/li&gt;
&lt;li&gt;💬 Got thoughts? &lt;strong&gt;Share your insights!&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;📤 Know someone who needs this? &lt;strong&gt;Share the post!&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;🌟 &lt;strong&gt;Your support keeps us going!&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;💻 &lt;em&gt;Level up with the latest tech trends, tutorials, and tips&lt;/em&gt; - Straight to your inbox – no fluff, just value!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://newsletter.webdevstory.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;Join the Community →&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Note: Some links on this page might be affiliate links. If you make a purchase through these links, I may earn a small commission at no extra cost to you. Thanks for your support!&lt;/p&gt;

</description>
      <category>selfhelf</category>
      <category>productivity</category>
      <category>personalgrowth</category>
      <category>readingchallenge</category>
    </item>
    <item>
      <title>Fixing 421 Misdirected Request Errors on Multilingual WordPress Sites Using Apache &amp; NGINX</title>
      <dc:creator>Mainul Hasan</dc:creator>
      <pubDate>Mon, 21 Jul 2025 14:05:09 +0000</pubDate>
      <link>https://forem.com/mainulspace/fixing-421-misdirected-request-errors-on-multilingual-wordpress-sites-using-apache-nginx-3601</link>
      <guid>https://forem.com/mainulspace/fixing-421-misdirected-request-errors-on-multilingual-wordpress-sites-using-apache-nginx-3601</guid>
      <description>&lt;p&gt;All of a sudden, we encountered an intermittent but critical issue affecting multiple domains hosted on our cPanel server with both Apache and NGINX enabled. The issue manifested as random &lt;strong&gt;421 Misdirected Request&lt;/strong&gt; errors on a multilingual agency website as well:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;🔗 &lt;a href="https://www.nordicdigisolutions.com/" rel="noopener noreferrer"&gt;https://www.nordicdigisolutions.com&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;🔗 &lt;a href="https://www.nordicdigisolutions.no/" rel="noopener noreferrer"&gt;https://www.nordicdigisolutions.no&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Despite a valid SSL setup and clean redirects, HTTPS requests were occasionally misrouted or rejected. This post documents our full diagnostic journey and resolution, and may serve as a reference for others facing similar issues.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Symptoms We Noticed&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;❌ Random 421 Misdirected Request errors appearing only on HTTPS pages&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;🌐 Affected both domains: .com and .no&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;🔁 Issue was intermittent — some visits worked, others failed&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;✅ All redirects (non-www → www, HTTP → HTTPS) appeared to function correctly&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;🛑 Despite that, the final destination would sometimes return a 421 error page&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2Fgw90d1j7lrqkewdid9ye.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%2Fgw90d1j7lrqkewdid9ye.png" alt="Screenshot of 421 Misdirected Request error shown in browser for nordicdigisolutions.com" width="800" height="125"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;🔍 Investigation Steps&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;1. Checked Apache Virtual Hosts&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Both domains were configured correctly in cPanel&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Each domain had its own SSL certificate issued via AutoSSL&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;DocumentRoot paths were separate, avoiding any aliasing or overlap&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;2. Tested Redirection Rules&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;.htaccess&lt;/code&gt; rules were in place for:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enforcing https://&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Redirecting non-www to www&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cloudflare Page Rules also mirrored this logic for consistency&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We confirmed there were no redirect loops, misroutes, or invalid targets using redirect checkers&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;3. Cloudflare Debugging&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;DNS Settings were correct — both domains pointed to our server via Cloudflare proxies&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;SSL/TLS settings were set to “Full” (not Flexible)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Used response header analysis to trace:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Redirect flow&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Origin IP matches&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Certificate validity&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Conclusion:&lt;/strong&gt; Nothing abnormal was found in Cloudflare’s routing behavior&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;4. Validated SSLs in cPanel&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Under &lt;strong&gt;SSL/TLS → Manage SSL Sites&lt;/strong&gt;, both domains had:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Correct certificate bindings&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Proper chain (Root, Intermediate, Domain)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Valid expiration dates&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Certificates were not shared or reused between domains&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;5. Tried Disabling Caching Temporarily&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Cleared Cloudflare cache&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Purged WP Rocket cache entirely&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Retested with incognito/private browsing and &lt;code&gt;curl&lt;/code&gt; requests&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Outcome:&lt;/strong&gt; The 421 error still occurred randomly, suggesting caching was not the root cause&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;6. Checked Apache Virtual Hosts (Again)&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Both domains were configured correctly in cPanel with separate SSL certificates&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Same &lt;code&gt;/public_html/&lt;/code&gt; DocumentRoot was used for both .com and .no&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Polylang was used to manage language-specific versions of the site within a single WordPress installation&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;No alias or misconfiguration was found in the VirtualHost setup&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2Fcdujq5hh4rcoi0oq9z5l.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%2Fcdujq5hh4rcoi0oq9z5l.png" alt="Diagram showing the flow of a 421 error in a multilingual WordPress stack using NGINX and Apache" width="800" height="1149"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;🛑 Root Cause&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;After hours of configuration checks and log reviews, the root cause wasn’t within our Cloudflare settings, redirects, caching, or even Apache VirtualHost declarations. Instead, the breakthrough came through &lt;strong&gt;Namecheap support&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;They confirmed that the issue was linked to a recent &lt;strong&gt;EasyApache 4&lt;/strong&gt; update that introduced a conflict when &lt;strong&gt;NGINX is used as a reverse proxy&lt;/strong&gt; in front of Apache, which was exactly our setup.&lt;/p&gt;

&lt;p&gt;The critical detail:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The problem only occurred for &lt;strong&gt;HTTPS&lt;/strong&gt; traffic&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It specifically affected requests proxied via &lt;strong&gt;EA-NGINX&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The bug caused Apache to &lt;strong&gt;misroute requests between domains&lt;/strong&gt;, resulting in 421 Misdirected Request errors even when SSLs were valid and domains were separate&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;📌 &lt;strong&gt;Reference:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
The official cPanel documentation later confirmed this was a known issue:&lt;br&gt;&lt;br&gt;
&lt;a href="https://support.cpanel.net/hc/en-us/articles/33553346450455-Websites-show-421-Misdirected-Request-error-while-using-EA-NGINX-or-other-proxies" rel="noopener noreferrer"&gt;Websites show 421 Misdirected Request error while using EA-NGINX or other proxies&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;✅ The Fix&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Once we identified the source of the issue, the fix was straightforward. We applied the official cPanel patch by executing the following command on the server:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/scripts/upcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Updates all EasyApache (EA4) packages&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Applies the cPanel patch for NGINX-to-Apache SNI routing issues&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Restarts services gracefully&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After the update and restart:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The intermittent 421 errors on both .com and .no domains were completely resolved&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;All HTTPS requests consistently routed to the correct virtual host&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;No further misrouting or caching anomalies observed&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We then re-verified everything:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;DNS and redirects worked flawlessly&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cloudflare behaved as expected&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;No &lt;code&gt;.htaccess&lt;/code&gt; conflicts remained&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Polylang was unaffected&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Lessons Learned&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Managing a multi-domain setup on a cPanel server that uses NGINX as a reverse proxy over Apache requires close attention, especially after EasyApache 4 (EA4) or similar service updates. Even small backend changes can introduce SSL-related bugs that aren’t immediately obvious.&lt;/p&gt;

&lt;p&gt;Key takeaways from our experience:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;EasyApache + NGINX setups must be retested after updates:&lt;/strong&gt; Even when no visible config changes are made, backend handling of SSL (SNI) can break silently.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Cloudflare can’t fix backend SSL mismatches:&lt;/strong&gt; Even though Cloudflare handled our DNS, caching, and TLS termination perfectly, the final SNI mismatch occurred between NGINX and Apache, which is outside Cloudflare’s control.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Diagnostic tools matter:&lt;/strong&gt; Tools like &lt;a href="https://httpstatus.io/" rel="noopener noreferrer"&gt;httpstatus.io&lt;/a&gt;, Chrome DevTools → Network tab, and direct &lt;code&gt;curl&lt;/code&gt; tests helped us follow the redirect flow and isolate when/where the issue occurred.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;VirtualHost separation is critical:&lt;/strong&gt; Having dedicated SSLs and clear separation in Apache’s virtual hosts for each domain helped rule out misconfiguration early in the process.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Stack Overview&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;To help others debug similar setups, here’s a snapshot of our technical stack:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Hosting:&lt;/strong&gt; &lt;a href="https://www.webdevstory.com/troubleshooting-website-downtime-dns-vps-hosting/" rel="noopener noreferrer"&gt;VPS (from Namecheap)&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Web Server Stack:&lt;/strong&gt; Apache (via cPanel) with NGINX (EasyApache 4 Reverse Proxy)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;CDN + Proxy:&lt;/strong&gt; Cloudflare (Full SSL mode)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;CMS:&lt;/strong&gt; WordPress, running a multilingual setup using Polylang&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;SSL Certificates:&lt;/strong&gt; AutoSSL (Let’s Encrypt via cPanel)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This hybrid stack offers performance and flexibility, but also comes with complexity that must be monitored closely.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;🔁 What’s Next&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;We’ve added this situation to our internal post-deployment checklist for any site using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Multi-domain WordPress sites&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Language-specific domains (e.g., &lt;code&gt;.no&lt;/code&gt; + &lt;code&gt;.com&lt;/code&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;NGINX → Apache reverse proxy configurations&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Post-EA4 update verifications (especially SSL/SNI routing)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We’ll also monitor EA4 changelogs closely and perform SNI tests proactively after every server update.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;🔑 Key Takeaways&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;421 errors can occur in NGINX + Apache (EA4) setups after EasyApache updates&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Issue affects HTTPS traffic only, even when SSL and redirects are valid&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Errors are intermittent and may escape normal QA checks&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Applying &lt;code&gt;/scripts/upcp&lt;/code&gt; resolves the bug by patching SNI handling&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Tools like &lt;a href="https://httpstatus.io/" rel="noopener noreferrer"&gt;httpstatus.io&lt;/a&gt; and browser DevTools (Network tab) are essential for tracing redirect chains and pinpointing misrouting&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>421misdirectedrequest</category>
      <category>wordpressssl</category>
      <category>easyapache4</category>
      <category>servernameindication</category>
    </item>
    <item>
      <title>15+ Common Elementor Issues (And How to Fix Them Quickly!)</title>
      <dc:creator>Mainul Hasan</dc:creator>
      <pubDate>Tue, 18 Mar 2025 21:14:58 +0000</pubDate>
      <link>https://forem.com/mainulspace/15-common-elementor-issues-and-how-to-fix-them-quickly-2m76</link>
      <guid>https://forem.com/mainulspace/15-common-elementor-issues-and-how-to-fix-them-quickly-2m76</guid>
      <description>&lt;p&gt;&lt;a href="https://go.webdevstory.com/elementor" rel="noopener noreferrer"&gt;Elementor&lt;/a&gt; is one of the most widely used WordPress page builders. Its drag-and-drop interface makes it easy for anyone to create professional, highly customizable websites. Anyone can build visually stunning pages without any coding skills.&lt;/p&gt;

&lt;p&gt;Like other tools, Elementor is not without issues. Users often encounter problems when updating the plugin, installing third-party add-ons, or changing their site settings. These conflicts can break website layouts, cause missing widgets, or even make the site completely &lt;a href="https://www.webdevstory.com/troubleshooting-website-downtime-dns-vps-hosting/" rel="noopener noreferrer"&gt;inaccessible website&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This guide will explore common elementor issues which leads to frequent site break problems and provide step-by-step fixes to restore &lt;a href="https://elementor.com/features/" rel="noopener noreferrer"&gt;Elementor functionality&lt;/a&gt;. Let’s get started!&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Elementor Update Breaks Site
&lt;/h2&gt;

&lt;p&gt;The most common Elementor issue is after updating Elementor, your pages might break, showing design inconsistencies, missing widgets, or, in severe cases, &lt;a href="https://www.webdevstory.com/fixing-common-wordpress-issues/" rel="noopener noreferrer"&gt;fatal errors&lt;/a&gt; that make the site inaccessible.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why It Happens:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The update may have introduced new features that conflict with your theme or plugins.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Some third-party add-ons may not be compatible with the latest Elementor version.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Elementor’s database structure might have changed, causing unexpected conflicts.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Fix:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Rollback Elementor to a previous version:&lt;/strong&gt; If the issue started after updating Elementor, you can revert to a stable version. Go to &lt;strong&gt;Elementor &amp;gt; Tools &amp;gt; Version Control&lt;/strong&gt; and select a previous version.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Check for plugin or theme conflicts:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Deactivate all plugins except Elementor and see if the issue persists.&lt;/li&gt;
&lt;li&gt;Switch to a default WordPress theme (e.g., &lt;em&gt;Twenty Twenty-Four&lt;/em&gt;) to check if your theme is causing the issue.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Ensure your WordPress version and PHP version are up-to-date (Elementor recommends PHP 7.4+ and WordPress 5.8+).&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Regenerate Elementor CSS and Data: &lt;strong&gt;Elementor &amp;gt; Tools &amp;gt; Regenerate CSS &amp;amp; Data&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Clear all caches (browser, CDN, and server-side caching plugins like WP Rocket or W3 Total Cache).&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  2. Fatal Errors Due to Missing Classes (Like Scheme_Typography)
&lt;/h2&gt;

&lt;p&gt;One of the most frequent Common Elementor Issues users encounter after an update is the following error:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;Fatal error: Uncaught Error: Class ‘Elementor\Core\Schemes\Typography’ not found&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Why It Happens:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Elementor removed the old &lt;code&gt;Scheme_Typography&lt;/code&gt; class in recent versions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Some third-party add-ons like PowerPack or &lt;a href="https://ultimateelementor.com/" rel="noopener noreferrer"&gt;Ultimate Addons&lt;/a&gt; may still rely on the outdated class reference.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Fix:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Edit the affected plugin/theme file and remove the outdated scheme reference.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Replace it with Elementor’s new global typography system:
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;
            &lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nf"&gt;Elementor\Core\Kits\Documents\Tabs\Global_Typography&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

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

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Update the PowerPack or third-party plugin causing the issue.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Check for plugin updates under &lt;strong&gt;Plugins &amp;gt; Installed Plugins&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If no update is available, contact the plugin developer for a fix.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Temporarily disable the conflicting plugin by renaming its folder via FTP (&lt;em&gt;wp-content/plugins/plugin-name-disabled&lt;/em&gt;).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3. Elementor Widgets Not Loading or Blank Page
&lt;/h2&gt;

&lt;p&gt;Among the Common Elementor Issues, users often experience the editor panel getting stuck on loading, or widgets failing to appear.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why It Happens:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Low PHP memory limits.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;JavaScript conflicts caused by other plugins or the theme.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Corrupt Elementor settings or cache.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Fix:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Increase PHP memory limit by adding this to &lt;code&gt;wp-config.php&lt;/code&gt;:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;
            &lt;span class="nb"&gt;define&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;'WP_MEMORY_LIMIT'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'256M'&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;

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

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Clear Elementor cache: Navigate to &lt;strong&gt;Elementor &amp;gt; Tools &amp;gt; Regenerate CSS &amp;amp; Data&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Check for JavaScript conflicts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open the browser console (&lt;em&gt;Right-click &amp;gt; Inspect &amp;gt; Console&lt;/em&gt;) to identify any errors.&lt;/li&gt;
&lt;li&gt;If errors appear, disable third-party plugins one by one to find the conflict.&lt;/li&gt;
&lt;li&gt;Switch to a default theme (e.g., &lt;em&gt;Twenty Twenty-Four&lt;/em&gt;) and check if Elementor loads properly.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Disable unused widgets: Go to &lt;strong&gt;Elementor &amp;gt; Settings &amp;gt; Experiments&lt;/strong&gt; and disable any experimental features.&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  4. White Screen of Death (WSOD) After Activating Elementor
&lt;/h2&gt;

&lt;p&gt;The site turns completely blank after activating or updating Elementor.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why It Happens:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;A fatal error occurs, but it’s not displayed because of suppressed error reporting.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Conflicting themes or plugins crash the site.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Server memory is insufficient to load Elementor’s features.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Fix:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Enable WP Debug Mode to reveal the error source. Add this to &lt;code&gt;wp-config.php&lt;/code&gt;:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;
            &lt;span class="nb"&gt;define&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'WP_DEBUG'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="nb"&gt;define&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'WP_DEBUG_LOG'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="nb"&gt;define&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'WP_DEBUG_DISPLAY'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

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

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Access the &lt;code&gt;wp-content/debug.log&lt;/code&gt; file via FTP and check the error details.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Deactivate conflicting plugins via FTP:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Navigate to &lt;code&gt;wp-content/plugins/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Rename plugin folders one by one (e.g., &lt;em&gt;elementor-pro-disabled&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;Try reloading the site after each rename.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Increase server resources: Ask your hosting provider to raise PHP memory and execution limits.&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  5. Responsive Issues — Elementor Styles Not Applying
&lt;/h2&gt;

&lt;p&gt;Changes made in Elementor appear correctly on desktop but do not reflect on mobile or tablet.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why It Happens:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Elementor’s CSS files may not be updating properly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Custom breakpoints might be misconfigured.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A caching plugin or CDN is serving outdated styles.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Fix:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Regenerate CSS files: Navigate to &lt;strong&gt;Elementor &amp;gt; Tools &amp;gt; Regenerate CSS &amp;amp; Data&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Disable caching plugins or clear their cache.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ensure mobile styling is properly set:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open Elementor and switch to &lt;em&gt;Mobile View&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Adjust margin, padding, and font sizes accordingly.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Check Custom Breakpoints in Elementor Settings: &lt;strong&gt;Elementor &amp;gt; Settings &amp;gt; General&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  6. “Elementor Not Loading” or “Editor Stuck on Loading”
&lt;/h2&gt;

&lt;p&gt;The Elementor editor does not open or gets stuck while loading.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why It Happens:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Server configuration limits may prevent Elementor from loading.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Memory or execution time restrictions are too low.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A conflicting plugin or theme is blocking the editor.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Fix:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Enable Safe Mode in &lt;strong&gt;Elementor &amp;gt; Tools &amp;gt; Safe Mode&lt;/strong&gt; to isolate the problem.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Increase the PHP execution time limit by adding the following to &lt;code&gt;php.ini&lt;/code&gt; or &lt;code&gt;.htaccess&lt;/code&gt;:
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ini"&gt;&lt;code&gt;
            &lt;span class="py"&gt;max_execution_time&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;300;&lt;/span&gt;

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

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Deactivate conflicting plugins and switch to a default theme.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ensure that your hosting environment meets Elementor’s system requirements.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  7. Elementor “Invalid JSON” Error When Editing a Page
&lt;/h2&gt;

&lt;p&gt;You see an error message like “Invalid JSON response” while editing in Elementor.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why It Happens:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Incorrect WordPress permalink settings.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Mismatch between the site URL and WordPress URL.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Browser caching issues.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Fix:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Check WordPress permalinks:&lt;/strong&gt; Go to &lt;strong&gt;Settings &amp;gt; Permalinks&lt;/strong&gt; and set them to “Post name.”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Ensure site URLs match:&lt;/strong&gt; Verify that the &lt;strong&gt;WordPress Address (URL)&lt;/strong&gt; and &lt;strong&gt;Site Address (URL)&lt;/strong&gt; are the same.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Clear the browser cache&lt;/strong&gt; and try using a different browser.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  8. Custom Fonts or Icons Not Showing in Elementor
&lt;/h2&gt;

&lt;p&gt;Icons from Font Awesome or custom fonts don’t load properly in Elementor.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fix:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;To enable Font Awesome, go to &lt;strong&gt;Elementor &amp;gt; Settings &amp;gt; Advanced &amp;gt; Load Font Awesome&lt;/strong&gt; and set it to “Yes” or “Yes for Admin.”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Check CDN settings:&lt;/strong&gt; If you are using a CDN, ensure it’s not blocking Font Awesome or custom font files.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Clear cache:&lt;/strong&gt; Navigate to &lt;strong&gt;Elementor &amp;gt; Tools &amp;gt; Regenerate CSS &amp;amp; Data&lt;/strong&gt; to refresh styles.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  9. 500 Internal Server Error After Elementor Update
&lt;/h2&gt;

&lt;p&gt;The site crashes with a “500 Internal Server Error” after updating Elementor.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fix:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Increase PHP memory limit in &lt;code&gt;wp-config.php&lt;/code&gt;:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;
            &lt;span class="nb"&gt;define&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;'WP_MEMORY_LIMIT'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'512M'&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;

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

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Check the error log:&lt;/strong&gt; Open &lt;code&gt;wp-content/debug.log&lt;/code&gt; to identify the conflicting plugin or function.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Rollback Elementor:&lt;/strong&gt; If the issue persists, revert to a previous stable version under &lt;strong&gt;Elementor &amp;gt; Tools &amp;gt; Version Control&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  10. Elementor Not Saving Changes
&lt;/h2&gt;

&lt;p&gt;Changes in Elementor do not save or revert after refreshing the page.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fix:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Increase WordPress memory limit&lt;/strong&gt; as shown above.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Disable conflicting plugins,&lt;/strong&gt; especially security or caching plugins that may interfere with saving.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Deactivate and reactivate Elementor&lt;/strong&gt; to reset its settings.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  11. “Content Area Was Not Found” Error in Elementor
&lt;/h2&gt;

&lt;p&gt;When trying to edit a page in Elementor, an error message appears stating, “The Content Area Was Not Found in Your Page.” This prevents the user from accessing the Elementor editor.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why It Happens:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The selected page does not contain a content area where Elementor can be used.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The theme lacks the &lt;code&gt;the_content()&lt;/code&gt; function in its &lt;code&gt;page.php&lt;/code&gt; template file.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;WordPress settings may be incorrectly configured, preventing Elementor from loading the page properly.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Fix:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Check Homepage Settings:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to &lt;strong&gt;Settings &amp;gt; Reading&lt;/strong&gt; and make sure your homepage is set to a valid page (not blank).&lt;/li&gt;
&lt;li&gt;Ensure that a static page is selected if needed.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Verify Theme Compatibility:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If using a custom theme, ensure that the &lt;code&gt;the_content()&lt;/code&gt; function exists in &lt;code&gt;page.php&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;If the function is missing, add the following code snippet inside your theme’s &lt;code&gt;page.php&lt;/code&gt; file:
&lt;/li&gt;
&lt;/ul&gt;

&lt;pre class="highlight php"&gt;&lt;code&gt;
                &lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt; &lt;span class="nf"&gt;the_content&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;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Switch to a Default Theme:&lt;/strong&gt; Temporarily activate a default WordPress theme (e.g., &lt;em&gt;Twenty Twenty-Four&lt;/em&gt;) and check if Elementor works properly.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Enable Compatibility Mode:&lt;/strong&gt; Go to &lt;strong&gt;Elementor &amp;gt; Settings&lt;/strong&gt; and enable compatibility mode if the issue persists.&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  12. Elementor Stuck in Maintenance Mode
&lt;/h2&gt;

&lt;p&gt;After an update or a crash, the website gets stuck in maintenance mode, preventing access.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why It Happens:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;WordPress creates a &lt;code&gt;.maintenance&lt;/code&gt; file during updates; WordPress sometimes fails to delete this file properly after an update.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A failed update or interrupted process left the site in maintenance mode.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Fix:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Delete the&lt;/strong&gt; &lt;code&gt;.maintenance&lt;/code&gt; file:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Access your site via FTP or File Manager in your hosting panel.&lt;/li&gt;
&lt;li&gt;Navigate to the root directory (&lt;code&gt;public_html&lt;/code&gt; or &lt;code&gt;www&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Locate and delete the &lt;code&gt;.maintenance&lt;/code&gt; file.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Clear Browser Cache and Reload:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Press &lt;code&gt;Ctrl + Shift + R&lt;/code&gt; (Windows) or &lt;code&gt;Cmd + Shift + R&lt;/code&gt; (Mac) to force a hard refresh.&lt;/li&gt;
&lt;li&gt;Try using a different browser to check if the issue persists.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  13. Elementor Global Colors or Styles Not Applying
&lt;/h2&gt;

&lt;p&gt;Elementor’s Global Colors, Fonts, or other styling options are not reflected on the live site.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why It Happens:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Optimized DOM Output is enabled, preventing Elementor from applying styles correctly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;CSS files have not been regenerated after making changes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Caching plugins or a CDN is serving outdated styles.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Fix:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Disable Optimized DOM Output:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Navigate to &lt;strong&gt;Elementor &amp;gt; Settings &amp;gt; Features&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Find &lt;strong&gt;Optimized DOM Output&lt;/strong&gt; and disable it.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Regenerate CSS Files:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to &lt;strong&gt;Elementor &amp;gt; Tools &amp;gt; Regenerate CSS &amp;amp; Data&lt;/strong&gt; and click &lt;strong&gt;Regenerate&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Clear Cache:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clear all cached files if you are using a caching plugin (e.g., WP Rocket, W3 Total Cache).&lt;/li&gt;
&lt;li&gt;If using a CDN, purge the cache and test again.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  14. WooCommerce Pages Not Loading in Elementor
&lt;/h2&gt;

&lt;p&gt;Elementor does not edit WooCommerce pages properly or displays them incorrectly.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why It Happens:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;WooCommerce pages are not correctly set up in WordPress settings.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The theme has a custom WooCommerce template that is not fully compatible with Elementor.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Elementor does not support direct editing of dynamic WooCommerce pages like the cart and checkout pages.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Fix:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Ensure WooCommerce Pages Are Set Properly:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Navigate to &lt;strong&gt;WooCommerce &amp;gt; Settings &amp;gt; Advanced&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Ensure the &lt;strong&gt;Cart, Checkout, and My Account&lt;/strong&gt; pages are correctly assigned.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Use WooCommerce-Compatible Themes:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If using a custom theme, check for Elementor compatibility.&lt;/li&gt;
&lt;li&gt;Consider switching to an Elementor-friendly WooCommerce theme like &lt;a href="https://go.webdevstory.com/astra" rel="noopener noreferrer"&gt;&lt;strong&gt;Astra&lt;/strong&gt;&lt;/a&gt; or &lt;a href="https://go.webdevstory.com/generatepress" rel="noopener noreferrer"&gt;&lt;strong&gt;GeneratePress&lt;/strong&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Use Elementor’s WooCommerce Widgets:&lt;/strong&gt; Instead of directly editing the WooCommerce pages, use Elementor’s WooCommerce widgets to customize product pages, category pages, and checkout sections.&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  15. Elementor Custom CSS Not Working
&lt;/h2&gt;

&lt;p&gt;Custom CSS added in Elementor does not apply or fails to display on the live site.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why It Happens:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The browser is displaying an old cached version of the site.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;CSS files are being minified or combined incorrectly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Elementor’s Custom CSS is not being properly loaded due to settings or conflicts.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Fix:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Clear Elementor Cache:&lt;/strong&gt; Go to &lt;strong&gt;Elementor &amp;gt; Tools &amp;gt; Regenerate CSS &amp;amp; Data&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Use&lt;/strong&gt; &lt;code&gt;!important&lt;/code&gt; in Custom CSS Rules:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;
                &lt;span class="nc"&gt;.my-custom-class&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                    &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;red&lt;/span&gt; &lt;span class="cp"&gt;!important&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;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Check Caching Plugins &amp;amp; Minification Settings:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If using a caching plugin, disable CSS minification and test.&lt;/li&gt;
&lt;li&gt;If using a CDN, ensure stylesheets are not being aggressively cached.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Disable Third-Party CSS Optimization Plugins:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Plugins like &lt;strong&gt;Autoptimize&lt;/strong&gt; or &lt;strong&gt;WP Super Minify&lt;/strong&gt; might interfere with Elementor’s styles.&lt;/li&gt;
&lt;li&gt;Temporarily disable them and see if styles apply correctly.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  🚀 Key Takeaways – Common Elementor Issues
&lt;/h2&gt;

&lt;p&gt;✅ Always test updates in a staging environment before applying them to your live site.&lt;/p&gt;

&lt;p&gt;✅ Check for plugin and theme conflicts whenever Elementor breaks your layout.&lt;/p&gt;

&lt;p&gt;✅ Increase PHP memory limits &amp;amp; optimize server resources to improve Elementor performance.&lt;/p&gt;

&lt;p&gt;✅ Regenerate CSS &amp;amp; clear cache to fix styling issues and responsiveness problems.&lt;/p&gt;

&lt;p&gt;✅ Enable Safe Mode &amp;amp; Debugging to troubleshoot loading and fatal errors.&lt;/p&gt;

&lt;p&gt;✅ Use an Elementor-compatible theme to avoid conflicts with custom templates.&lt;/p&gt;

&lt;h3&gt;
  
  
  💡 Final Tip:
&lt;/h3&gt;

&lt;p&gt;To keep your Elementor site running smoothly, consider regular maintenance—update plugins, back up your site, and monitor performance using caching and optimization tools.&lt;/p&gt;

&lt;p&gt;We hope this guide helps you resolve Common Elementor Issues and restore your website’s functionality with ease.&lt;/p&gt;

&lt;p&gt;Note: Some links on this page might be affiliate links. If you make a purchase through these links, I may earn a small commission at no extra cost to you. Thanks for your support!&lt;/p&gt;

</description>
      <category>elementorissues</category>
      <category>fixelementorerrors</category>
      <category>wordpresstroubleshooting</category>
      <category>elementorwhitescreen</category>
    </item>
    <item>
      <title>Troubleshooting Mysterious Website Downtime: A Case Study on VPS, DNS, and Hosting Expiry</title>
      <dc:creator>Mainul Hasan</dc:creator>
      <pubDate>Sat, 15 Feb 2025 03:59:05 +0000</pubDate>
      <link>https://forem.com/mainulspace/troubleshooting-mysterious-website-downtime-a-case-study-on-vps-dns-and-hosting-expiry-469</link>
      <guid>https://forem.com/mainulspace/troubleshooting-mysterious-website-downtime-a-case-study-on-vps-dns-and-hosting-expiry-469</guid>
      <description>&lt;p&gt;Troubleshooting Website downtime can be a frustrating experience, especially when there’s no clear sign of what went wrong.&lt;/p&gt;

&lt;p&gt;Recently, we encountered an issue where two websites hosted on our &lt;a href="https://go.webdevstory.com/namecheap-vps" rel="noopener noreferrer"&gt;VPS&lt;/a&gt; were behaving differently- one was accessible, while the other was completely unreachable.&lt;/p&gt;

&lt;p&gt;This led us on a deep troubleshooting journey to diagnose and fix the problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Initial Troubleshooting Steps for Website Downtime
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Two websites on the same VPS were down, but&lt;/strong&gt; not in the same way.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Other websites on the same VPS and the same cPanel account were working fine&lt;/strong&gt;, resolving correctly, and loading without issues.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;However, one of the downed websites returned an NXDOMAIN error&lt;/strong&gt;, indicating that its DNS records did not contain the domain name.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;There was no DNS resolution, server response, or immediate explanation for why this happened.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🛠 Step 1: Identifying the Problem
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;We first ran &lt;code&gt;nslookup&lt;/code&gt; and &lt;code&gt;dig&lt;/code&gt; to check DNS resolution.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The &lt;strong&gt;NXDOMAIN&lt;/strong&gt; error meant the domain was not resolving.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Checked the &lt;strong&gt;WHOIS record&lt;/strong&gt; to confirm domain status and name servers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Discovered the domain was using &lt;strong&gt;parked nameservers&lt;/strong&gt; instead of pointing to our VPS.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🛠 Step 2: Ensuring the VPS is Running
&lt;/h2&gt;

&lt;p&gt;Before jumping into DNS-related issues, we verified that our VPS was running. If the VPS itself was down, that could explain why the sites weren’t loading. We ran tests on our server:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Checked system uptime and resource usage to ensure no crashes or outages.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Loaded other sites hosted on the same VPS to confirm they were working.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Confirmed that this was a site-specific issue rather than a &lt;a href="https://www.webdevstory.com/server-troubleshooting/" rel="noopener noreferrer"&gt;server-wide problem&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Since other sites on the VPS were working perfectly fine, we ruled out a VPS failure and focused on investigating domain-specific problems.&lt;/p&gt;

&lt;h2&gt;
  
  
  🔧 Step 3: Investigating Potential Causes
&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/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9kuzgzll3360bup9mpts.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%2F9kuzgzll3360bup9mpts.png" alt="DNS propagation check showing missing A records globally" width="800" height="669"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Domain Expiry Check
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Used &lt;a href="https://who.is/" rel="noopener noreferrer"&gt;&lt;strong&gt;WHOIS&lt;/strong&gt;&lt;/a&gt; to confirm the domain was active (not expired).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Verified the &lt;strong&gt;registration details&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  DNS Propagation Check
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Used &lt;a href="https://www.whatsmydns.net/" rel="noopener noreferrer"&gt;whatsmydns.net&lt;/a&gt; to check global DNS resolution.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Found that the &lt;strong&gt;A record was missing everywhere&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Checking Web Hosting &amp;amp; Server Status
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Verified that the &lt;strong&gt;VPS was running&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Checked / status to confirm the &lt;strong&gt;web server was active&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ensured the &lt;strong&gt;firewall wasn’t blocking access&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🛠 Step 4: Different Causes for Each Website’s Issue
&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/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpbnelykbghe3z81fz3o4.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%2Fpbnelykbghe3z81fz3o4.png" alt="Domain name pointing to parked nameservers instead of VPS" width="800" height="411"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;While both websites had been moved to our hosting environment, they still had some time left on their previous hosting plans, and we leveraged their &lt;strong&gt;cPanel zone editor&lt;/strong&gt; to host them from our VPS.&lt;/p&gt;

&lt;p&gt;After diagnosing the problem, we found that both websites had different underlying issues:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;One website’s DNS records were completely removed&lt;/strong&gt; when the previous hosting provider expired, making it impossible to resolve.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The other website changed its nameservers&lt;/strong&gt;, pointing to a location different from our VPS.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Although both websites faced similar downtime issues, the root causes were distinct and required different solutions.&lt;/p&gt;

&lt;h2&gt;
  
  
  🛠 Step 5: Fixing the DNS Issue
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Updating the Nameservers
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Logged into the &lt;strong&gt;domain registrar&lt;/strong&gt; and replaced the &lt;strong&gt;parked nameservers&lt;/strong&gt; with the correct ones from our hosting provider.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added an &lt;strong&gt;A record&lt;/strong&gt; pointing to our &lt;strong&gt;VPS IP&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Verifying Propagation
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;After updating, we &lt;strong&gt;waited for DNS changes to propagate&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Used CLI (&lt;code&gt;nslookup&lt;/code&gt;, &lt;code&gt;dig&lt;/code&gt;) and online tools to &lt;strong&gt;track progress&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Clearing DNS Cache
&lt;/h2&gt;

&lt;p&gt;To speed up the local resolution, we cleared the DNS cache:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl restart systemd-resolved &lt;span class="c"&gt;# Linux&lt;/span&gt;
 ipconfig /flushdns &lt;span class="c"&gt;# Windows&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  🛠 Step 6: When Hosting Providers Delete DNS Records
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Why Does This Happen?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Some hosting companies &lt;strong&gt;automatically remove all DNS zone records&lt;/strong&gt; when a hosting plan expires.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Even if the &lt;strong&gt;domain is registered&lt;/strong&gt;, the system wipes out the DNS settings, making the website inaccessible.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Users assume that just pointing the domain to a new hosting provider will work, but without DNS records, nothing resolves.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to Fix It
&lt;/h2&gt;

&lt;p&gt;1 — Contact the Previous Hosting Provider&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;If your previous hosting still controls the nameservers, ask them to &lt;strong&gt;restore the DNS zone&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You must manually set up DNS records if they refuse or delete everything permanently.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2 — Manually Add New DNS Records
&lt;/h2&gt;

&lt;p&gt;If the old provider deleted all records, you need to configure them manually:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;A Record&lt;/strong&gt; → Points the domain to the new hosting IP.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;CNAME Record&lt;/strong&gt; → For subdomains like &lt;code&gt;www&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;MX Records&lt;/strong&gt; → If using email hosting.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;TXT Records&lt;/strong&gt; → For email authentication (SPF, DKIM).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🚀 Step 7: Confirming the Fix
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;After propagation was completed, we &lt;strong&gt;reran tests&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The domain is now &lt;strong&gt;properly resolved&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The website was &lt;strong&gt;accessible again&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🔑 Key Lessons from Troubleshooting Website Downtime
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Always check &lt;strong&gt;DNS records, WHOIS status, and propagation&lt;/strong&gt; when facing downtime.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;VPS and DNS issues &lt;strong&gt;are not always the same; identify&lt;/strong&gt; the root cause before applying fixes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Hosting providers may &lt;strong&gt;delete DNS records upon expiration&lt;/strong&gt;, so it’s crucial to back up DNS settings.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Monitor &lt;strong&gt;nameservers and A records&lt;/strong&gt; after domain migrations to avoid misconfiguration.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🚀 Before You Go:&lt;/p&gt;

&lt;p&gt;👏 Found this guide helpful? Give it a like!&lt;br&gt;
💬 Got thoughts? Share your insights!&lt;br&gt;
🔄 Know someone who needs this? Share the post!&lt;/p&gt;

&lt;p&gt;🌟 Your support keeps us going!&lt;/p&gt;

&lt;p&gt;📩 &lt;strong&gt;Stay updated with the latest tech trends, tutorials, and tips&lt;/strong&gt; straight to your inbox!&lt;/p&gt;

&lt;h3&gt;
  
  
  👉 &lt;a href="https://newsletter.webdevstory.com/" rel="noopener noreferrer"&gt;Subscribe&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Note: Some links on this page might be affiliate links. If you make a purchase through these links, I may earn a small commission at no extra cost to you. Thanks for your support!&lt;/p&gt;

</description>
      <category>troubleshooting</category>
      <category>websitedowntime</category>
      <category>serveradministration</category>
      <category>dnspropagation</category>
    </item>
    <item>
      <title>Multi-Cloud Strategies: Agility, Resilience, and Cost Optimization</title>
      <dc:creator>Mainul Hasan</dc:creator>
      <pubDate>Sun, 26 Jan 2025 06:32:35 +0000</pubDate>
      <link>https://forem.com/mainulspace/multi-cloud-strategies-agility-resilience-and-cost-optimization-9f9</link>
      <guid>https://forem.com/mainulspace/multi-cloud-strategies-agility-resilience-and-cost-optimization-9f9</guid>
      <description>&lt;p&gt;The rise of multi-cloud environments has redefined how organizations manage their IT infrastructure. Now, businesses can be more flexible and reliable and save money using multiple cloud service providers.&lt;/p&gt;

&lt;p&gt;In this blog, we will discuss strategies for effective multi-cloud management, key challenges, and future trends.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Multi-Cloud?
&lt;/h2&gt;

&lt;p&gt;Organizations are increasingly adopting multi-cloud strategies to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Avoid Vendor Lock-In:&lt;/strong&gt; Businesses can lower the risks of relying on just one vendor by splitting their workloads among several providers. The reliance on a single vendor can result in dependencies that may restrict flexibility and increase costs over time. Multi-cloud strategies enable enterprises to shift effortlessly and avoid getting locked into a single provider’s ecosystem.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Enhance Agility:&lt;/strong&gt; Different cloud providers offer specialized services specific to certain workloads. For instance, some providers excel in machine learning tools, while others specialize in high-performance computing. This allows businesses to choose the services most suitable for their specific needs, promoting operational efficiency and innovation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Optimize Costs:&lt;/strong&gt; Multi-cloud setups allow for intelligent cost management by leveraging price differences across providers. Organizations can allocate workloads dynamically, using analytics to choose the most economical options while maintaining optimal performance. This approach reduces unnecessary expenses and maximizes return on investment.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Improve Resilience:&lt;/strong&gt; Outages and disruptions can significantly impact business continuity. Businesses can ensure redundancy and fail-over capabilities by distributing resources across multiple clouds. This resilience minimizes downtime and maintains service delivery even when individual providers face technical challenges.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Key Challenges in Multi-Cloud Management
&lt;/h2&gt;

&lt;p&gt;While multi-cloud strategies offer many benefits, they also pose significant challenges:&lt;/p&gt;

&lt;h3&gt;
  
  
  1 — Interoperability Issues
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt; Inconsistent APIs, data formats, and service models hinder seamless integration. Differences between providers require substantial configuration effort, leading to inefficiencies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt; To bridge gaps, use middleware solutions, such as API gateways and integration platforms. Standardized interfaces, like OpenAPI specifications, promote easier integration across platforms.&lt;/p&gt;

&lt;h3&gt;
  
  
  2 — Data Consistency and Portability
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt; Variances in storage architectures, transfer mechanisms, and access protocols can lead to &lt;a href="https://www.webdevstory.com/big-data-storage-trends-insights/" rel="noopener noreferrer"&gt;fragmented data ecosystems&lt;/a&gt;. These inconsistencies hinder real-time analytics and complicate cross-platform operations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt; Adopt cloud-agnostic storage and implement policies for data normalization. Leveraging tools like data lakes or hybrid storage solutions can streamline consistency. Use automated migration tools to ensure portability.&lt;/p&gt;

&lt;h3&gt;
  
  
  3 — Security and Compliance
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt; Multi-cloud setups increase the surface area for potential security breaches. Diverse compliance requirements across regions further complicate governance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt; Implement advanced security frameworks incorporating &lt;a href="https://www.microsoft.com/en-us/security/business/security-101/what-is-identity-access-management-iam" rel="noopener noreferrer"&gt;identity and access management (IAM)&lt;/a&gt;, encryption, and zero-trust models. Automate compliance checks using AI-driven governance tools, ensuring adherence to industry standards like GDPR or HIPAA.&lt;/p&gt;

&lt;h3&gt;
  
  
  4 — Governance
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt; Monitoring policies, usage patterns, and billing across providers becomes complex without centralized control, potentially leading to inefficiencies or overspending.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt; Establish centralized governance platforms that integrate monitoring tools, such as &lt;a href="https://aws.amazon.com/cloudwatch/" rel="noopener noreferrer"&gt;AWS CloudWatch&lt;/a&gt; or &lt;a href="https://cloud.google.com/blog/topics/developers-practitioners/introduction-google-clouds-operations-suite" rel="noopener noreferrer"&gt;Google Operations Suite&lt;/a&gt;. Use AI-powered dashboards to provide real-time insights and enforce policy adherence dynamically.&lt;/p&gt;

&lt;h3&gt;
  
  
  5 — Cost Management
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt; Without visibility across all cloud platforms, costs can escalate unpredictably due to duplicated resources or underutilization.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt; Employ cloud cost management tools, like &lt;a href="https://www.finops.org/introduction/what-is-finops/" rel="noopener noreferrer"&gt;FinOps&lt;/a&gt; practices, to gain insights into expenditure: Automate budget alerts and resource optimization recommendations to maintain cost efficiency.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://amzn.to/4aubMLK" rel="noopener noreferrer"&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%2Fai8id50vpm5zj6lrjg0r.jpg" alt="Book cover of 'Cloud Computing: Theory and Practice' by Dan C. Marinescu" width="406" height="500"&gt;&lt;/a&gt;&lt;/p&gt;
A fundamental book by Dan C. Marinescu that explores the core concepts, architectures, and best practices in cloud computing.



&lt;h2&gt;
  
  
  Core Strategies for Success
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1 — Cloud Orchestration
&lt;/h3&gt;

&lt;p&gt;Tools like &lt;a href="https://kubernetes.io/" rel="noopener noreferrer"&gt;&lt;strong&gt;Kubernetes&lt;/strong&gt;&lt;/a&gt;, , and are pivotal for orchestrating multi-cloud operations.&lt;/p&gt;

&lt;p&gt;Kubernetes enables application containerization, making deployment across cloud platforms seamless. Terraform streamlines infrastructure provisioning through its infrastructure-as-code approach, while Ansible automates configuration management and application deployment.&lt;/p&gt;

&lt;p&gt;These tools enhance scalability, reduce manual errors, and improve operational efficiency.&lt;/p&gt;

&lt;h3&gt;
  
  
  2 — Optimization Techniques
&lt;/h3&gt;

&lt;p&gt;Optimization techniques focus on maintaining a balance between performance and costs. &lt;strong&gt;Dynamic workload placement&lt;/strong&gt; assigns tasks to the optimal resources based on real-time performance metrics.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Auto-scaling&lt;/strong&gt; dynamically adjusts resources to meet varying demands, ensuring optimal utilization without overspending. &lt;strong&gt;Predictive cost modeling&lt;/strong&gt; leverages data analytics to expect expenses and optimize budget allocation proactively.&lt;/p&gt;

&lt;h3&gt;
  
  
  3 — Centralized Governance
&lt;/h3&gt;

&lt;p&gt;Centralized governance integrates tools and frameworks to simplify oversight across multiple providers. Organizations can monitor compliance, resource usage, and policy enforcement by unifying dashboards in real-time.&lt;/p&gt;

&lt;p&gt;Platforms like &lt;strong&gt;AWS Organizations&lt;/strong&gt; or &lt;strong&gt;Azure Policy&lt;/strong&gt; help ensure that security, compliance, and budget management are the same in all cloud environments.&lt;/p&gt;

&lt;h2&gt;
  
  
  Emerging Trends
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1 — Edge Computing Integration
&lt;/h3&gt;

&lt;p&gt;As businesses increasingly prioritize latency-sensitive applications, &lt;a href="https://www.ibm.com/think/topics/edge-computing" rel="noopener noreferrer"&gt;&lt;strong&gt;edge computing&lt;/strong&gt;&lt;/a&gt; has become essential.&lt;/p&gt;

&lt;p&gt;Edge computing reduces latency and improves real-time decision-making by processing data closer to where it comes from.&lt;/p&gt;

&lt;p&gt;Integrating edge nodes with multi-cloud architectures ensures seamless data flow and operational efficiency for IoT and other high-demand scenarios.&lt;/p&gt;

&lt;h3&gt;
  
  
  2 — Serverless Architectures
&lt;/h3&gt;

&lt;p&gt;Serverless architectures eliminate the need for infrastructure management by enabling developers to focus solely on application logic.&lt;br&gt;&lt;br&gt;
Businesses using functions-as-a-service (FaaS) models like or &lt;strong&gt;Google Cloud Functions&lt;/strong&gt; can save money and grow.&lt;/p&gt;

&lt;p&gt;These architectures complement multi-cloud setups by providing flexibility in deploying functions across platforms as needed.&lt;/p&gt;

&lt;h3&gt;
  
  
  3 — AI-Powered Management
&lt;/h3&gt;

&lt;p&gt;Artificial Intelligence (AI) is transforming multi-cloud management. AI-driven tools analyze patterns in resource utilization, optimize workload distribution, and provide predictive maintenance insights.&lt;/p&gt;

&lt;p&gt;Automated compliance monitoring and anomaly detection enhance security and governance, ensuring efficient operations across complex multi-cloud environments.&lt;/p&gt;

&lt;h2&gt;
  
  
  Practical Tips for Implementation
&lt;/h2&gt;

&lt;p&gt;Start by identifying specific goals, such as cost optimization, performance improvement, or increased resilience.&lt;br&gt;&lt;br&gt;
Map workloads to the most suitable cloud providers based on their strengths. Clearly define governance structures and metrics to measure success.&lt;/p&gt;

&lt;p&gt;Use containerization tools like &lt;strong&gt;Docker&lt;/strong&gt; to enhance portability and consistency across platforms.&lt;br&gt;&lt;br&gt;
Container orchestration frameworks, such as &lt;strong&gt;Kubernetes&lt;/strong&gt;, simplify deployment and scaling across multi-cloud environments,&lt;br&gt;&lt;br&gt;
ensuring seamless provider transitions.&lt;/p&gt;

&lt;p&gt;Deploy robust monitoring tools to track performance, resource utilization, and costs across providers. Services like &lt;strong&gt;Prometheus&lt;/strong&gt;, &lt;strong&gt;Grafana&lt;/strong&gt;, or native cloud monitoring tools provide valuable insights and help identify inefficiencies in real-time. Automate alerts for anomalies to address issues proactively.&lt;/p&gt;

&lt;p&gt;Regularly train your IT teams on emerging multi-cloud technologies, best practices, and security protocols. Encourage certifications in relevant tools like &lt;strong&gt;Kubernetes&lt;/strong&gt; or &lt;strong&gt;Terraform&lt;/strong&gt; to ensure your team stays ahead of the curve. Building a knowledgeable team reduces implementation risks and ensures smoother operations.&lt;/p&gt;

&lt;p&gt;Continuously adapt strategies based on evolving needs and performance data. Agile methodologies allow for incremental improvements, which help businesses improve their multi-cloud strategy and adapt to changing customer needs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://amzn.to/42kUuyH" rel="noopener noreferrer"&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%2Fwz1eryjhgvtqr53fbjxb.jpg" alt="Book cover of ‘Multi-Cloud Strategy for Cloud Architects’ by Jeroen Mulder" width="800" height="986"&gt;&lt;/a&gt;&lt;/p&gt;
Jeroen Mulder’s expert guide on designing and managing multi-cloud environments with FinOps, BaseOps, and DevSecOps strategies.



&lt;h2&gt;
  
  
  Use Cases for Multi-Cloud Strategies
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;E-commerce:&lt;/strong&gt; Online retailers rely on multi-cloud setups to handle massive traffic spikes during sales events.&lt;br&gt;&lt;br&gt;
By using &lt;a href="https://www.webdevstory.com/database-performance-optimization/" rel="noopener noreferrer"&gt;high-performance databases&lt;/a&gt; for transactional data and leveraging CDNs for static content,&lt;br&gt;&lt;br&gt;
businesses ensure fast, reliable shopping experiences for customers worldwide.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Healthcare:&lt;/strong&gt; Healthcare organizations store sensitive patient data in compliant local clouds while utilizing global clouds&lt;br&gt;&lt;br&gt;
for data analysis and research on a larger scale. This approach balances privacy concerns with the need for innovation in medical research.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Media and Entertainment:&lt;/strong&gt; Companies distribute rendering workloads to high-performance clouds while storing completed projects&lt;br&gt;&lt;br&gt;
in cost-effective storage solutions. For live-streaming, edge servers ensure minimal latency, enhancing the viewer experience.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Financial Services:&lt;/strong&gt; Banks and financial institutions use multiple cloud platforms to optimize transaction speeds,&lt;br&gt;&lt;br&gt;
maintain compliance across jurisdictions, and ensure data redundancy for disaster recovery.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tools for Multi-Cloud Management
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;CloudHealth by VMware:&lt;/strong&gt; Offers advanced analytics for cost tracking, security assessments, and resource utilization across cloud environments,&lt;br&gt;&lt;br&gt;
helping organizations make data-driven decisions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;RightScale (Flexera):&lt;/strong&gt; This platform enables comprehensive resource management, automation, and governance, ensuring organizations maintain control over their multi-cloud deployments.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;IBM Multi-Cloud Manager:&lt;/strong&gt; Tailored for Kubernetes clusters, this tool simplifies the management of containerized applications across diverse clouds, ensuring consistency and efficiency.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Azure Arc and Google Anthos:&lt;/strong&gt; Provide unified control over hybrid and multi-cloud environments, allowing seamless deployment and management of workloads across platforms.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Cost Optimization Best Practices
&lt;/h2&gt;

&lt;p&gt;Tools like &lt;strong&gt;AWS Cost Explorer&lt;/strong&gt; and &lt;strong&gt;CloudCheckr&lt;/strong&gt; provide detailed insights into cloud expenditure, enabling organizations to identify cost drivers and optimize spending.&lt;/p&gt;

&lt;p&gt;Schedule non-critical workloads, such as batch processing or backups, during off-peak hours to take advantage of lower rates.&lt;/p&gt;

&lt;p&gt;Regular checks of cloud resources help find instances that aren’t being used or used enough. Turning off these tools can save a lot of money.&lt;/p&gt;

&lt;p&gt;Leverage spot instances for short-term workloads or non-critical operations. These discounted resources offer substantial cost savings while maintaining efficiency.&lt;/p&gt;

&lt;h2&gt;
  
  
  Security in Multi-Cloud
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1 — Zero Trust Models
&lt;/h3&gt;

&lt;p&gt;Ensure all your multiple clouds follow the “never trust, always verify” rule. This means checking every entry request, no matter where it comes from, and watching what users do. When used with micro-segmentation, it isolates tasks to lessen the effect of potential breaches.&lt;/p&gt;

&lt;h3&gt;
  
  
  2 — IAM Tools
&lt;/h3&gt;

&lt;p&gt;Advanced identity and access management platforms, such as &lt;strong&gt;Okta&lt;/strong&gt; or &lt;strong&gt;Azure AD&lt;/strong&gt;, let you control user rights from one place. Features like multi-factor authentication (MFA) and conditional access policies improve total security by ensuring that only allowed users can access essential resources.&lt;/p&gt;

&lt;h3&gt;
  
  
  3 — Data Encryption
&lt;/h3&gt;

&lt;p&gt;Cloud-native encryption tools or third-party solutions like &lt;strong&gt;HashiCorp Vault&lt;/strong&gt; should always secure data, whether it’s at rest or in transit. Even if intercepted during transmission, end-to-end encryption keeps your private data safe.&lt;/p&gt;

&lt;h3&gt;
  
  
  4 — Regular Audits
&lt;/h3&gt;

&lt;p&gt;Conduct frequent security audits to evaluate the effectiveness of implemented measures. Penetration testing, vulnerability assessments, and compliance checks against frameworks like SOC 2 or ISO 27001 help identify and mitigate risks proactively.&lt;/p&gt;

&lt;h2&gt;
  
  
  Success Stories in Multi-Cloud Implementation
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1 — Netflix
&lt;/h3&gt;

&lt;p&gt;By leveraging AWS for its core video delivery services and Google Cloud for analytics, Netflix ensures seamless content streaming worldwide. The company’s multi-cloud strategy balances performance and cost while maintaining operational flexibility.&lt;/p&gt;

&lt;h3&gt;
  
  
  2 — HSBC
&lt;/h3&gt;

&lt;p&gt;The global banking giant uses AWS, Azure, and Google Cloud to distribute workloads, improving resilience and adhering to complex regulatory requirements. This setup enhances disaster recovery and reduces dependency on a single provider, ensuring business continuity.&lt;/p&gt;

&lt;h3&gt;
  
  
  3 — Spotify
&lt;/h3&gt;

&lt;p&gt;Spotify optimizes user experiences by employing multiple clouds for different functions. Google Cloud performs data analytics, while AWS hosts and delivers content, thus ensuring high availability and scalability during peak usage times.&lt;/p&gt;

&lt;h2&gt;
  
  
  Future of Multi-Cloud
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1 — Quantum Computing
&lt;/h3&gt;

&lt;p&gt;Adding quantum computing to multi-cloud environments will change many fields requiring complex simulations and cryptographic operations.&lt;br&gt;&lt;br&gt;
Multi-cloud quantum setups will enable organizations to tap into quantum processing capabilities offered by different providers. This approach will benefit material science, financial modeling, drug discovery, and artificial intelligence.&lt;/p&gt;

&lt;p&gt;As quantum computing becomes more accessible, organizations will leverage the unique strengths of various quantum-enabled cloud platforms for optimized results.&lt;/p&gt;

&lt;h3&gt;
  
  
  2 — Decentralized Clouds
&lt;/h3&gt;

&lt;p&gt;Blockchain-based decentralized cloud platforms are gaining traction for their ability to enhance privacy, data security, and redundancy. Unlike traditional centralized cloud services, decentralized clouds distribute data across multiple nodes, eliminating single points of failure.&lt;/p&gt;

&lt;p&gt;This method ensures that data is more securely stored and less likely to be stolen during cyberattacks. Businesses and startups are investigating these systems to meet the growing demand for openness and trust in data storage and processing.&lt;/p&gt;

&lt;h3&gt;
  
  
  3 — Sustainability
&lt;/h3&gt;

&lt;p&gt;With climate change becoming a global concern, sustainability is a significant focus for the future of multi-cloud strategies.&lt;br&gt;&lt;br&gt;
Cloud providers are increasingly adopting green energy solutions, such as renewable power for data centers and energy-efficient cooling systems.&lt;/p&gt;

&lt;p&gt;Organizations are also prioritizing workload distribution to data centers with lower carbon footprints. Multi-cloud setups are significant for protecting the environment because they let businesses choose service providers committed to eco-friendly practices.&lt;/p&gt;

&lt;p&gt;This ensures they follow environmental laws and their corporate social responsibility goals.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common Pitfalls to Avoid
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Lack of a Unified Strategy&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Mistake:&lt;/strong&gt; Jumping into multi-cloud without clear goals or governance policies.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Solution:&lt;/strong&gt; Develop a comprehensive strategy that aligns with business goals, including workload allocation, cost optimization, and compliance management.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Underestimating Security Complexities&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Mistake:&lt;/strong&gt; Assuming security practices from one cloud provider apply to all.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Solution:&lt;/strong&gt; Customize security frameworks for each provider, ensuring compatibility with multi-cloud security tools like IAM and encryption systems.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Ignoring Interoperability&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Mistake:&lt;/strong&gt; Selecting providers without considering API compatibility or data portability.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Solution:&lt;/strong&gt; Choose vendors that support open standards and ensure tools for middleware or orchestration are in place.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Overlooking Cost Management&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Mistake:&lt;/strong&gt; Losing track of spending across multiple providers, leading to unexpected expenses.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Solution:&lt;/strong&gt; Use centralized cost management tools and regularly audit cloud usage.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Failure to Train Teams&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Mistake:&lt;/strong&gt; Assuming existing IT skills suffice for managing multi-cloud environments.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Solution:&lt;/strong&gt; Invest in team training in multi-cloud tools and best practices.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Checklist for Implementation
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Define Objectives:&lt;/strong&gt; Identify key goals, such as cost savings, improved performance, or resilience.&lt;br&gt;&lt;br&gt;
Map workloads to appropriate cloud providers based on strengths.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Choose Providers:&lt;/strong&gt; Evaluate providers for features, compliance, pricing, and service-level agreements (SLAs).&lt;br&gt;&lt;br&gt;
Consider hybrid or specialized cloud services for unique needs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Prepare Infrastructure:&lt;/strong&gt; &lt;a href="https://www.webdevstory.com/scalable-cloud-data-management-key-concepts/" rel="noopener noreferrer"&gt;Leverage containerization and orchestration&lt;/a&gt; tools like Kubernetes to ensure portability.&lt;br&gt;&lt;br&gt;
Establish secure connections between on-premises and cloud systems.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Set Up Governance:&lt;/strong&gt; Implement policies for access control, compliance, and cost management.&lt;br&gt;&lt;br&gt;
Use tools like Azure Policy or AWS Organizations for centralized governance.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Monitor and Optimize:&lt;/strong&gt; Deploy monitoring tools to track performance and costs.&lt;br&gt;&lt;br&gt;
Continuously optimize workload allocation based on analytics.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Comparative Analysis of Leading Multi-Cloud Providers
&lt;/h2&gt;

&lt;p&gt;A comparative look at top providers can help businesses select the right combination:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;AWS&lt;/th&gt;
&lt;th&gt;Google Cloud&lt;/th&gt;
&lt;th&gt;Microsoft Azure&lt;/th&gt;
&lt;th&gt;IBM Cloud&lt;/th&gt;
&lt;th&gt;Oracle Cloud&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Strengths&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Wide range of services, global reach&lt;/td&gt;
&lt;td&gt;AI/ML and big data analytics&lt;/td&gt;
&lt;td&gt;Seamless integration with Microsoft tools&lt;/td&gt;
&lt;td&gt;Enterprise-grade AI and hybrid solutions&lt;/td&gt;
&lt;td&gt;Robust database and ERP integration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Pricing&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Pay-as-you-go, cost calculators available&lt;/td&gt;
&lt;td&gt;Competitive pricing for data analytics&lt;/td&gt;
&lt;td&gt;Discounts for hybrid setups&lt;/td&gt;
&lt;td&gt;Competitive pricing for enterprise clients&lt;/td&gt;
&lt;td&gt;Cost-effective for database-heavy workloads&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Compliance&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Comprehensive, supports HIPAA, GDPR&lt;/td&gt;
&lt;td&gt;Industry-specific certifications&lt;/td&gt;
&lt;td&gt;Broad compliance coverage, hybrid compliance tools&lt;/td&gt;
&lt;td&gt;Leader in data security and privacy&lt;/td&gt;
&lt;td&gt;Optimized for Oracle database users&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ease of Use&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Flexible but complex for beginners&lt;/td&gt;
&lt;td&gt;Developer-friendly interface&lt;/td&gt;
&lt;td&gt;Integrated with Microsoft ecosystem&lt;/td&gt;
&lt;td&gt;Focused on enterprise IT professionals&lt;/td&gt;
&lt;td&gt;Specialized in Oracle ecosystem users&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Best Use Cases&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Enterprises with diverse needs, scalability&lt;/td&gt;
&lt;td&gt;Data-driven applications, startups&lt;/td&gt;
&lt;td&gt;Organizations using Microsoft products&lt;/td&gt;
&lt;td&gt;Industries needing advanced AI/ML and hybrid cloud solutions&lt;/td&gt;
&lt;td&gt;ERP-heavy enterprises, particularly Oracle users&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Support for Multi-Cloud&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Strong tools like Outposts, ECS Anywhere&lt;/td&gt;
&lt;td&gt;Anthos for hybrid/multi-cloud&lt;/td&gt;
&lt;td&gt;Azure Arc for hybrid/multi-cloud&lt;/td&gt;
&lt;td&gt;Red Hat OpenShift for hybrid environments&lt;/td&gt;
&lt;td&gt;Multi-cloud integration for Oracle databases&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A comparative analysis of major cloud service providers, including AWS, Google Cloud, Microsoft Azure, IBM Cloud, and Oracle Cloud, highlighting their strengths, pricing models, compliance, ease of use, and best use cases.&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;p&gt;Explore these valuable resources to deepen your understanding of multi-cloud strategies, tools, and best practices.&lt;/p&gt;

&lt;h3&gt;
  
  
  📚 Articles &amp;amp; Guides
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://cloud.google.com/learn/what-is-multicloud" rel="noopener noreferrer"&gt;Google Cloud’s Multi-Cloud Strategy&lt;/a&gt; — Learn how Google Cloud enables multi-cloud solutions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://aws.amazon.com/solutions/case-studies/netflix/" rel="noopener noreferrer"&gt;Netflix’s Cloud Strategy with AWS&lt;/a&gt; — Case study on how Netflix uses AWS for scalability.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/" rel="noopener noreferrer"&gt;Microsoft Azure Cloud Adoption Framework&lt;/a&gt; — Best practices for adopting cloud at scale.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.cloudflare.com/learning/cloud/what-is-vendor-lock-in/" rel="noopener noreferrer"&gt;What is Vendor Lock-In?&lt;/a&gt; — Understanding the risks and how to avoid them.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.ibm.com/think/topics/multicloud" rel="noopener noreferrer"&gt;IBM Cloud’s Multi-Cloud Strategy&lt;/a&gt; — IBM’s insights on hybrid and multi-cloud environments.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🔧 Tools &amp;amp; Services
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.cloudhealthtech.com/" rel="noopener noreferrer"&gt;CloudHealth by VMware&lt;/a&gt; — Cloud cost management and security.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.flexera.com/products/cloud-management-platform" rel="noopener noreferrer"&gt;Flexera (RightScale)&lt;/a&gt; — Multi-cloud governance and optimization.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://prometheus.io/" rel="noopener noreferrer"&gt;Prometheus&lt;/a&gt; — Open-source monitoring for multi-cloud infrastructures.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://aws.amazon.com/aws-cost-management/aws-cost-explorer/" rel="noopener noreferrer"&gt;AWS Cost Explorer&lt;/a&gt; — Track and manage cloud costs effectively.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://azure.microsoft.com/en-us/services/azure-arc/" rel="noopener noreferrer"&gt;Azure Arc&lt;/a&gt; — Manage hybrid and multi-cloud environments.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🎓 Certification &amp;amp; Learning
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://training.linuxfoundation.org/certification/certified-kubernetes-administrator-cka/" rel="noopener noreferrer"&gt;Kubernetes Certification (CKA)&lt;/a&gt; — Learn Kubernetes for cloud orchestration.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.terraform.io/" rel="noopener noreferrer"&gt;Terraform Certification&lt;/a&gt; — Master infrastructure as code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://imp.i384100.net/kOz12n" rel="noopener noreferrer"&gt;Introduction to Cloud Computing&lt;/a&gt; — Fundamentals of cloud strategies.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🚀 Before You Go:&lt;/p&gt;

&lt;p&gt;👏 Found this guide helpful? Give it a like!&lt;br&gt;
💬 Got thoughts? Share your insights!&lt;br&gt;
🔄 Know someone who needs this? Share the post!&lt;/p&gt;

&lt;p&gt;🌟 Your support keeps us going!&lt;/p&gt;

&lt;p&gt;📩 &lt;strong&gt;Stay updated with the latest tech trends, tutorials, and tips&lt;/strong&gt; straight to your inbox!&lt;/p&gt;

&lt;h3&gt;
  
  
  👉 &lt;a href="https://newsletter.webdevstory.com/" rel="noopener noreferrer"&gt;Subscribe&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Note: Some links on this page might be affiliate links. If you make a purchase through these links, I may earn a small commission at no extra cost to you. Thanks for your support!&lt;/p&gt;

</description>
      <category>multicloud</category>
      <category>cloudcomputing</category>
      <category>aws</category>
      <category>googlecloud</category>
    </item>
    <item>
      <title>Fix 105 Common WordPress Issues Using Simple Code Snippets</title>
      <dc:creator>Mainul Hasan</dc:creator>
      <pubDate>Wed, 15 Jan 2025 16:11:25 +0000</pubDate>
      <link>https://forem.com/mainulspace/fix-105-common-wordpress-issues-using-simple-code-snippets-5a2n</link>
      <guid>https://forem.com/mainulspace/fix-105-common-wordpress-issues-using-simple-code-snippets-5a2n</guid>
      <description>&lt;p&gt;WordPress powers over 40% of the web, but even the most experienced users encounter frustrating issues like admin login problems, plugin conflicts, or mysterious white screens. These errors can feel overwhelming, but they don’t have to be.&lt;/p&gt;

&lt;p&gt;This guide provides 105 actionable tips and tricks to troubleshoot, debug, and optimize your WordPress site. At any stage of your &lt;a href="https://www.webdevstory.com/navigating-developer-journey/" rel="noopener noreferrer"&gt;development career&lt;/a&gt;, these solutions will help you tackle common challenges with ease and efficiency. Let’s dive in and get your site running smoothly!&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Resetting Admin Password via Database
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Option 1: Using phpMyAdmin to Update User Passwords
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Log in to your hosting control panel and access &lt;a href="https://www.phpmyadmin.net/" rel="noopener noreferrer"&gt;&lt;strong&gt;phpMyAdmin&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Navigate to your WordPress database, then locate and click the &lt;code&gt;wp_users&lt;/code&gt; table (or similar, depending on your table prefix).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Find the row corresponding to your admin username.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the &lt;code&gt;user_pass&lt;/code&gt; field, input a new password and select the &lt;strong&gt;MD5&lt;/strong&gt; option from the dropdown in the function column.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Save your changes. This will reset the password for the specified admin user.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;SQL Query for Updating Passwords Securely:&lt;/p&gt;

&lt;p&gt;If you prefer direct SQL, use the following query:&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_pass&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;MD5&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'newpassword'&lt;/span&gt;&lt;span class="p"&gt;)&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="s1"&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;Replace &lt;code&gt;newpassword&lt;/code&gt; with your new password and &lt;code&gt;admin&lt;/code&gt; with your admin username.&lt;/p&gt;

&lt;h2&gt;
  
  
  Option 2: Using Adminer to Update the Password
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Upload &lt;strong&gt;Adminer&lt;/strong&gt; to your hosting (download it from &lt;a href="https://www.adminer.org/" rel="noopener noreferrer"&gt;Adminer’s website&lt;/a&gt;).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Navigate to the Adminer interface through your browser.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Log in with your database credentials.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Locate the &lt;code&gt;wp_users&lt;/code&gt; table and find your admin user.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Manually update the &lt;code&gt;user_pass&lt;/code&gt; field:&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Enter the hashed version of your new password (use a hashing tool like a bcrypt generator).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If &lt;strong&gt;MD5&lt;/strong&gt; isn’t working on your server, try other supported hash algorithms like bcrypt or SHA256.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;6. Save your changes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Option 3: Updating Password via &lt;code&gt;functions.php&lt;/code&gt;
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Access your WordPress site files through FTP or your hosting’s File Manager.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Navigate to the active theme folder under &lt;code&gt;/wp-content/themes/your-active-theme/&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Open the &lt;code&gt;functions.php&lt;/code&gt; file and add the following code at the end:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&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;reset_admin_password&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_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Replace with the ID of your admin user&lt;/span&gt;
 &lt;span class="nf"&gt;wp_set_password&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'newpassword'&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="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="s1"&gt;'init'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'reset_admin_password'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Replace &lt;code&gt;newpassword&lt;/code&gt; with your desired password. Save the file and refresh your WordPress site. The system will update the password.&lt;/p&gt;

&lt;p&gt;After logging in, immediately remove the added code from &lt;code&gt;functions.php&lt;/code&gt; to avoid unnecessary execution.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Disabling All Plugins via Database
&lt;/h2&gt;

&lt;p&gt;To manage plugin conflicts, you can disable all plugins directly from the database:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Log in to &lt;strong&gt;phpMyAdmin&lt;/strong&gt; and go to the &lt;code&gt;wp_options&lt;/code&gt; table.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Search for the row where &lt;code&gt;option_name&lt;/code&gt; is &lt;code&gt;active_plugins&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Edit the &lt;code&gt;option_value&lt;/code&gt; and clear the content (set it to an empty array: &lt;code&gt;a:0:{}&lt;/code&gt;).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Save your changes to deactivate all plugins. This is useful when a plugin conflict causes issues.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  3. Fixing White Screen of Death
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Increasing PHP Memory Limits:
&lt;/h2&gt;

&lt;p&gt;Edit the &lt;code&gt;wp-config.php&lt;/code&gt; file in your WordPress root directory and 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="nb"&gt;define&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'WP_MEMORY_LIMIT'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'256M'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you’re on &lt;a href="https://go.webdevstory.com/namecheap-shared" rel="noopener noreferrer"&gt;shared hosting&lt;/a&gt;, ask your &lt;a href="https://go.webdevstory.com/namecheap" rel="noopener noreferrer"&gt;hosting provider&lt;/a&gt; if they support memory increases.&lt;/p&gt;

&lt;h2&gt;
  
  
  Checking for Conflicting Plugins or Themes:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Rename the &lt;code&gt;wp-content/plugins&lt;/code&gt; folder via FTP or File Manager to deactivate all plugins.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Similarly, rename the active theme folder in &lt;code&gt;wp-content/themes&lt;/code&gt; to revert to a default theme like &lt;code&gt;twentytwentythree&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  4. Debugging Tips
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Enabling &lt;code&gt;WP_DEBUG&lt;/code&gt; in &lt;code&gt;wp-config.php&lt;/code&gt;:
&lt;/h2&gt;

&lt;p&gt;Edit &lt;code&gt;wp-config.php&lt;/code&gt; and add or modify the following lines:&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="nb"&gt;define&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'WP_DEBUG'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nb"&gt;define&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'WP_DEBUG_LOG'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nb"&gt;define&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'WP_DEBUG_DISPLAY'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Errors will now log to the &lt;code&gt;wp-content/debug.log&lt;/code&gt; file.&lt;/p&gt;

&lt;h2&gt;
  
  
  Logging Errors to &lt;code&gt;debug.log&lt;/code&gt;:
&lt;/h2&gt;

&lt;p&gt;Enable &lt;code&gt;WP_DEBUG&lt;/code&gt; to record errors, warnings, or notices in the &lt;code&gt;debug.log&lt;/code&gt; file. Download and review the file to identify the root cause of issues.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. MU-Plugins for Essential Features
&lt;/h2&gt;

&lt;p&gt;Create must-use plugins for critical features:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Navigate to the &lt;code&gt;wp-content&lt;/code&gt; directory and create a folder named &lt;code&gt;mu-plugins&lt;/code&gt; if it doesn't exist.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add a PHP file with essential code snippets. For example:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Disable XML-RPC for security&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;'xmlrpc_enabled'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'__return_false'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;WordPress automatically loads MU-plugins, and the WordPress admin panel prevents disabling them, ensuring critical features always run.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Reverting Recent Changes
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Using Backups:
&lt;/h2&gt;

&lt;p&gt;Restore the site using backups from your hosting provider or a plugin like &lt;a href="https://updraftplus.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;UpdraftPlus&lt;/strong&gt;&lt;/a&gt;. Always test backups on a staging environment before applying them to the live site.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reverting File Changes Through FTP:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Connect to your site via FTP or File Manager.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Replace modified files with their original versions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If you’re unsure which files you’ve changed, use version control or compare timestamps to identify recent modifications.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  7. Changing the Site URL and Home URL via &lt;code&gt;wp-config.php&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Fixing URL issues when moving the site to a new domain:&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="nb"&gt;define&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'WP_HOME'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'https://example.com'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nb"&gt;define&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'WP_SITEURL'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'https://example.com'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  8. Restoring the Default .htaccess File
&lt;/h2&gt;

&lt;p&gt;Solving permalink or redirect issues by resetting the &lt;code&gt;.htaccess&lt;/code&gt; 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;# BEGIN WordPress&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;IfModule&lt;/span&gt; &lt;span class="n"&gt;mod_rewrite&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
 &lt;span class="nc"&gt;RewriteEngine&lt;/span&gt; &lt;span class="nc"&gt;On&lt;/span&gt;
 &lt;span class="nc"&gt;RewriteBase&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;
 &lt;span class="nc"&gt;RewriteRule&lt;/span&gt; &lt;span class="o"&gt;^&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="n"&gt;php&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nc"&gt;L&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
 &lt;span class="nc"&gt;RewriteCond&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="no"&gt;REQUEST_FILENAME&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;!-&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;
 &lt;span class="nc"&gt;RewriteCond&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="no"&gt;REQUEST_FILENAME&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;!-&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;
 &lt;span class="nc"&gt;RewriteRule&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="n"&gt;php&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nc"&gt;L&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;IfModule&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="c1"&gt;# END WordPress&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  9. Fixing File Permissions Issues
&lt;/h2&gt;

&lt;p&gt;Using simple shell commands to set the correct permissions:&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="n"&gt;find&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;to&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;wordpress&lt;/span&gt; 
        &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;type&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;exec&lt;/span&gt; &lt;span class="n"&gt;chmod&lt;/span&gt; 
        &lt;span class="mi"&gt;755&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="n"&gt;find&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;to&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;wordpress&lt;/span&gt; 
        &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;type&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;exec&lt;/span&gt; &lt;span class="n"&gt;chmod&lt;/span&gt; 
        &lt;span class="mi"&gt;644&lt;/span&gt; &lt;span class="p"&gt;{}&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;h2&gt;
  
  
  10. Removing Malware or Suspicious Code
&lt;/h2&gt;

&lt;p&gt;Querying for suspicious code in files:&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="n"&gt;grep&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="s1"&gt;'base64_decode'&lt;/span&gt; 
        &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;to&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;wordpress&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  11. Clearing Transients from the Database
&lt;/h2&gt;

&lt;p&gt;Speeding up the site by removing outdated transients:&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;delete_transient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'transient_name'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nf"&gt;delete_transient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'_transient_timeout_transient_name'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  12. Fixing Common Errors in &lt;code&gt;functions.php&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Preventing syntax errors by temporarily disabling &lt;code&gt;functions.php&lt;/code&gt; changes via FTP or &lt;a href="https://cpanel.net/" rel="noopener noreferrer"&gt;cPanel&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  13. Restoring the Default Theme
&lt;/h2&gt;

&lt;p&gt;Switching to a default theme using the database:&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="no"&gt;UPDATE&lt;/span&gt; &lt;span class="n"&gt;wp_options&lt;/span&gt; 
&lt;span class="no"&gt;SET&lt;/span&gt; &lt;span class="n"&gt;option_value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'twentytwentythree'&lt;/span&gt; 
&lt;span class="no"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;option_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'template'&lt;/span&gt; 
&lt;span class="k"&gt;OR&lt;/span&gt; &lt;span class="n"&gt;option_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'stylesheet'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  14. Forcing HTTPS on the Site
&lt;/h2&gt;

&lt;p&gt;Using &lt;code&gt;.htaccess&lt;/code&gt; to redirect all traffic to HTTPS:&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="nc"&gt;RewriteEngine&lt;/span&gt; &lt;span class="nc"&gt;On&lt;/span&gt;
&lt;span class="nc"&gt;RewriteCond&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="no"&gt;HTTPS&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="n"&gt;off&lt;/span&gt;
&lt;span class="nc"&gt;RewriteRule&lt;/span&gt; &lt;span class="o"&gt;^&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="o"&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;https&lt;/span&gt;&lt;span class="o"&gt;://%&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="no"&gt;HTTP_HOST&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="no"&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="nc"&gt;L&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nc"&gt;R&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;301&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  15. Blocking XML-RPC Requests
&lt;/h2&gt;

&lt;p&gt;Protecting the site from &lt;a href="https://www.webdevstory.com/server-troubleshooting/" rel="noopener noreferrer"&gt;brute force attacks&lt;/a&gt;:&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_filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'xmlrpc_enabled'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'__return_false'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  16. Fixing “Upload: Missing a Temporary Folder”
&lt;/h2&gt;

&lt;p&gt;Adding a temporary folder in &lt;code&gt;wp-config.php&lt;/code&gt;:&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="nb"&gt;define&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'WP_TEMP_DIR'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;dirname&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;__FILE__&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="s1"&gt;'/wp-content/temp/'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  17. Forcing Reinstall of Core Files
&lt;/h2&gt;

&lt;p&gt;Re-downloading WordPress core files to fix corrupted installations:&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="n"&gt;wp&lt;/span&gt; &lt;span class="n"&gt;core&lt;/span&gt; &lt;span class="n"&gt;download&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;force&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  18. Optimizing the Database
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.webdevstory.com/quick-wordpress-code-database-fix/" rel="noopener noreferrer"&gt;Cleaning up&lt;/a&gt; post revisions, spam comments, and more:&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="no"&gt;DELETE&lt;/span&gt; &lt;span class="no"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;wp_postmeta&lt;/span&gt; 
&lt;span class="no"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;meta_key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'_wp_old_slug'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  19. Fixing Email Sending Issues
&lt;/h2&gt;

&lt;p&gt;Using PHP’s &lt;code&gt;wp_mail()&lt;/code&gt; with SMTP:&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_action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'phpmailer_init'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'setup_phpmailer'&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;setup_phpmailer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$phpmailer&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
 &lt;span class="nv"&gt;$phpmailer&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;isSMTP&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
 &lt;span class="nv"&gt;$phpmailer&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nc"&gt;Host&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'smtp.example.com'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
 &lt;span class="nv"&gt;$phpmailer&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nc"&gt;SMTPAuth&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
 &lt;span class="nv"&gt;$phpmailer&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nc"&gt;Port&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;587&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
 &lt;span class="nv"&gt;$phpmailer&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nc"&gt;Username&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'user@example.com'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
 &lt;span class="nv"&gt;$phpmailer&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nc"&gt;Password&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'password'&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;h2&gt;
  
  
  20. Preventing Directory Browsing
&lt;/h2&gt;

&lt;p&gt;Adding security to &lt;code&gt;.htaccess&lt;/code&gt;:&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="nc"&gt;Options&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nc"&gt;Indexes&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  21. Regenerating .htaccess with Permalinks
&lt;/h2&gt;

&lt;p&gt;Updating permalinks to regenerate &lt;code&gt;.htaccess&lt;/code&gt; via Admin &amp;gt; Settings &amp;gt; Permalinks.&lt;/p&gt;

&lt;h2&gt;
  
  
  22. Fixing WordPress Cron Jobs
&lt;/h2&gt;

&lt;p&gt;Disabling WordPress cron and setting up a real cron job:&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="nb"&gt;define&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'DISABLE_WP_CRON'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Set up a cron job:&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="o"&gt;*/&lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;wget&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;q&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nc"&gt;O&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;https&lt;/span&gt;&lt;span class="o"&gt;://&lt;/span&gt;&lt;span class="n"&gt;example&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;wp&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;cron&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="n"&gt;php&lt;/span&gt;&lt;span class="o"&gt;?&lt;/span&gt;&lt;span class="n"&gt;doing_wp_cron&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;dev&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;amp;&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  23. Speed Optimization with Object Caching
&lt;/h2&gt;

&lt;p&gt;Configuring Memcached or Redis with WordPress.&lt;/p&gt;

&lt;h2&gt;
  
  
  24. Securing &lt;code&gt;wp-config.php&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Moving &lt;code&gt;wp-config.php&lt;/code&gt; to one directory above the WordPress root.&lt;/p&gt;

&lt;h2&gt;
  
  
  25. Fixing “Error Establishing Database Connection”
&lt;/h2&gt;

&lt;p&gt;Check and repair the database in &lt;code&gt;wp-config.php&lt;/code&gt;:&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="nb"&gt;define&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'WP_ALLOW_REPAIR'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Visit &lt;a href="https://example.com/wp-admin/maint/repair.php" rel="noopener noreferrer"&gt;https://example.com/wp-admin/maint/repair.php&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  26. Restricting Access to wp-login.php
&lt;/h2&gt;

&lt;p&gt;Limit login page access to specific IPs in &lt;code&gt;.htaccess&lt;/code&gt;:&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="nt"&gt;&amp;lt;Files&lt;/span&gt; &lt;span class="na"&gt;wp-login.php&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
 Order Deny,Allow
 Deny from all
 Allow from 123.456.789.000
&lt;span class="nt"&gt;&amp;lt;/Files&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  27. Fixing Upload Size Limits
&lt;/h2&gt;

&lt;p&gt;Increase upload limits in &lt;code&gt;php.ini&lt;/code&gt;:&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="n"&gt;upload_max_filesize&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;64&lt;/span&gt;&lt;span class="nc"&gt;M&lt;/span&gt;
&lt;span class="n"&gt;post_max_size&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;64&lt;/span&gt;&lt;span class="nc"&gt;M&lt;/span&gt;
&lt;span class="n"&gt;max_execution_time&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;300&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or in &lt;code&gt;.htaccess&lt;/code&gt;:&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="n"&gt;php_value&lt;/span&gt; &lt;span class="n"&gt;upload_max_filesize&lt;/span&gt; &lt;span class="mi"&gt;64&lt;/span&gt;&lt;span class="nc"&gt;M&lt;/span&gt;
&lt;span class="n"&gt;php_value&lt;/span&gt; &lt;span class="n"&gt;post_max_size&lt;/span&gt; &lt;span class="mi"&gt;64&lt;/span&gt;&lt;span class="nc"&gt;M&lt;/span&gt;
&lt;span class="n"&gt;php_value&lt;/span&gt; &lt;span class="n"&gt;max_execution_time&lt;/span&gt; &lt;span class="mi"&gt;300&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  28. Hiding WordPress Version
&lt;/h2&gt;

&lt;p&gt;Remove version details from the site header for security:&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;remove_action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'wp_head'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'wp_generator'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  29. Automatically Deactivate Inactive Plugins
&lt;/h2&gt;

&lt;p&gt;Use a cron job to disable plugins unused for months:&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;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;is_admin&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="o"&gt;!&lt;/span&gt;&lt;span class="nf"&gt;wp_next_scheduled&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'deactivate_inactive_plugins'&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_schedule_event&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;time&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; 
  &lt;span class="s1"&gt;'daily'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'deactivate_inactive_plugins'&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="s1"&gt;'deactivate_inactive_plugins'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nv"&gt;$inactive_plugins&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;get_plugins&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;$inactive_plugins&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; 
  &lt;span class="nv"&gt;$plugin_path&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;$plugin_info&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;is_plugin_active&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$plugin_path&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;deactivate_plugins&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$plugin_path&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;h2&gt;
  
  
  30. Fixing Mixed Content Errors
&lt;/h2&gt;

&lt;p&gt;Force HTTPS for all assets using filters:&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;fix_mixed_content&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="k"&gt;return&lt;/span&gt; &lt;span class="nb"&gt;str_replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'http://'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
 &lt;span class="s1"&gt;'https://'&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="nf"&gt;add_filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'the_content'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'fix_mixed_content'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://imp.i384100.net/WyYxXA" rel="noopener noreferrer"&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%2Fzmfmyg7aqywubb84jbzl.png" alt="Build a Full Website Using WordPress on Coursera" width="800" height="327"&gt;&lt;/a&gt;&lt;/p&gt;
Master WordPress with Coursera’s guided project and build a full-featured website in just 2 hours. Enroll for free!



&lt;h2&gt;
  
  
  31. Preventing PHP Execution in Uploads
&lt;/h2&gt;

&lt;p&gt;Block PHP execution in the uploads directory via &lt;code&gt;.htaccess&lt;/code&gt;:&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="nt"&gt;&amp;lt;Files&lt;/span&gt; &lt;span class="na"&gt;*.php&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  deny from all
 &lt;span class="nt"&gt;&amp;lt;/Files&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  32. Fixing Common Redirect Loops
&lt;/h2&gt;

&lt;p&gt;Correct incorrect URL configurations by adding to &lt;code&gt;wp-config.php&lt;/code&gt;:&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;if&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;'HTTP_X_FORWARDED_PROTO'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; 
&lt;span class="s1"&gt;'https'&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;'HTTPS'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 
&lt;span class="s1"&gt;'on'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  33. Restoring Lost Widgets
&lt;/h2&gt;

&lt;p&gt;Recover widgets after theme changes by exporting and importing them using the &lt;code&gt;wp_options&lt;/code&gt; table.&lt;/p&gt;

&lt;h2&gt;
  
  
  34. Debugging REST API Issues
&lt;/h2&gt;

&lt;p&gt;Add this snippet to confirm REST API functionality:&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_action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'rest_api_init'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&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="s2"&gt;"REST API is working!"&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;h2&gt;
  
  
  35. Preventing Spam Comments
&lt;/h2&gt;

&lt;p&gt;Add a simple honeypot field to forms:&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;add_honeypot&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;input type="hidden" name="honeypot" value="" /&amp;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="s1"&gt;'comment_form'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'add_honeypot'&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;check_honeypot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$commentdata&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="k"&gt;empty&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;'honeypot'&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;'Spam detected.'&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;$commentdata&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;'preprocess_comment'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'check_honeypot'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  36. Forcing File Download Instead of Opening
&lt;/h2&gt;

&lt;p&gt;Serve files for download using &lt;code&gt;.htaccess&lt;/code&gt;:&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="nt"&gt;&amp;lt;FilesMatch&lt;/span&gt; &lt;span class="err"&gt;"\.(&lt;/span&gt;&lt;span class="na"&gt;pdf&lt;/span&gt;&lt;span class="err"&gt;|&lt;/span&gt;&lt;span class="na"&gt;zip&lt;/span&gt;&lt;span class="err"&gt;|&lt;/span&gt;&lt;span class="na"&gt;docx&lt;/span&gt;&lt;span class="err"&gt;)$"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
 ForceType application/octet-stream
 Header set Content-Disposition attachment
&lt;span class="nt"&gt;&amp;lt;/FilesMatch&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  37. Fixing Search Query Results
&lt;/h2&gt;

&lt;p&gt;Restrict search to posts only (exclude pages):&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;search_filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$query&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;$query&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;is_search&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nv"&gt;$query&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'post_type'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'post'&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;$query&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;'pre_get_posts'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'search_filter'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  38. Disabling the WP Emoji Script
&lt;/h2&gt;

&lt;p&gt;Speed up performance by removing emojis:&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;remove_action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'wp_head'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'print_emoji_detection_script'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nf"&gt;remove_action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'wp_print_styles'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'print_emoji_styles'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  39. Enabling GZIP Compression
&lt;/h2&gt;

&lt;p&gt;Add to &lt;code&gt;.htaccess&lt;/code&gt; for compression:&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="nt"&gt;&amp;lt;IfModule&lt;/span&gt; &lt;span class="na"&gt;mod_deflate.c&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
 AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript application/json
&lt;span class="nt"&gt;&amp;lt;/IfModule&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  40. Preventing Excessive Revisions
&lt;/h2&gt;

&lt;p&gt;Limit the number of revisions for posts in &lt;code&gt;wp-config.php&lt;/code&gt;:&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="nb"&gt;define&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'WP_POST_REVISIONS'&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  41. Fixing Broken RSS Feeds
&lt;/h2&gt;

&lt;p&gt;Debug feed issues by flushing permalinks and checking for extra whitespace in &lt;code&gt;functions.php&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  42. Fixing the “Headers Already Sent” Error
&lt;/h2&gt;

&lt;p&gt;Ensure no extra whitespace in files before &lt;code&gt;&amp;lt;?php&lt;/code&gt; or after &lt;code&gt;?&amp;gt;&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  43. Checking Cron Jobs in WordPress
&lt;/h2&gt;

&lt;p&gt;View scheduled cron jobs with:&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;wp_cron&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  44. Temporarily Hiding Your Website
&lt;/h2&gt;

&lt;p&gt;Enable maintenance mode by creating a &lt;code&gt;maintenance.php&lt;/code&gt; file in the root directory.&lt;/p&gt;

&lt;h2&gt;
  
  
  45. Fixing Page Builder Conflicts
&lt;/h2&gt;

&lt;p&gt;Temporarily disable scripts for debugging:&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_action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'wp_enqueue_scripts'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&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="nf"&gt;is_admin&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_dequeue_script&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'conflicting-script'&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;h2&gt;
  
  
  46. Using WP-CLI for Bulk Actions
&lt;/h2&gt;

&lt;p&gt;Update all plugins:&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="n"&gt;wp&lt;/span&gt; &lt;span class="n"&gt;plugin&lt;/span&gt; &lt;span class="n"&gt;update&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;all&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Regenerate thumbnails:&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="n"&gt;wp&lt;/span&gt; &lt;span class="n"&gt;media&lt;/span&gt; &lt;span class="n"&gt;regenerate&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  47. Disabling WordPress Heartbeat API
&lt;/h2&gt;

&lt;p&gt;Reduce server load by limiting the Heartbeat API:&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_action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'init'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&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_deregister_script&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'heartbeat'&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;h2&gt;
  
  
  48. Fixing Memory Exhaustion Errors
&lt;/h2&gt;

&lt;p&gt;Increase the memory limit in &lt;code&gt;wp-config.php&lt;/code&gt;:&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="nb"&gt;define&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'WP_MEMORY_LIMIT'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'256M'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  49. Adding Custom User Roles
&lt;/h2&gt;

&lt;p&gt;Create tailored roles for users:&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_role&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'custom_role'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Custom Role'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
&lt;span class="s1"&gt;'read'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="s1"&gt;'edit_posts'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kc"&gt;false&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;h2&gt;
  
  
  50. Adding Google Analytics Without Plugins
&lt;/h2&gt;

&lt;p&gt;Insert the Analytics script in the theme header:&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_action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'wp_head'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&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="s2"&gt;"&amp;lt;script&amp;gt;Your Google Analytics Code Here&amp;lt;/script&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;h2&gt;
  
  
  51. Disabling Plugin Updates
&lt;/h2&gt;

&lt;p&gt;Prevent updates for specific plugins:&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_filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'site_transient_update_plugins'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&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="k"&gt;unset&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$value&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'plugin-folder/plugin-file.php'&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;$value&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;h2&gt;
  
  
  52. Overwriting Default Admin Email
&lt;/h2&gt;

&lt;p&gt;Change the admin email directly in &lt;code&gt;wp-config.php&lt;/code&gt;:&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="nb"&gt;define&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="s1"&gt;'your-email@example.com'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  53. Preventing Brute Force Attacks
&lt;/h2&gt;

&lt;p&gt;Block excessive login attempts using &lt;code&gt;.htaccess&lt;/code&gt;:&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="nt"&gt;&amp;lt;IfModule&lt;/span&gt; &lt;span class="na"&gt;mod_rewrite.c&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
 RewriteEngine On
 RewriteCond %{REQUEST_METHOD} POST
 RewriteCond %{REQUEST_URI} .(wp-login|xmlrpc).php*
 RewriteCond %{HTTP_REFERER} !^https://example.com.* [OR]
 RewriteCond %{REMOTE_ADDR} !^123.123.123.123
 RewriteRule .* - [F,L]
&lt;span class="nt"&gt;&amp;lt;/IfModule&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  54. Automatically Approving Comments from Known Users
&lt;/h2&gt;

&lt;p&gt;Bypass moderation for trusted users:&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_filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'pre_comment_approved'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$approved&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$commentdata&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;$commentdata&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'comment_author_email'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="s1"&gt;'trusted@example.com'&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="mi"&gt;1&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;$approved&lt;/span&gt;&lt;span class="p"&gt;;&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="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  55. Blocking Specific Countries
&lt;/h2&gt;

&lt;p&gt;Restrict access based on IP using &lt;code&gt;.htaccess&lt;/code&gt;:&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="nt"&gt;&amp;lt;Limit&lt;/span&gt; &lt;span class="na"&gt;GET&lt;/span&gt; &lt;span class="na"&gt;POST&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
 Order Deny,Allow
 Deny from 192.168.1.0/24
 Allow from all
&lt;span class="nt"&gt;&amp;lt;/Limit&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  56. Fixing Stuck Maintenance Mode
&lt;/h2&gt;

&lt;p&gt;Remove the &lt;code&gt;.maintenance&lt;/code&gt; file from the WordPress root to restore the site.&lt;/p&gt;

&lt;h2&gt;
  
  
  57. Cleaning the wp_options Table
&lt;/h2&gt;

&lt;p&gt;Remove orphaned options to speed up the site:&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="no"&gt;DELETE&lt;/span&gt; &lt;span class="no"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;wp_options&lt;/span&gt; 
&lt;span class="no"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;autoload&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'yes'&lt;/span&gt; 
&lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="n"&gt;option_name&lt;/span&gt; &lt;span class="no"&gt;LIKE&lt;/span&gt; &lt;span class="s1"&gt;'%_transient_%'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  58. Creating a Custom Login Page
&lt;/h2&gt;

&lt;p&gt;Use &lt;code&gt;wp_login_form()&lt;/code&gt; to create a custom login page:&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;wp_login_form&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
&lt;span class="s1"&gt;'redirect'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;site_url&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'/dashboard/'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="s1"&gt;'form_id'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'custom_login_form'&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;h2&gt;
  
  
  59. Automatically Deleting Spam Comments
&lt;/h2&gt;

&lt;p&gt;Schedule a cron job to delete spam comments:&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;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;wp_next_scheduled&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'delete_spam_comments'&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_schedule_event&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;time&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="s1"&gt;'daily'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'delete_spam_comments'&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="s1"&gt;'delete_spam_comments'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&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;$wpdb&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;query&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"DELETE FROM &lt;/span&gt;&lt;span class="nv"&gt;$wpdb-&amp;gt;comments&lt;/span&gt;&lt;span class="s2"&gt; WHERE comment_approved = 'spam'"&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;h2&gt;
  
  
  60. Fixing Broken Scheduled Posts
&lt;/h2&gt;

&lt;p&gt;Force missed schedules to run:&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_action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'init'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
 &lt;span class="nv"&gt;$scheduled_posts&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;get_posts&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="s1"&gt;'post_status'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'future'&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;$scheduled_posts&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nv"&gt;$post&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_publish_post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$post&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="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  61. Limiting WordPress Login Attempts
&lt;/h2&gt;

&lt;p&gt;Temporarily lock users out after failed attempts:&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;block_failed_logins&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;is_user_logged_in&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="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;'log'&lt;/span&gt;&lt;span class="p"&gt;]))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nv"&gt;$ip&lt;/span&gt; &lt;span class="o"&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;'REMOTE_ADDR'&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
  &lt;span class="nv"&gt;$failed_attempts&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;get_transient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'failed_login_'&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="nv"&gt;$ip&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;?:&lt;/span&gt; &lt;span class="mi"&gt;0&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;$failed_attempts&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&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;'Too many failed login attempts. Try again later.'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nf"&gt;set_transient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'failed_login_'&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="nv"&gt;$ip&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$failed_attempts&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="no"&gt;MINUTE_IN_SECONDS&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="s1"&gt;'wp_login_failed'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'block_failed_logins'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  62. Migrating WordPress Without Plugins
&lt;/h2&gt;

&lt;p&gt;Export and import the database using &lt;code&gt;mysqldump&lt;/code&gt;:&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="n"&gt;mysqldump&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;u&lt;/span&gt; &lt;span class="n"&gt;username&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt; &lt;span class="n"&gt;database_name&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;backup&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sql&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Search and replace URLs using WP-CLI:&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="n"&gt;wp&lt;/span&gt; &lt;span class="n"&gt;search&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;replace&lt;/span&gt; 
&lt;span class="s1"&gt;'http://oldsite.com'&lt;/span&gt; &lt;span class="s1"&gt;'http://newsite.com'&lt;/span&gt; 
&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;skip&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;columns&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;guid&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  63. Improving REST API Security
&lt;/h2&gt;

&lt;p&gt;Restrict REST API access to authenticated users:&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_filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'rest_authentication_errors'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$result&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;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="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;WP_Error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'rest_not_logged_in'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'You are not currently logged in.'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="s1"&gt;'status'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;401&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;$result&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;h2&gt;
  
  
  64. Customizing the Admin Footer
&lt;/h2&gt;

&lt;p&gt;Replace the default WordPress admin footer text:&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_filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'admin_footer_text'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&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;'Powered by Your Company'&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;h2&gt;
  
  
  65. Enabling Lazy Loading for Images
&lt;/h2&gt;

&lt;p&gt;Add lazy loading to images dynamically:&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_filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'the_content'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&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="k"&gt;return&lt;/span&gt; &lt;span class="nb"&gt;str_replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'&amp;lt;img'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;img loading="lazy"'&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  66. Redirecting Users After Login
&lt;/h2&gt;

&lt;p&gt;Send users to a custom dashboard after login:&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_filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'login_redirect'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$redirect_to&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$request&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="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;in_array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'subscriber'&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;roles&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="nf"&gt;site_url&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'/dashboard/'&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;$redirect_to&lt;/span&gt;&lt;span class="p"&gt;;&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="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  67. Blocking Bad Bots
&lt;/h2&gt;

&lt;p&gt;Add a bot-blocking script to &lt;code&gt;.htaccess&lt;/code&gt;:&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="nc"&gt;SetEnvIfNoCase&lt;/span&gt; &lt;span class="nc"&gt;User&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nc"&gt;Agent&lt;/span&gt; &lt;span class="s2"&gt;"BadBot"&lt;/span&gt; &lt;span class="n"&gt;bad_bot&lt;/span&gt;
 &lt;span class="nc"&gt;Order&lt;/span&gt; &lt;span class="nc"&gt;Allow&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nc"&gt;Deny&lt;/span&gt;
 &lt;span class="nc"&gt;Allow&lt;/span&gt; &lt;span class="n"&gt;from&lt;/span&gt; &lt;span class="n"&gt;all&lt;/span&gt;
 &lt;span class="nc"&gt;Deny&lt;/span&gt; &lt;span class="n"&gt;from&lt;/span&gt; &lt;span class="n"&gt;env&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;bad_bot&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  68. Customizing Excerpts
&lt;/h2&gt;

&lt;p&gt;Limit excerpt length and add a “Read More” link:&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_filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'excerpt_more'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&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="s1"&gt;'... &amp;lt;a href="'&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="nf"&gt;get_permalink&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;gt;Read More&amp;lt;/a&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;h2&gt;
  
  
  69. Fixing JSON Error in Gutenberg Editor
&lt;/h2&gt;

&lt;p&gt;Adjust REST API permissions:&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_filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'rest_allow_anonymous_comments'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'__return_true'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  70. Disabling Auto-Updates for Specific Plugins
&lt;/h2&gt;

&lt;p&gt;Stop updates for a specific plugin:&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_filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'auto_update_plugin'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$update&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$item&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;$item&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;slug&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="s1"&gt;'plugin-slug'&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="kc"&gt;false&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;$update&lt;/span&gt;&lt;span class="p"&gt;;&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="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://skillshare.eqcm.net/RGR4PN" rel="noopener noreferrer"&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%2Fsfhep8mbj8qhbcn1cw49.png" alt="WordPress Academy: Learn WordPress Step by Step on Skillshare" width="800" height="345"&gt;&lt;/a&gt;&lt;/p&gt;
Discover the basics of WordPress with the WordPress Academy course on Skillshare. Start your free trial today!



&lt;h2&gt;
  
  
  71. Allowing SVG Uploads
&lt;/h2&gt;

&lt;p&gt;Enable SVG files in the media library:&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_filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'upload_mimes'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$mimes&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
 &lt;span class="nv"&gt;$mimes&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'svg'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'image/svg+xml'&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;$mimes&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;h2&gt;
  
  
  72. Fixing Missing Customizer Options
&lt;/h2&gt;

&lt;p&gt;Re-enable the Customizer if disabled:&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_action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'after_setup_theme'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&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_theme_support&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'customize-selective-refresh-widgets'&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;h2&gt;
  
  
  73. Automatically Log Out Inactive Users
&lt;/h2&gt;

&lt;p&gt;Add a timeout for inactive users:&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_action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'init'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&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="nf"&gt;is_user_logged_in&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="o"&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;$_COOKIE&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'user_active'&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_logout&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;h2&gt;
  
  
  74. Preventing Direct Access to PHP Files
&lt;/h2&gt;

&lt;p&gt;Add rules in &lt;code&gt;.htaccess&lt;/code&gt;:&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="nc"&gt;Files&lt;/span&gt; &lt;span class="o"&gt;*.&lt;/span&gt;&lt;span class="n"&gt;php&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="n"&gt;deny&lt;/span&gt; &lt;span class="n"&gt;from&lt;/span&gt; &lt;span class="n"&gt;all&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Files&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  75. Custom Maintenance Mode
&lt;/h2&gt;

&lt;p&gt;Show a custom maintenance page:&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_action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'template_redirect'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&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;is_user_logged_in&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="o"&gt;!&lt;/span&gt;&lt;span class="nf"&gt;is_admin&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;'Site is under maintenance.'&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;h2&gt;
  
  
  76. Optimizing WordPress Search with Custom Queries
&lt;/h2&gt;

&lt;p&gt;Use a custom &lt;code&gt;WP_Query&lt;/code&gt; for better search results:&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_action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'pre_get_posts'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$query&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;$query&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;is_search&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nf"&gt;is_admin&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nv"&gt;$query&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'post_type'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'post'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'page'&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;h2&gt;
  
  
  77. Fixing Broken Theme Styles
&lt;/h2&gt;

&lt;p&gt;Force CSS regeneration:&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;wp_enqueue_style&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'theme-styles'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;get_stylesheet_uri&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="p"&gt;[],&lt;/span&gt; &lt;span class="nb"&gt;time&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  78. Fixing Redirect Issues for Login/Logout
&lt;/h2&gt;

&lt;p&gt;Define custom redirect URLs:&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_filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'login_redirect'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$redirect_to&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="nf"&gt;home_url&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'/dashboard/'&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;h2&gt;
  
  
  79. Enabling Debugging for Plugin Conflicts
&lt;/h2&gt;

&lt;p&gt;Check conflicting plugin behavior with:&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="nb"&gt;define&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'SAVEQUERIES'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nb"&gt;define&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'WP_DEBUG'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nb"&gt;define&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'WP_DEBUG_LOG'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  80. Protecting wp-config.php
&lt;/h2&gt;

&lt;p&gt;Restrict access using &lt;code&gt;.htaccess&lt;/code&gt;:&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="nt"&gt;&amp;lt;Files&lt;/span&gt; &lt;span class="na"&gt;wp-config.php&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
 order allow,deny
 deny from all
&lt;span class="nt"&gt;&amp;lt;/Files&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  81. Clearing Cache Programmatically
&lt;/h2&gt;

&lt;p&gt;Programmatically clear WordPress cache:&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;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;function_exists&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'wp_cache_flush'&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_cache_flush&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;h2&gt;
  
  
  82. Fixing “Too Many Redirects” Error
&lt;/h2&gt;

&lt;p&gt;Adjust home and site URL in &lt;code&gt;wp-config.php&lt;/code&gt;:&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="nb"&gt;define&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'WP_HOME'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'https://example.com'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nb"&gt;define&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'WP_SITEURL'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'https://example.com'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  83. Customizing the Login Page Logo
&lt;/h2&gt;

&lt;p&gt;Change the WordPress logo on the login page:&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_action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'login_enqueue_scripts'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&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;style&amp;gt;.login h1 a { background-image: url("your-logo.png") !important; }&amp;lt;/style&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;h2&gt;
  
  
  84. Redirecting Old URLs to New Ones
&lt;/h2&gt;

&lt;p&gt;Use &lt;code&gt;wp_safe_redirect&lt;/code&gt; for SEO-safe redirection:&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_action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'template_redirect'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&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="nf"&gt;is_page&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'old-page'&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_safe_redirect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;home_url&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'/new-page/'&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;h2&gt;
  
  
  85. Limiting Search Queries by Date
&lt;/h2&gt;

&lt;p&gt;Restrict search results to the past year:&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_action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'pre_get_posts'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$query&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;$query&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;is_search&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nv"&gt;$query&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'date_query'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="s1"&gt;'after'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'1 year ago'&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;&lt;a href="https://skillshare.eqcm.net/K0xoKN" rel="noopener noreferrer"&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%2Fcniaasxbmr8a8rjl531z.png" alt="How to Use Elementor: Build an Awesome WordPress Website With No Code on Skillshare" width="800" height="349"&gt;&lt;/a&gt;&lt;/p&gt;
Learn to create professional WordPress websites using Elementor without writing a single line of code. Available on Skillshare!



&lt;h2&gt;
  
  
  86. Fixing 404 Errors for Custom Post Types
&lt;/h2&gt;

&lt;p&gt;Flush rewrite rules programmatically:&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_action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'init'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
 &lt;span class="nf"&gt;flush_rewrite_rules&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;h2&gt;
  
  
  87. Speeding Up WordPress Queries
&lt;/h2&gt;

&lt;p&gt;Use the &lt;code&gt;no_found_rows&lt;/code&gt; parameter in custom queries:&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="nv"&gt;$query&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;WP_Query&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
&lt;span class="s1"&gt;'post_type'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'post'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="s1"&gt;'no_found_rows'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kc"&gt;true&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;h2&gt;
  
  
  88. Customizing the WordPress Admin Dashboard
&lt;/h2&gt;

&lt;p&gt;Add a custom widget to the dashboard:&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_action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'wp_dashboard_setup'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&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_add_dashboard_widget&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'custom_widget'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Custom Widget'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&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;'Hello, Admin!'&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;h2&gt;
  
  
  89. Fixing Long Execution Times
&lt;/h2&gt;

&lt;p&gt;Increase execution time in &lt;code&gt;.htaccess&lt;/code&gt;:&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="n"&gt;php_value&lt;/span&gt; &lt;span class="n"&gt;max_execution_time&lt;/span&gt; &lt;span class="mi"&gt;300&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  90. Restricting Content by User Role
&lt;/h2&gt;

&lt;p&gt;Hide content from unauthorized users:&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;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="s1"&gt;'editor'&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;'Access denied.'&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;h2&gt;
  
  
  91. Automatically Updating Permalinks
&lt;/h2&gt;

&lt;p&gt;Flush and update permalinks programmatically:&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_action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'init'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&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;$wp_rewrite&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
 &lt;span class="nv"&gt;$wp_rewrite&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;set_permalink_structure&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'/%postname%/'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
 &lt;span class="nv"&gt;$wp_rewrite&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;flush_rules&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;h2&gt;
  
  
  92. Monitoring Admin Logins
&lt;/h2&gt;

&lt;p&gt;Track admin logins for security:&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_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="k"&gt;function&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="nb"&gt;error_log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"Admin &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;$username&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; logged in at "&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="nb"&gt;date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Y-m-d H:i:s'&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;h2&gt;
  
  
  93. Preventing Large Image Uploads
&lt;/h2&gt;

&lt;p&gt;Limit maximum image dimensions:&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_filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'wp_handle_upload_prefilter'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
 &lt;span class="nv"&gt;$image&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;getimagesize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'tmp_name'&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;$image&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="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;2000&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nv"&gt;$image&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="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;2000&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'error'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Images must be less than 2000x2000 pixels.'&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;$file&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;h2&gt;
  
  
  94. Detecting and Blocking Fake Admins
&lt;/h2&gt;

&lt;p&gt;Verify user roles on login:&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_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="k"&gt;function&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="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="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;in_array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'administrator'&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;roles&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="nv"&gt;$user&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;user_email&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="s1"&gt;'admin@example.com'&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;'Unauthorized admin login attempt.'&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;h2&gt;
  
  
  95. Fixing Timezone Issues
&lt;/h2&gt;

&lt;p&gt;Set a custom timezone in &lt;code&gt;wp-config.php&lt;/code&gt;:&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="nb"&gt;define&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'WP_DEFAULT_TIMEZONE'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'America/New_York'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  96. Preventing the Upload of Certain File Types
&lt;/h2&gt;

&lt;p&gt;Restrict uploads of potentially harmful file types:&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_filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'upload_mimes'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$mimes&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
 &lt;span class="k"&gt;unset&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$mimes&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'exe'&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt; &lt;span class="c1"&gt;// Block .exe files&lt;/span&gt;
 &lt;span class="k"&gt;unset&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$mimes&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'php'&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt; &lt;span class="c1"&gt;// Block .php files&lt;/span&gt;
 &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nv"&gt;$mimes&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;h2&gt;
  
  
  97. Creating a Custom Error Page
&lt;/h2&gt;

&lt;p&gt;Redirect users to a custom 404 error page:&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_action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'template_redirect'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&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="nf"&gt;is_404&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_redirect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;home_url&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'/custom-error-page/'&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;h2&gt;
  
  
  98. Automatically Updating SSL Settings
&lt;/h2&gt;

&lt;p&gt;Programmatically update all site URLs to HTTPS:&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_action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'admin_init'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&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;is_ssl&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;update_option&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'siteurl'&lt;/span&gt;&lt;span class="p"&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="s1"&gt;'http://'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'https://'&lt;/span&gt;&lt;span class="p"&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;'siteurl'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nf"&gt;update_option&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'home'&lt;/span&gt;&lt;span class="p"&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="s1"&gt;'http://'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'https://'&lt;/span&gt;&lt;span class="p"&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;'home'&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;h2&gt;
  
  
  99. Adding Two-Factor Authentication for Admins
&lt;/h2&gt;

&lt;p&gt;Add a simple &lt;a href="https://www.microsoft.com/en-ie/security/business/security-101/what-is-two-factor-authentication-2fa" rel="noopener noreferrer"&gt;two-factor authentication&lt;/a&gt; method:&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_action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'login_form'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&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;p&amp;gt;&amp;lt;label for="auth_code"&amp;gt;Authentication Code&amp;lt;/label&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="auth_code" /&amp;gt;&amp;lt;/p&amp;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_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="k"&gt;function&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="nv"&gt;$auth_code&lt;/span&gt; &lt;span class="o"&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;'auth_code'&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="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$username&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="s1"&gt;'admin'&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nv"&gt;$auth_code&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="s1"&gt;'123456'&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="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;WP_Error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'auth_failed'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Invalid authentication code.'&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;$user&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="mi"&gt;30&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  100. Improving Site Security with CSP Headers
&lt;/h2&gt;

&lt;p&gt;Add Content Security Policy (CSP) headers to prevent malicious scripts:&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_action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'send_headers'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
 &lt;span class="nb"&gt;header&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Content-Security-Policy: default-src \'self\'; script-src \'self\' \'unsafe-inline\';'&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;h2&gt;
  
  
  101. Disable Search for Logged-Out Users
&lt;/h2&gt;

&lt;p&gt;Prevent logged-out users from accessing search functionality:&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_action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'template_redirect'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&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;is_user_logged_in&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="nf"&gt;is_search&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_redirect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;home_url&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;h2&gt;
  
  
  102. Prevent Users from Changing Admin Email
&lt;/h2&gt;

&lt;p&gt;Lock the admin email to prevent accidental changes:&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_filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'pre_update_option_admin_email'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&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="nv"&gt;$old_value&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;$old_value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Prevent changes&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="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  103. Automatically Approve Admin Comments
&lt;/h2&gt;

&lt;p&gt;Save time by auto-approving comments made by admins:&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_filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'pre_comment_approved'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$approved&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$commentdata&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="nf"&gt;user_can&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$commentdata&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'user_id'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="s1"&gt;'administrator'&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="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Automatically approve&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;$approved&lt;/span&gt;&lt;span class="p"&gt;;&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="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  104. Disable RSS Feeds
&lt;/h2&gt;

&lt;p&gt;Turn off &lt;a href="https://rss.com/blog/how-do-rss-feeds-work/" rel="noopener noreferrer"&gt;RSS feeds&lt;/a&gt; if they’re not needed:&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_action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'do_feed'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&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_redirect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;home_url&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="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  105. Automatically Log Out Users After a Period
&lt;/h2&gt;

&lt;p&gt;Force inactive users to log out for security:&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_action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'init'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&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="nf"&gt;is_user_logged_in&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="k"&gt;isset&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$_COOKIE&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'last_activity'&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="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;time&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nv"&gt;$_COOKIE&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'last_activity'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;1800&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_logout&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="nf"&gt;wp_redirect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;home_url&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="nb"&gt;setcookie&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'last_activity'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;time&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="nb"&gt;time&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1800&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="no"&gt;COOKIEPATH&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="no"&gt;COOKIE_DOMAIN&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;h2&gt;
  
  
  Wrapping It Up: A Troubleshooter’s Toolbox
&lt;/h2&gt;

&lt;p&gt;Fixing WordPress issues doesn’t have to be a headache. With these 105 code tricks and practical solutions, you have a robust toolkit to tackle everything from password resets and debugging to security enhancements and performance optimization.&lt;/p&gt;

&lt;p&gt;Let us know in the comments which tip saved your day-or share your own!&lt;/p&gt;

&lt;p&gt;🚀 Before You Go:&lt;/p&gt;

&lt;p&gt;👏 Found these JavaScript mastery tips useful? Give it a clap!&lt;br&gt;
💬 Have your own tips? Share them in the comments!&lt;br&gt;
🔄 Know someone learning JavaScript? Share this post with them!&lt;/p&gt;

&lt;p&gt;🌟 Your support keeps us going!&lt;/p&gt;

&lt;p&gt;📩 Get the &lt;strong&gt;latest tutorials, tips, and tech updates&lt;/strong&gt; right in your inbox!&lt;/p&gt;

&lt;h3&gt;
  
  
  👉 &lt;a href="https://newsletter.webdevstory.com/" rel="noopener noreferrer"&gt;Subscribe&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Note: Some links on this page might be affiliate links. If you make a purchase through these links, I may earn a small commission at no extra cost to you. Thanks for your support!&lt;/p&gt;

</description>
      <category>fixwordpresserrors</category>
      <category>simplecode</category>
      <category>wordpress</category>
      <category>troubleshooting</category>
    </item>
    <item>
      <title>Essential Topics for JavaScript Mastery</title>
      <dc:creator>Mainul Hasan</dc:creator>
      <pubDate>Thu, 07 Nov 2024 13:27:37 +0000</pubDate>
      <link>https://forem.com/mainulspace/essential-topics-for-javascript-mastery-21f0</link>
      <guid>https://forem.com/mainulspace/essential-topics-for-javascript-mastery-21f0</guid>
      <description>&lt;p&gt;To become a successful web developer, achieving JavaScript Mastery is essential.&lt;/p&gt;

&lt;p&gt;While the scope of JavaScript is vast, beginner or mid-level developers may find it challenging to determine the required knowledge to work professionally.&lt;/p&gt;

&lt;p&gt;In this post, I’ve listed the key topics you should know for JavaScript mastery to build a sound foundation and move toward expertise.&lt;/p&gt;

&lt;h4&gt;
  
  
  1 — JavaScript Basics for Mastery
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Syntax and Basic Structure&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Variables, Data Types, and Operators&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Control Structures (Loops, If-Else, Switch-Case)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Functions and Scopes&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  2 — Intermediate JavaScript
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Arrays and Array Methods&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Objects, Properties, and Methods&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Events and Event Handling&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Error Handling and Debugging&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  3 — Advanced JavaScript Concepts
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Closures&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The &lt;code&gt;this&lt;/code&gt; Keyword&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Prototype-Based Inheritance and Prototypes&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Asynchronous JavaScript: Callbacks, Promises, Async/Await&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ES6 Features: &lt;code&gt;let&lt;/code&gt;, &lt;code&gt;const&lt;/code&gt;, Arrow Functions, Template Literals, Spread/Rest Operators, Destructuring, Modules, etc.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  4 — Understanding DOM Manipulation
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Traversing the DOM&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Changing Elements (Adding, Removing, Replacing)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Event Bubbling and Capturing&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  5 — Working with APIs and JSON
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Making API Calls Using Fetch or Axios&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Working with JSON Data&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Async/Await with API Calls&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  6 — JavaScript Patterns and Best Practices
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Module Pattern&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Constructor and Prototype Pattern&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Modern Patterns Using ES6+ Syntax&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Best Practices: Clean Code, DRY Principle, Commenting, Naming Conventions&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  7 — JavaScript Libraries and Frameworks
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Deepening Knowledge of jQuery&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Popular Libraries (Lodash, Moment.js)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Introduction to Modern Frameworks (React, Vue.js, Angular.js)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  8 — JavaScript Testing and Debugging
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Unit Testing with Jest or Mocha/Chai&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Debugging with Chrome Developer Tools&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  9 — JavaScript in Different Environments
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Overview of Node.js (Server-Side JavaScript)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;JavaScript for Mobile Development (React Native)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;JavaScript for Desktop Apps (Electron)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  10 — Performance Optimization in JavaScript
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Minimizing DOM Manipulation&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Debouncing/Throttling Functions&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Lazy Loading and Code Splitting&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Optimizing Loops and Recursive Functions&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  11 — Security in JavaScript
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Common Security Issues (XSS, Insecure APIs)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Mitigating Risks (Input Validation, Data Sanitization)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  12 — Tooling and Build Tools
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Introduction to Webpack and Babel&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Linting with ESLint for Code Quality&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  13 — Introduction to TypeScript
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Benefits of TypeScript in JavaScript Projects&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Getting Started with Types and Interfaces&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  14 — JavaScript and Modern Web Development
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Single Page Applications (SPA) and Progressive Web Apps (PWA)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;JavaScript’s Role in Server-Side Rendering (Next.js, Nuxt.js)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  15 — JavaScript Ecosystem and Community
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Learning Resources (MDN Web Docs, StackOverflow)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Contributing to Open Source (GitHub, npm)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;JavaScript Conferences, Meetups, and Communities&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  16 — Build Projects
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Small-Scale Projects (ToDo List, Calculator, Timer)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Medium-Scale Projects (API-Integrated Projects like Weather App)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Resources
&lt;/h4&gt;

&lt;p&gt;To dive deeper into any of the topics covered, check out these useful resources:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript" rel="noopener noreferrer"&gt;MDN Web Docs — JavaScript&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://javascript.info/" rel="noopener noreferrer"&gt;JavaScript.info&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://eloquentjavascript.net" rel="noopener noreferrer"&gt;Eloquent JavaScript&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://stackoverflow.com/questions/tagged/javascript" rel="noopener noreferrer"&gt;Stack Overflow — JavaScript Questions&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://javascript30.com/" rel="noopener noreferrer"&gt;JavaScript30&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.webdevstory.com/category/javascript/" rel="noopener noreferrer"&gt;JavaScript Tips &amp;amp; Tricks&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Online Courses
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://imp.i384100.net/QjPgaP" rel="noopener noreferrer"&gt;JavaScript for Beginners&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://ioa.pxf.io/yqg5aV" rel="noopener noreferrer"&gt;Coding with HTML, CSS, and JavaScript&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://skillshare.eqcm.net/QjPgZA" rel="noopener noreferrer"&gt;Go From Novice to Expert in Programming with Javascript&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Books
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://amzn.to/3Aurau7" rel="noopener noreferrer"&gt;Eloquent JavaScript (3rd Edition)&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://amzn.to/4fdckrb" rel="noopener noreferrer"&gt;JavaScript: The Good Parts: The Good Parts&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://amzn.to/4hADPwb" rel="noopener noreferrer"&gt;You Don’t Know JS Yet: Get Started&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I hope this blog post gives you a clear roadmap for mastering JavaScript.&lt;/p&gt;

&lt;p&gt;It covers everything from foundational basics to advanced concepts, performance optimization, security, and real-world project building.&lt;/p&gt;

&lt;p&gt;Whether you’re just starting out or looking to deepen your expertise, these topics will guide your journey toward becoming a proficient JavaScript developer.&lt;/p&gt;

&lt;p&gt;Happy Coding!&lt;/p&gt;

&lt;p&gt;🚀 Before You Go:&lt;/p&gt;

&lt;p&gt;👏 Found these JavaScript mastery tips useful? Give it a clap!&lt;br&gt;
💬 Have your own tips? Share them in the comments!&lt;br&gt;
🔄 Know someone learning JavaScript? Share this post with them!&lt;/p&gt;

&lt;p&gt;🌟 Your support keeps us going!&lt;/p&gt;

&lt;p&gt;📩 Get the &lt;strong&gt;latest tutorials, tips, and tech updates&lt;/strong&gt; right in your inbox!&lt;/p&gt;

&lt;h3&gt;
  
  
  👉 &lt;a href="https://newsletter.webdevstory.com/" rel="noopener noreferrer"&gt;Subscribe&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Note: Some links on this page might be affiliate links. If you make a purchase through these links, I may earn a small commission at no extra cost to you. Thanks for your support!&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>programming</category>
      <category>tutorial</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Big Data Storage Trends and Insights</title>
      <dc:creator>Mainul Hasan</dc:creator>
      <pubDate>Wed, 16 Oct 2024 09:50:49 +0000</pubDate>
      <link>https://forem.com/mainulspace/big-data-storage-trends-and-insights-36gm</link>
      <guid>https://forem.com/mainulspace/big-data-storage-trends-and-insights-36gm</guid>
      <description>&lt;p&gt;It’s just not an idea; data is growing at an unprecedented rate. However, it has become one of the most significant challenges for businesses to manage this enormous influx of data efficiently and securely.&lt;/p&gt;

&lt;p&gt;By 2025, the world will create &lt;a href="https://www.weforum.org/agenda/2019/04/how-much-data-is-generated-each-day-cf4bddf29f/" rel="noopener noreferrer"&gt;463 exabytes&lt;/a&gt; of data daily. That’s equivalent to over 200 million DVDs of new data produced every 24 hours. However, the question is whether our storage solutions are ready to hold this surge in data.&lt;/p&gt;

&lt;p&gt;The challenge? Finding storage solutions that can keep up with the rapid growth of data while ensuring scalability, performance, and cost-effectiveness.&lt;/p&gt;

&lt;p&gt;The good side is that our strategies to store and manage data are evolving. And with the advancement of storage solutions, we can confidently navigate the complexities of big data storage.&lt;/p&gt;

&lt;h2&gt;
  
  
  # Big Data: A Growing Challenge
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://cloud.google.com/learn/what-is-big-data" rel="noopener noreferrer"&gt;Big data&lt;/a&gt; has transformed the way organizations handle information. The five key characteristics of big data-velocity, Volume, Variety, Veracity, and Value (5Vs)-define and give direction to the challenge. Every second, a wide variety of sources generate new data, rendering traditional storage methods insufficient.&lt;/p&gt;

&lt;p&gt;For example, IoT devices generate massive amounts of real-time data, and industries like healthcare and e-commerce rely on instant access to this real-time data. So, the storage infrastructure has had to keep pace. While this growth presents immense opportunities, it also comes with challenges, such as ensuring fast retrieval, reliability, and data security.&lt;/p&gt;

&lt;p&gt;Due to their limitations, traditional storage methods, like RDBMS, struggled to keep up with growing data demands. This is still true, but today, storage systems like distributed file systems and cloud-native storage have become standard.&lt;/p&gt;

&lt;h2&gt;
  
  
  # Key Storage Challenges
&lt;/h2&gt;

&lt;p&gt;Although the nature of big data remains consistent, how we store it has drastically changed.&lt;/p&gt;

&lt;p&gt;Historically, challenges like inefficient storage utilization and power consumption were among the primary obstacles.&lt;/p&gt;

&lt;p&gt;Today, those issues are worsening because of the need for real-time data access and &lt;a href="https://www.webdevstory.com/web-application-security-vulnerabilities/" rel="noopener noreferrer"&gt;enhanced cybersecurity&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Even with progress, there are still some problems to solve:&lt;/p&gt;

&lt;p&gt;Storage systems often lead to wasted capacity. Today, dynamic provisioning and cloud-based systems have made it easier to allocate storage where and when needed. Many organizations and businesses still face over-provisioning issues.&lt;/p&gt;

&lt;p&gt;Another critical priority for cloud providers is security because of the vast cyberattacks. While data centers and storage solutions have made great strides in security, challenges like ransomware have become even more complex, requiring encryption and real-time monitoring.&lt;/p&gt;

&lt;p&gt;With the rise of data privacy regulations like &lt;a href="https://imp.i384100.net/AWLvbo" rel="noopener noreferrer"&gt;GDPR&lt;/a&gt; in Europe and &lt;a href="https://www.cloudflare.com/en-gb/learning/privacy/what-is-the-ccpa/" rel="noopener noreferrer"&gt;CCPA&lt;/a&gt; in California, companies must also ensure that their storage solutions comply with these strict data governance laws.&lt;/p&gt;

&lt;p&gt;This adds another layer of complexity to the storage challenge as organizations secure data and provide global privacy standards to handle it.&lt;/p&gt;

&lt;p&gt;Data governance is critical to any contemporary storage strategy, as noncompliance can lead to substantial penalties and harm to one’s reputation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://imp.i384100.net/m5xDNO" rel="noopener noreferrer"&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%2Fwnzj03u1sj1f7muu4qhx.png" alt="Developing Applications with Google Cloud Specialization course on Coursera" width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;
Developing Applications with Google Cloud Specialization: Learn how to build secure and scalable cloud-native applications with Google Cloud Training.



&lt;h2&gt;
  
  
  # Adapting to a Dynamic Environment
&lt;/h2&gt;

&lt;p&gt;As we evolve beyond traditional storage systems, newer solutions are stepping in to address modern needs.&lt;/p&gt;

&lt;p&gt;The rise of cloud-native storage and hybrid systems has enabled organizations to balance cost, flexibility, and control.&lt;br&gt;&lt;br&gt;
Companies can now use a combination of on-premises systems and cloud infrastructure, allowing them to scale their data storage dynamically based on real-time demands.&lt;/p&gt;

&lt;p&gt;One of the most significant inventions has been &lt;a href="https://www.netapp.com/data-management/what-is-software-defined-storage/" rel="noopener noreferrer"&gt;software-defined storage (SDS)&lt;/a&gt;, which provides a more flexible and cost-effective way to store data.&lt;/p&gt;

&lt;p&gt;SDS abstracts the storage hardware and enables centralized management, allowing for dynamic allocation. This means that organizations can allocate resources as needed without the inefficiencies of older methods.&lt;/p&gt;

&lt;p&gt;For example, a mid-sized retail company struggles with slow data access during peak shopping seasons. Their traditional on-premises storage system cannot handle the influx of data traffic, leading to frequent delays.&lt;/p&gt;

&lt;p&gt;By adopting a hybrid cloud model, the company improved response times by 40%, as it could scale storage resources during high-demand periods.&lt;/p&gt;

&lt;p&gt;Besides, it reduced overall storage costs by 25% since it only paid for cloud resources when needed while keeping sensitive customer data securely on-premises.&lt;/p&gt;

&lt;p&gt;Real-time data from wearable devices is gradually increasing. Healthcare organizations must turn to edge computing to process data closer to its source.&lt;/p&gt;

&lt;p&gt;This reduces latency, improves decision-making, and ensures critical patient data is handled quickly and efficiently, even during emergencies.&lt;/p&gt;

&lt;p&gt;Financial institutions often deal with fluctuating demand, especially during stock market volatility.&lt;/p&gt;

&lt;p&gt;Hybrid cloud storage allows them to scale resources up or down as needed. It helps them to manage sudden increases in data traffic while keeping sensitive financial information secure on private servers.&lt;/p&gt;

&lt;p&gt;So, by using hybrid storage and cloud-native infrastructure, any company can drastically improve performance while keeping costs low. This makes them perfect for businesses that have to deal with unpredictable data volumes.&lt;/p&gt;

&lt;h2&gt;
  
  
  # Sustainability — Growing Concern
&lt;/h2&gt;

&lt;p&gt;With the increase in data, power consumption has become a growing concern. Storage systems use a lot of energy, making data centers very energy-intensive. That’s why energy efficiency is no longer an afterthought-it is a key priority today.&lt;/p&gt;

&lt;p&gt;Innovations like serverless storage and carbon-neutral cloud services lead to the charge of reducing energy consumption.&lt;br&gt;&lt;br&gt;
Companies are now actively seeking greener options for their storage needs, not only to cut costs but also to meet sustainability goals.&lt;/p&gt;

&lt;p&gt;The push for green computing has also sparked the development of data centers powered by renewable energy and energy-efficient technologies like liquid cooling systems for servers.&lt;/p&gt;

&lt;p&gt;Companies can also optimize energy usage in real-time by adjusting workloads to minimize energy consumption during periods of lower demand with the help of AI-driven automation. These approaches ensure that storage solutions remain sustainable while also providing performance expectations.&lt;/p&gt;

&lt;p&gt;As sustainability becomes a growing concern, new technologies like AI and &lt;a href="https://imp.i384100.net/zN1o79" rel="noopener noreferrer"&gt;edge computing&lt;/a&gt;&lt;br&gt;&lt;br&gt;
are also helping to optimize storage efficiency.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://imp.i384100.net/21bMDA" rel="noopener noreferrer"&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%2Fwhdig6345qa8wfqk9wng.jpg" alt="Deploying Juniper Data Centers with EVPN VXLAN: A guide for IT professionals and network engineers, by Aninda Chatterjee" width="800" height="1023"&gt;&lt;/a&gt;&lt;/p&gt;
Deploying Juniper Data Centers with EVPN VXLAN: A guide for IT professionals and network engineers, by Aninda Chatterjee



&lt;h2&gt;
  
  
  # The Future of Big Data Storage
&lt;/h2&gt;

&lt;p&gt;AI, edge computing, and hybrid storage solutions will be the keys to the future of big data.&lt;/p&gt;

&lt;p&gt;Many organizations already use hybrid storage, which stores data locally and in the cloud. The next frontier is AI, which can automatically find the best way to store data based on usage patterns.&lt;/p&gt;

&lt;p&gt;We are also shifting towards edge computing, where data processing happens closer to the source of data generation (e.g., IoT devices), reducing latency and improving real-time decision-making.&lt;/p&gt;

&lt;p&gt;This is especially critical for industries like autonomous vehicles, healthcare, and smart cities, where milliseconds matter.&lt;/p&gt;

&lt;h2&gt;
  
  
  # Common Mistakes to Avoid
&lt;/h2&gt;

&lt;p&gt;There are some mistakes that you should not make when implementing cutting-edge storage solutions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Over-provisioning:&lt;/strong&gt; Allocating too much cloud storage can lead to unnecessary expenses. It’s important to assess data needs and adjust provisioning accordingly regularly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Underestimating Security Needs:&lt;/strong&gt; You cannot compromise security. Ensure that encryption, monitoring, and robust access control are part of your storage strategy from the beginning.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Neglecting Backup Strategies:&lt;/strong&gt; A lack of efficient backup systems can lead to substantial downtime costs. Ensure you’re implementing technologies like automated snapshots, which allow quick data restoration during a failure.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  # Strategy for Implementing New Storage Solutions
&lt;/h2&gt;

&lt;p&gt;When adopting new storage systems, you should consider the following things:&lt;/p&gt;

&lt;p&gt;You should focus on whether your current storage setup meets your needs. If not, focus on the specific gaps (e.g., security, scalability, and cost).&lt;/p&gt;

&lt;p&gt;If an organization is just starting with cloud storage, beginning small and integrating a hybrid solution can reduce risks while assessing performance.&lt;/p&gt;

&lt;p&gt;Separate mission-critical data from less sensitive information to ensure you get the most out of your storage infrastructure without overpaying.&lt;/p&gt;

&lt;h2&gt;
  
  
  # Trends to Watch
&lt;/h2&gt;

&lt;p&gt;While AI is growing, it can also provide valuable insights, such as optimizing data storage and access, predicting usage patterns, and reducing costs.&lt;/p&gt;

&lt;p&gt;In the coming decades, &lt;a href="https://xenon.com.au/products-and-solutions/quantum-storage/" rel="noopener noreferrer"&gt;quantum storage&lt;/a&gt;, which is still in its early stages, will revolutionize &lt;a href="https://www.webdevstory.com/web-data-management-xml-databases/" rel="noopener noreferrer"&gt;data management&lt;/a&gt; by offering storage systems with vastly increased capacity and speed.&lt;/p&gt;

&lt;p&gt;More companies are moving toward multi-cloud approaches, using different cloud providers for their storage needs. This strategy offers greater flexibility and security, ensuring that companies aren’t reliant on a single provider.&lt;/p&gt;

&lt;p&gt;Besides, these innovations, like quantum computing and &lt;a href="https://identitymanagementinstitute.org/blockchain-data-storage-and-security/" rel="noopener noreferrer"&gt;blockchain-based storage&lt;/a&gt;, could completely redefine how we think about data management, offering nearly limitless scalability and unparalleled security.&lt;/p&gt;

&lt;p&gt;The next era of storage will be as transformative as the one we live through today.&lt;/p&gt;

&lt;h2&gt;
  
  
  # Key Takeaways for Today’s Storage Solutions:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Adopt a hybrid storage model for flexibility and cost-efficiency.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Prioritize security, especially with the rise of cyber threats and stricter data privacy laws.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Regularly evaluate your storage needs to avoid over-provisioning or underutilizing resources.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Keep an eye on emerging technologies like AI and edge computing for more competent storage management.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;🚀 Before You Go:&lt;/p&gt;

&lt;p&gt;👏 Found these cloud storage tips helpful? Give it a like!&lt;br&gt;
💬 Have your own tips? Share your insights!&lt;br&gt;
🔄 Know someone who needs this? Share the post!&lt;/p&gt;

&lt;p&gt;🌟 Your support keeps us going!&lt;/p&gt;

&lt;p&gt;📩 &lt;strong&gt;Stay updated with the latest tech trends, tutorials, and tips&lt;/strong&gt; straight to your inbox!&lt;/p&gt;

&lt;h3&gt;
  
  
  👉 &lt;a href="https://newsletter.webdevstory.com/" rel="noopener noreferrer"&gt;Subscribe&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Note: Some links on this page might be affiliate links. If you make a purchase through these links, I may earn a small commission at no extra cost to you. Thanks for your support!&lt;/p&gt;

</description>
      <category>cloudcomputing</category>
      <category>cloudstorage</category>
      <category>bigdata</category>
      <category>googlecloud</category>
    </item>
    <item>
      <title>OneDrive Integration with React: Step-by-Step Guide</title>
      <dc:creator>Mainul Hasan</dc:creator>
      <pubDate>Mon, 23 Sep 2024 19:02:53 +0000</pubDate>
      <link>https://forem.com/mainulspace/onedrive-integration-with-react-step-by-step-guide-2md5</link>
      <guid>https://forem.com/mainulspace/onedrive-integration-with-react-step-by-step-guide-2md5</guid>
      <description>&lt;p&gt;In this post, I’ll share how to integrate &lt;a href="https://onedrive.live.com/login/" rel="noopener noreferrer"&gt;Microsoft OneDrive&lt;/a&gt; with your &lt;a href="https://www.webdevstory.com/building-blogging-site-react-php/" rel="noopener noreferrer"&gt;React application&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We’ll explore the steps for OAuth 2.0 authentication, getting access and refresh tokens, managing file uploads, and addressing challenges like ETag conflicts and CORS issues.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Prerequisites&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Before we dive into the technical details, ensure you have:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;A Microsoft account with OneDrive&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;An application registered in Azure Portal for OneDrive API access&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Node.js installed on your system&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Install axios to make API calls to &lt;a href="https://developer.microsoft.com/en-us/graph/graph-explorer" rel="noopener noreferrer"&gt;Microsoft’s Graph API&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;npm&lt;/span&gt; &lt;span class="nx"&gt;install&lt;/span&gt; &lt;span class="nx"&gt;axios&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;strong&gt;Step 1: Register a OneDrive App in Azure&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;To begin, you need to register an app in Azure to get the client ID and client secret for OAuth 2.0.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Go to the Azure Portal: &lt;a href="https://portal.azure.com/" rel="noopener noreferrer"&gt;Azure Portal&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;App Registration:&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Navigate to &lt;strong&gt;Microsoft Entra ID &amp;gt; App Registrations &amp;gt; New Registration&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Set a name for the app and configure the supported account types.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Set your Redirect URI (e.g., &lt;code&gt;http://localhost:3000&lt;/code&gt; for local development).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;3. API Permissions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add Microsoft Graph Permissions for &lt;strong&gt;Files.ReadWrite.All&lt;/strong&gt; and &lt;strong&gt;offline_access&lt;/strong&gt; to enable full access to the OneDrive files.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Create a Client Secret:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to &lt;strong&gt;Certificates &amp;amp; Secrets&lt;/strong&gt;, generate a client secret, and store it securely. You’ll need this to generate access tokens.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Step 2: OAuth 2.0 Authentication Flow&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Once you register your app in Azure, you can generate access and refresh tokens using the OAuth 2.0 flow.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Use the Authorization URL to generate the first access and refresh tokens
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;https&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="c1"&gt;//login.microsoftonline.com/common/oauth2/v2.0/authorize?&lt;/span&gt;
&lt;span class="nx"&gt;client_id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;YOUR_CLIENT_ID&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;
&lt;span class="nx"&gt;response_type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;code&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;
&lt;span class="nx"&gt;redirect_uri&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;YOUR_REDIRECT_URI&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;
&lt;span class="nx"&gt;scope&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;openid&lt;/span&gt; &lt;span class="nx"&gt;profile&lt;/span&gt; &lt;span class="nx"&gt;Files&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ReadWrite&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;All&lt;/span&gt; &lt;span class="nx"&gt;offline_access&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Replace &lt;code&gt;YOUR_CLIENT_ID&lt;/code&gt; and &lt;code&gt;YOUR_REDIRECT_URI&lt;/code&gt; with your values. Once the user signs in, the system will provide an &lt;strong&gt;authorization code&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;2. Exchange Authorization Code for Tokens: Use the following POST request to exchange the authorization code for access and refresh tokens&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;POST&lt;/span&gt; &lt;span class="nx"&gt;https&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="c1"&gt;//login.microsoftonline.com/common/oauth2/v2.0/token&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Request Body:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;client_id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;YOUR_CLIENT_ID&lt;/span&gt;
&lt;span class="nx"&gt;client_secret&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;YOUR_CLIENT_SECRET&lt;/span&gt;
&lt;span class="nx"&gt;code&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;AUTHORIZATION_CODE&lt;/span&gt;
&lt;span class="nx"&gt;redirect_uri&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;YOUR_REDIRECT_URI&lt;/span&gt;
&lt;span class="nx"&gt;grant_type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;authorization_code&lt;/span&gt;
&lt;span class="nx"&gt;scope&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;Files&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ReadWrite&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;All&lt;/span&gt; &lt;span class="nx"&gt;offline_access&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;strong&gt;Step 3: Refresh Token Flow&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Since OneDrive access tokens expire after &lt;strong&gt;1 hour&lt;/strong&gt;, you must refresh tokens to maintain long-term access. Here’s how you refresh the token:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Use the refresh token to get a new access token&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;POST&lt;/span&gt; &lt;span class="nx"&gt;https&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="c1"&gt;//login.microsoftonline.com/common/oauth2/v2.0/token&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Request Body:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;client_id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;YOUR_CLIENT_ID&lt;/span&gt;
&lt;span class="nx"&gt;client_secret&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;YOUR_CLIENT_SECRET&lt;/span&gt;
&lt;span class="nx"&gt;refresh_token&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;YOUR_REFRESH_TOKEN&lt;/span&gt;
&lt;span class="nx"&gt;redirect_uri&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;YOUR_REDIRECT_URI&lt;/span&gt;
&lt;span class="nx"&gt;grant_type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;refresh_token&lt;/span&gt;
&lt;span class="nx"&gt;scope&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;Files&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ReadWrite&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;All&lt;/span&gt; &lt;span class="nx"&gt;offline_access&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://imp.i384100.net/21bMDA" rel="noopener noreferrer"&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%2Fhqnne5849kyhcpnvf1y5.png" alt="Meta Advanced React course details on Coursera" width="800" height="352"&gt;&lt;/a&gt;&lt;/p&gt;
Course overview of Meta Advanced React from Coursera, highlighting the key features such as intermediate level, flexible schedule, and course duration of 26 hours.



&lt;h2&gt;
  
  
  &lt;strong&gt;Step 4: OneDrive File Upload via Graph API&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;With OneDrive authentication set up, we can now upload files to OneDrive. Below is an example of how to upload files via the Graph API:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;PUT request for file upload&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Request Body&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Send the file data as binary content in the body and pass the access token in the header.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;uploadFileToOneDrive&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;fileContent&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;axios&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;put&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="s2"&gt;`https://graph.microsoft.com/v1.0/me/drive/root:&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;:/content`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nx"&gt;fileContent&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="na"&gt;Authorization&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`Bearer &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;REACT_APP_ONEDRIVE_ACCESS_TOKEN&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Content-Type&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;application/octet-stream&lt;/span&gt;&lt;span class="dl"&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="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;data&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;h2&gt;
  
  
  &lt;strong&gt;Step 5: Handling File Conflicts with ETags&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;OneDrive uses &lt;strong&gt;ETags&lt;/strong&gt; to manage file versions, and you may encounter conflicts during file updates of the same file. To replace files, you need to handle ETag conflicts properly.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Conflict Behavior&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To replace a file, use the following request with conflict behavior handling:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;PUT&lt;/span&gt; &lt;span class="nx"&gt;https&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="c1"&gt;//graph.microsoft.com/v1.0/me/drive/root:/YOUR_PATH:/content?conflictBehavior=replace&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://amzn.to/47Erbb3" rel="noopener noreferrer"&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%2F5r7jel6yz7vtdcjifusm.jpg" alt="Hacking APIs book cover by Corey Ball, breaking web application programming interfaces" width="800" height="1056"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hacking APIs: Breaking Web Application Programming by Corey Ball&amp;lt;/figcaption&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Step 6: Downloading Assets from OneDrive&lt;/strong&gt;
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Fetch File Metadata&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Before downloading a file, fetch its metadata for details like the filename, size, or URL.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GET Request for File Metadata:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;GET&lt;/span&gt; &lt;span class="nx"&gt;https&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="c1"&gt;//graph.microsoft.com/v1.0/me/drive/root:/YOUR_PATH:/content&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;This request will return metadata for the file at YOUR_PATH.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example Response:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt; &lt;span class="p"&gt;{&lt;/span&gt;
     &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;file_id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
     &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;example.txt&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
     &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;size&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1024&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
     &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;createdDateTime&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;2023-09-21T12:00:00Z&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
     &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;webUrl&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://onedrive.live.com/...&lt;/span&gt;&lt;span class="dl"&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;2. Download File Content&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You’ll use the GET method, along with the file path, to download the actual file content and retrieve the file’s download URL or content.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;GET Request for File Download&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;GET&lt;/span&gt; &lt;span class="nx"&gt;https&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="c1"&gt;//graph.microsoft.com/v1.0/me/drive/root:/YOUR_PATH:/content&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can download the file by making an API call to the Graph API endpoint:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;downloadAssetFromOneDrive&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;axios&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="s2"&gt;`https://graph.microsoft.com/v1.0/me/drive/root:&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;:/content`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                    &lt;span class="na"&gt;Authorization&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`Bearer &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;REACT_APP_ONEDRIVE_ACCESS_TOKEN&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="p"&gt;},&lt;/span&gt;
                &lt;span class="na"&gt;responseType&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;blob&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// Ensures the response is treated as binary data (for files)&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;);&lt;/span&gt;

        &lt;span class="c1"&gt;// Create a URL for the blob to allow download&lt;/span&gt;
        &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;URL&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createObjectURL&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Blob&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;]));&lt;/span&gt;
        &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;link&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createElement&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;a&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nx"&gt;link&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;href&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="c1"&gt;// Extract the filename from the path&lt;/span&gt;
        &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;fileName&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;pop&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
        &lt;span class="nx"&gt;link&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setAttribute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;download&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;fileName&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Set the download attribute with the file name&lt;/span&gt;

        &lt;span class="c1"&gt;// Append link to the document and simulate click for download&lt;/span&gt;
        &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;appendChild&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;link&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nx"&gt;link&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;click&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
        &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;removeChild&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;link&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

        &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;File downloaded successfully&lt;/span&gt;&lt;span class="dl"&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;catch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Error downloading the file from OneDrive&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;error&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;🚀 Before You Go:&lt;/p&gt;

&lt;p&gt;👏 Found this OneDrive + React guide helpful? Give it a like!&lt;br&gt;
💬 Used OneDrive API before? Share your insights!&lt;br&gt;
🔄 Know someone who needs this? Share the post!&lt;/p&gt;

&lt;p&gt;🌟 Your support keeps us going!&lt;/p&gt;

&lt;p&gt;Note: Some links on this page might be affiliate links. If you make a purchase through these links, I may earn a small commission at no extra cost to you. Thanks for your support!&lt;/p&gt;

</description>
      <category>api</category>
      <category>react</category>
      <category>microsoftgraph</category>
      <category>onedrive</category>
    </item>
    <item>
      <title>Integrate Dropbox API with React: A Comprehensive Guide</title>
      <dc:creator>Mainul Hasan</dc:creator>
      <pubDate>Fri, 06 Sep 2024 19:05:38 +0000</pubDate>
      <link>https://forem.com/mainulspace/integrate-dropbox-api-with-react-a-comprehensive-guide-4on5</link>
      <guid>https://forem.com/mainulspace/integrate-dropbox-api-with-react-a-comprehensive-guide-4on5</guid>
      <description>&lt;p&gt;Cloud storage has become an essential solution for businesses, developers, and researchers alike due to its reliability, scalability, and security. As part of a research project, I recently integrated the Dropbox API into one of my &lt;a href="https://www.webdevstory.com/building-blogging-site-react-php/" rel="noopener noreferrer"&gt;React applications&lt;/a&gt;, enhancing how we handle cloud storage.&lt;/p&gt;

&lt;p&gt;In this blog post, I will guide you through the integration process, providing clear instructions and best practices to help you successfully integrate the Dropbox API into your React applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting Up the Dropbox Environment
&lt;/h2&gt;

&lt;p&gt;The first step to using Dropbox in your React app is to set up a dedicated Dropbox app. This process will give us application access to Dropbox’s API and allow it to interact with Dropbox programmatically.&lt;/p&gt;

&lt;h3&gt;
  
  
  1 — Creating a Dropbox App
&lt;/h3&gt;

&lt;p&gt;We need to create a Dropbox app through the &lt;a href="https://www.dropbox.com/developers" rel="noopener noreferrer"&gt;Dropbox Developer Portal&lt;/a&gt;. Here’s how:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Account Creation:&lt;/strong&gt; If you don’t already have one, create a Dropbox account. Then, navigate to the Dropbox Developer Portal.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;App Creation:&lt;/strong&gt; Click on Create App and select the desired app permissions. For most use cases, selecting &lt;strong&gt;“Full Dropbox”&lt;/strong&gt; access allows your app to manage files across the entire Dropbox account.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Configuration:&lt;/strong&gt; Name your app and configure the settings according to your project needs. This includes specifying API permissions and defining access levels.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Access Token Generation:&lt;/strong&gt; After creating the app, generate an access token. This token will allow your React app to authenticate and interact with Dropbox without needing a user login every time.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Integrating Dropbox into Our React Application
&lt;/h2&gt;

&lt;p&gt;Now that the Dropbox app is ready, let’s move on to the integration process.&lt;/p&gt;

&lt;h3&gt;
  
  
  2 — Installing the Dropbox SDK
&lt;/h3&gt;

&lt;p&gt;First, we need to install the &lt;a href="https://www.dropbox.com/developers/documentation" rel="noopener noreferrer"&gt;Dropbox SDK&lt;/a&gt;, which provides the tools to interact with Dropbox through your React app. In your project directory, run the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install &lt;/span&gt;dropbox
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It will add the Dropbox SDK as a dependency to your project.&lt;/p&gt;

&lt;h3&gt;
  
  
  3 — Configuring Environment Variables
&lt;/h3&gt;

&lt;p&gt;For security reasons, we should avoid hardcoding sensitive information such as your Dropbox access token. Instead, store it in an environment variable. In the root of your React project, create a &lt;code&gt;.env&lt;/code&gt; file and add the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;REACT_APP_DROPBOX_ACCESS_TOKEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;your_dropbox_access_token_here
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4 — Setting Up Dropbox Client in React
&lt;/h3&gt;

&lt;p&gt;Once the environment variables are set, initialize Dropbox in your React app by importing the SDK and creating a Dropbox client instance. Here’s an example of setting up the Dropbox API:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Dropbox&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;dropbox&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;dbx&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Dropbox&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;accessToken&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;REACT_APP_DROPBOX_ACCESS_TOKEN&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Uploading Files to Dropbox
&lt;/h2&gt;

&lt;p&gt;You can now upload files directly from your React app with Dropbox integrated. Here’s how to implement file uploads:&lt;/p&gt;

&lt;h3&gt;
  
  
  5 — File Upload Example
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;  &lt;span class="cm"&gt;/**
  * Uploads a file to Dropbox.
  *
  * @param {string} path - The path within Dropbox where the file should be saved.
  * @param {Blob} fileBlob - The Blob data of the file to upload.
  * @returns {Promise} A promise that resolves when the file is successfully uploaded.
  */&lt;/span&gt;
 &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;uploadFileToDropbox&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;fileBlob&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
     &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
         &lt;span class="c1"&gt;// Append the root directory (if any) to the specified path&lt;/span&gt;
         &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;fullPath&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;REACT_APP_DROPBOX_ROOT_DIRECTORY&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;}${&lt;/span&gt;&lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

         &lt;span class="c1"&gt;// Upload file to Dropbox&lt;/span&gt;
         &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;dbx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;filesUpload&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
             &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;fullPath&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
             &lt;span class="na"&gt;contents&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;fileBlob&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
             &lt;span class="na"&gt;mode&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                 &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;.tag&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;overwrite&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
             &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="c1"&gt;// Overwrite existing files with the same name&lt;/span&gt;
             &lt;span class="na"&gt;mute&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// Mutes notifications for the upload&lt;/span&gt;
         &lt;span class="p"&gt;});&lt;/span&gt;

         &lt;span class="c1"&gt;// Return a success response or handle the response as needed&lt;/span&gt;
         &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
     &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
         &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Error uploading file to Dropbox:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
         &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Re-throw the error for further error handling&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;h3&gt;
  
  
  6 — Implementing File Upload in the UI
&lt;/h3&gt;

&lt;p&gt;You can now tie the upload function to a file input in your React app:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;handleFileUpload&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;file&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;files&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="nf"&gt;uploadFileToDropbox&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;file&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="p"&gt;(&lt;/span&gt;
  &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;div&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;input&lt;/span&gt; &lt;span class="nx"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;file&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="nx"&gt;onChange&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;handleFileUpload&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;  &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/div&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Retrieving Files from Dropbox
&lt;/h2&gt;

&lt;p&gt;We will often need to fetch and display files from Dropbox. Here’s how to retrieve a file:&lt;/p&gt;

&lt;h3&gt;
  
  
  7 — Fetching and Displaying Files
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;fetchFileFromDropbox&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;filePath&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;dbx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;filesGetTemporaryLink&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
            &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;filePath&lt;/span&gt;
        &lt;span class="p"&gt;});&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;link&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Error fetching file from Dropbox:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;error&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;h3&gt;
  
  
  8 — Listing Files and Folders in Dropbox
&lt;/h3&gt;

&lt;p&gt;One of the key features we integrated was the ability to list folders and files from Dropbox directories. Here’s how we did it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;listFolders&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;dbx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;filesListFolder&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
            &lt;span class="nx"&gt;path&lt;/span&gt;
        &lt;span class="p"&gt;});&lt;/span&gt;
        &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;folders&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;entries&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;entry&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;entry&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;.tag&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;folder&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;folders&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;folder&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;folder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Error listing folders:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;error&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;h3&gt;
  
  
  9 — Displaying the File in React
&lt;/h3&gt;

&lt;p&gt;You can display an image or a video using the fetched download link:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;    &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useEffect&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;useState&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Dropbox&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;dropbox&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="c1"&gt;// Initialize Dropbox client&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;dbx&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Dropbox&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;accessToken&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;REACT_APP_DROPBOX_ACCESS_TOKEN&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;

    &lt;span class="cm"&gt;/**
    * Fetches a temporary download link for a file in Dropbox.
    *
    * @param {string} path - The path to the file in Dropbox.
    * @returns {Promise} A promise that resolves with the file's download URL.
     */&lt;/span&gt;
     &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;fetchFileFromDropbox&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;dbx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;filesGetTemporaryLink&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;path&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;link&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Error fetching file from Dropbox:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="nx"&gt;error&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="cm"&gt;/**
    * DropboxMediaDisplay Component:
    * Dynamically fetches and displays a media file (e.g., image, video) from Dropbox.
    *
    * @param {string} filePath - The path to the file in Dropbox to be displayed.
    */&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;DropboxMediaDisplay&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;filePath&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;fileLink&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setFileLink&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

      &lt;span class="nf"&gt;useEffect&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;fetchLink&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;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="nx"&gt;filePath&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;link&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetchFileFromDropbox&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;filePath&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="nf"&gt;setFileLink&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;link&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;fetchLink&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="nx"&gt;filePath&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;

      &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;div&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;fileLink&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
          &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;img&lt;/span&gt; &lt;span class="nx"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;fileLink&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="nx"&gt;alt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Dropbox Media&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="nx"&gt;style&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;{maxWidth: '100%', height: 'auto'}&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;/&amp;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="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;p&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;Loading&lt;/span&gt; &lt;span class="nx"&gt;media&lt;/span&gt;&lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/p&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;          &lt;span class="p"&gt;)}&lt;/span&gt;
        &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/div&lt;/span&gt;&lt;span class="err"&gt;&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;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;DropboxMediaDisplay&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Handling User Responses
&lt;/h2&gt;

&lt;p&gt;Dropbox was also used to store user responses from surveys or feedback forms within the Huldra framework. Here’s how we handled storing and managing user responses.&lt;/p&gt;

&lt;h3&gt;
  
  
  10 — Storing Responses
&lt;/h3&gt;

&lt;p&gt;We capture user responses and store them in Dropbox while ensuring the directory structure is organized and easy to manage.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;storeResponse&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;fileName&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;blob&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Blob&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;)],&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;application/json&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;filePath&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`/dev/responses/&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;fileName&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;uploadFileToDropbox&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;filePath&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;blob&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;h3&gt;
  
  
  11 — Retrieving Responses for Analysis
&lt;/h3&gt;

&lt;p&gt;When we need to retrieve responses for analysis, we can use the Dropbox API to list and download them:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;listResponses&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;dbx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;filesListFolder&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
            &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/dev/responses&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
        &lt;span class="p"&gt;});&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;entries&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;entry&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;entry&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Error listing responses:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;error&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;This code lists all files in the &lt;code&gt;/dev/responses/&lt;/code&gt; directory, making fetching and analyzing user feedback easy.&lt;/p&gt;

&lt;p&gt;🚀 Before You Dive In:&lt;/p&gt;

&lt;p&gt;👏 Found this guide on integrating Dropbox API with React useful? Give it a thumbs up!&lt;br&gt;
💬 Already used Dropbox API in your project? Share your experience in the comments!&lt;br&gt;
🔄 Know someone who’s looking to improve their React app? Spread the word and share this post!&lt;/p&gt;

&lt;p&gt;🌟 Your support helps us create more insightful content!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Support Our Tech Insights&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/mmainulhasan" rel="noopener noreferrer"&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%2Flsm9uucbnw7x9iw0loxr.png" alt="Buy Me A Coffee" width="217" height="61"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.paypal.com/donate/?hosted_button_id=GDUQRAJZM3UR8" rel="noopener noreferrer"&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%2Fipnhbim2ba56kt32zhn3.png" alt="Donate via PayPal button" width="217" height="71"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>react</category>
      <category>api</category>
    </item>
    <item>
      <title>Best React Frameworks: Which One Should You Choose and When?</title>
      <dc:creator>Mainul Hasan</dc:creator>
      <pubDate>Thu, 05 Sep 2024 18:00:44 +0000</pubDate>
      <link>https://forem.com/mainulspace/best-react-frameworks-which-one-should-you-choose-and-when-dn0</link>
      <guid>https://forem.com/mainulspace/best-react-frameworks-which-one-should-you-choose-and-when-dn0</guid>
      <description>&lt;p&gt;React has become a dominant choice for &lt;a href="https://www.webdevstory.com/category/web-development/" rel="noopener noreferrer"&gt;web development&lt;/a&gt;, primarily most of its component-based architecture, flexibility, and strong community support.&lt;/p&gt;

&lt;p&gt;With a robust ecosystem of frameworks built around &lt;a href="https://www.webdevstory.com/category/react/" rel="noopener noreferrer"&gt;React&lt;/a&gt;, developers now have various options to meet different needs and use cases.&lt;/p&gt;

&lt;p&gt;While we’re discussing the best React frameworks, it’s important to note that there isn’t a single “best” framework for every situation. The choice of a framework depends on a project's specific goals and requirements.&lt;/p&gt;

&lt;p&gt;In this blog post, we’ll explore some of the best react frameworks — Next.js, Gatsby, Create React App, Remix, and Blitz.js. We will highlight their key features and discuss when to use each one, helping you choose the right framework for your project.&lt;/p&gt;

&lt;h2&gt;
  
  
  1 - Next.js
&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/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3x3agc6dm3ljcr0stgb9.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%2F3x3agc6dm3ljcr0stgb9.png" alt="Next.js React Framework - Powerful Server-Side Rendering" width="800" height="367"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next.js, developed by Vercel, is popular for its server-side rendering (SSR) and static site generation (SSG) capabilities. It blends the best of client-side and server-side rendering, providing flexibility and power.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;SSR and SSG:&lt;/strong&gt; Improves performance and SEO&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;File-based routing:&lt;/strong&gt; Simplifies navigation structure&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;API routes:&lt;/strong&gt; Built-in support for API endpoints&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Automatic code splitting:&lt;/strong&gt; Enhances load times&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Incremental Static Regeneration (ISR):&lt;/strong&gt; Updates static content without a full rebuild&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  When to Use?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;SEO-critical applications&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;E-commerce Sites&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Media Sites&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Performance-sensitive apps&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Complex routing requirements&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Resources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://vercel.com/frameworks/nextjs" rel="noopener noreferrer"&gt;Next.js Official Documentation&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://amzn.to/3Z6WWr8" rel="noopener noreferrer"&gt;Real-World Next.js: Build scalable, high-performance, and modern web applications using Next.js, the React framework for production&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2 - Gatsby
&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/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxtg9y1w2v4rwny5u2lyr.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%2Fxtg9y1w2v4rwny5u2lyr.png" alt="Gatsby React Framework - Optimized Static Site Generator" width="800" height="367"&gt;&lt;/a&gt;&lt;br&gt;
Gatsby is a React-based static site generator known for its performance, scalability, and developer-friendly features. It uses GraphQL to fetch data and pre-render pages for highly optimized static websites.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Static site generation:&lt;/strong&gt; Produces fast, static HTML files&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;GraphQL data layer:&lt;/strong&gt; Centralized data management and querying&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Rich plugin ecosystem:&lt;/strong&gt; Extensive plugins for various functionalities&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Progressive Web App (PWA) support:&lt;/strong&gt; Out-of-the-box PWA capabilities&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Image optimization:&lt;/strong&gt; Automatically optimizes images for faster load times&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  When to Use?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Content-driven websites:&lt;/strong&gt; Blogs, documentation sites, and portfolios with frequently updated content&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;CMS Integration:&lt;/strong&gt; Works well with headless CMSs like Contentful, Strapi, or WordPress&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Large-scale Content Sites&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Performance-focused projects:&lt;/strong&gt; Static rendering and image optimization lead to exceptional performance&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Integration with various data sources&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Resources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.gatsbyjs.com/" rel="noopener noreferrer"&gt;Gatsby Official Documentation&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://amzn.to/3MBpgdL" rel="noopener noreferrer"&gt;Gatsby: The Definitive Guide: Build and Deploy Highly Performant Jamstack Sites and Applications&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://imp.i384100.net/VmnMQE" rel="noopener noreferrer"&gt;Creating a Personal Site with Gatsby&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3 - Create React App (CRA)
&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/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkymxyxdfureukquvfp58.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%2Fkymxyxdfureukquvfp58.png" alt="Create React App - Simple Setup for Single-Page Applications" width="800" height="365"&gt;&lt;/a&gt;&lt;br&gt;
Create React App (CRA) is a popular boilerplate for building React applications. It provides a simple setup with sensible defaults, making it a quick starting point for single-page applications (SPAs).&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Zero configuration setup:&lt;/strong&gt; Easiest way to get started with React&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Development and build tools:&lt;/strong&gt; Pre-configured with Webpack, Babel, and other essential tools&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Hot Module Replacement (HMR):&lt;/strong&gt; Enhances the development experience&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Extensible:&lt;/strong&gt; Possible to customize with additional configuration if needed&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  When to Use?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Single-page applications (SPAs)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Internal Tools:&lt;/strong&gt; Suitable for building internal tools and dashboards&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Small to Medium Projects:&lt;/strong&gt; Great for quick setup and development speed&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Prototyping and quick starts&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Learning React:&lt;/strong&gt; Suitable for beginners; it’s simple and easy to use&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Resources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://create-react-app.dev/" rel="noopener noreferrer"&gt;Create React App Official Documentation&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://amzn.to/3zfBNjN" rel="noopener noreferrer"&gt;Book: React Up &amp;amp; Running: Building Web Applications&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  4 - Remix
&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/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2d2j5556g238w7tz7y04.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%2F2d2j5556g238w7tz7y04.png" alt="Remix React Framework - Modern Web Standards for Better UX" width="800" height="363"&gt;&lt;/a&gt;&lt;br&gt;
Remix is a full-stack React framework emphasizing fast page loads and seamless transitions. It focuses on providing an excellent user experience by leveraging native browser features and efficient data handling.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Data loading:&lt;/strong&gt; Efficiently handles data loading and prefetching&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Nested routing:&lt;/strong&gt; Supports complex routing scenarios&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Progressive enhancement:&lt;/strong&gt; Embraces native web features for better performance&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Built-in error handling:&lt;/strong&gt; Simplifies error management in applications&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  When to Use?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;User experience-centric applications:&lt;/strong&gt; Projects where smooth transitions and fast page loads are paramount&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Complex routing needs:&lt;/strong&gt; Applications with deeply nested routes and intricate navigation requirements&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;High Interactivity:&lt;/strong&gt; Ideal for applications needing to function well under poor network conditions&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Developers familiar with traditional web development:&lt;/strong&gt; Leveraging native browser features makes it a good fit for developers with a background in conventional web development&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Resources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://remix.run/" rel="noopener noreferrer"&gt;Remix Official Documentation&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://amzn.to/3AVdoAH" rel="noopener noreferrer"&gt;Full Stack Web Development with Remix: Enhance the user experience and build better React apps by utilizing the web platform&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://links.mmainulhasan.com/udemy-remix" rel="noopener noreferrer"&gt;Remix.js – The Practical Guide&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  5 - Blitz.js
&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/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2l6ywdqo99jprirvcbei.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%2F2l6ywdqo99jprirvcbei.png" alt="Blitz.js React Framework - Fullstack Toolkit for Next.js" width="800" height="362"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Blitz.js is a full-stack React framework inspired by Ruby on Rails. It provides an all-in-one solution with built-in support for backend development, authentication, and database integration.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Full-stack capabilities:&lt;/strong&gt; Combines frontend and backend development seamlessly&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Built-in authentication:&lt;/strong&gt; Simplifies user authentication and authorization&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Database integration:&lt;/strong&gt; Easy setup and interaction with databases&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Zero-API data layer:&lt;/strong&gt; Eliminates the need for a separate API layer, reducing boilerplate code&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  When to Use?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Full-stack applications&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;SaaS Products:&lt;/strong&gt; Great for developing SaaS products with full-stack capabilities&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Authentication-heavy Apps:&lt;/strong&gt; Simplifies development with built-in authentication support&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Rapid development:&lt;/strong&gt; All-in-one solution speeds up the development process&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Developers with Ruby on Rails experience:&lt;/strong&gt; Similar philosophy and structure help you to easily transition.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Resources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blitzjs.com/" rel="noopener noreferrer"&gt;Blitz.js Official Documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Best React Frameworks Quick Overview
&lt;/h2&gt;

&lt;p&gt;A quick overview of the best react frameworks discussed in this post.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Feature&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Next.js&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Gatsby&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;CRA&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Remix&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Blitz.js&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Rendering Approach&lt;/td&gt;
&lt;td&gt;SSR, SSG, ISR, Client-Side Rendering&lt;/td&gt;
&lt;td&gt;Static Site Generation&lt;/td&gt;
&lt;td&gt;Client-Side Rendering&lt;/td&gt;
&lt;td&gt;SSR with Client-Side Rendering&lt;/td&gt;
&lt;td&gt;Full-Stack (SSR with Client-Side Rendering)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ideal Use Cases&lt;/td&gt;
&lt;td&gt;SEO-critical apps, e-commerce, media sites&lt;/td&gt;
&lt;td&gt;Blogs, documentation sites, marketing sites, headless CMS&lt;/td&gt;
&lt;td&gt;Single-page applications (SPAs), internal tools&lt;/td&gt;
&lt;td&gt;User experience-focused apps, complex routing&lt;/td&gt;
&lt;td&gt;Full-stack applications, SaaS, authentication-heavy apps&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Performance Optimization&lt;/td&gt;
&lt;td&gt;Automatic code splitting, static optimization, image optimization&lt;/td&gt;
&lt;td&gt;Image optimization, prefetching, code splitting&lt;/td&gt;
&lt;td&gt;Basic performance optimizations, extensible&lt;/td&gt;
&lt;td&gt;Data prefetching, efficient rendering&lt;/td&gt;
&lt;td&gt;Efficient data loading, zero-API data layer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Routing&lt;/td&gt;
&lt;td&gt;File-based routing&lt;/td&gt;
&lt;td&gt;File-based routing&lt;/td&gt;
&lt;td&gt;Manual routing setup&lt;/td&gt;
&lt;td&gt;Nested routing, file-based routing&lt;/td&gt;
&lt;td&gt;Built-in routing with full-stack support&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data Handling&lt;/td&gt;
&lt;td&gt;Supports API routes, ISR, and external data fetching&lt;/td&gt;
&lt;td&gt;GraphQL data layer for centralized data management&lt;/td&gt;
&lt;td&gt;State management libraries (e.g., Redux, Context API)&lt;/td&gt;
&lt;td&gt;Built-in data loading and error handling&lt;/td&gt;
&lt;td&gt;Built-in data layer, seamless backend integration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Built-in Features&lt;/td&gt;
&lt;td&gt;API routes, SSR/SSG, automatic static optimization&lt;/td&gt;
&lt;td&gt;GraphQL integration, PWA support, image optimization&lt;/td&gt;
&lt;td&gt;Pre-configured with Webpack, Babel&lt;/td&gt;
&lt;td&gt;Progressive enhancement, seamless transitions&lt;/td&gt;
&lt;td&gt;Authentication, database integration, error handling&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Learning Curve&lt;/td&gt;
&lt;td&gt;Moderate&lt;/td&gt;
&lt;td&gt;Moderate&lt;/td&gt;
&lt;td&gt;Easy&lt;/td&gt;
&lt;td&gt;Moderate&lt;/td&gt;
&lt;td&gt;Moderate to Advanced&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Community and Ecosystem&lt;/td&gt;
&lt;td&gt;Large community, rich ecosystem with many plugins&lt;/td&gt;
&lt;td&gt;Large community, extensive plugin ecosystem&lt;/td&gt;
&lt;td&gt;Large community, simple setup&lt;/td&gt;
&lt;td&gt;Growing community, modern tooling&lt;/td&gt;
&lt;td&gt;Smaller but growing community, strong Rails influence&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TypeScript Support&lt;/td&gt;
&lt;td&gt;Excellent&lt;/td&gt;
&lt;td&gt;Excellent&lt;/td&gt;
&lt;td&gt;Good&lt;/td&gt;
&lt;td&gt;Excellent&lt;/td&gt;
&lt;td&gt;Excellent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Integration with Other Tools&lt;/td&gt;
&lt;td&gt;Works well with CMS, APIs, and headless setups&lt;/td&gt;
&lt;td&gt;Great for CMS integrations, uses GraphQL&lt;/td&gt;
&lt;td&gt;Flexible with various state management tools&lt;/td&gt;
&lt;td&gt;Supports traditional and modern web technologies&lt;/td&gt;
&lt;td&gt;Fully integrated full-stack with database support&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best For&lt;/td&gt;
&lt;td&gt;Complex web applications needing SEO, performance, and scalability&lt;/td&gt;
&lt;td&gt;Content-heavy websites that require high performance and SEO&lt;/td&gt;
&lt;td&gt;Quick development, SPAs, internal applications&lt;/td&gt;
&lt;td&gt;High interactivity applications, UX-focused projects&lt;/td&gt;
&lt;td&gt;Full-stack web applications needing backend and frontend integration&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;🛠️ Before You Go:&lt;/p&gt;

&lt;p&gt;👏 Found this guide on React frameworks helpful? Give it a clap!&lt;br&gt;
💬 Used any of these frameworks? Drop your thoughts in the comments!&lt;br&gt;
🔄 Know a developer who’d benefit? Share this post!&lt;/p&gt;

&lt;p&gt;🌟 Thanks for your support and feedback!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Support Our Tech Insights&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/mmainulhasan" rel="noopener noreferrer"&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%2Flsm9uucbnw7x9iw0loxr.png" alt="Buy Me A Coffee" width="217" height="61"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.paypal.com/donate/?hosted_button_id=GDUQRAJZM3UR8" rel="noopener noreferrer"&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%2Fipnhbim2ba56kt32zhn3.png" alt="Donate via PayPal button" width="217" height="71"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Note: Some links on this page might be affiliate links. If you make a purchase through these links, I may earn a small commission at no extra cost to you. Thanks for your support!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>nextjs</category>
      <category>javascript</category>
      <category>gatsby</category>
    </item>
  </channel>
</rss>
