# ArvinWP > Wordpress Technical & Security Specialist ## Posts - [WordPress Admin Dashboard Access Issue](https://arvinwp.dev/wordpress-admin-dashboard-access-issue/): Overview A WordPress website allowed users to log in successfully through wp-login.php, but no administrator account could access the WordPress dashboard (wp-admin). The issue affected both existing admin users and newly created administrator accounts. Problem Troubleshooting Steps 1. Replaced WordPress Core Files Replaced all WordPress core files with a fresh copy while keeping: 2. Disabled All Plugins Temporarily disabled all plugins by renaming the plugins folder. 3. Cleaned Configuration Files Verified and cleaned: 4. Switched to a Default Theme Changed the active theme directly from the database. 5. Checked WordPress Roles Verified the stored user roles. Only custom SEO roles were […] - [Track Divi Form Submissions in GA4 Using Google Tag Manager](https://arvinwp.dev/track-divi-form-submissions-in-ga4-using-google-tag-manager/): If you’re using the Divi Contact Form, you’ve probably noticed that the default Form Submission trigger in Google Tag Manager doesn’t fire. That’s because Divi submits forms using AJAX instead of a traditional page reload. A simple workaround is to detect Divi’s success message, push a custom event to the dataLayer, and use that event to send a conversion to Google Analytics 4 (GA4). Step 1: Create a Custom HTML Tag In Google Tag Manager, create a new Custom HTML tag. Paste the following script into the tag: This script watches for Divi’s success message (et-pb-contact-message). When a visitor successfully submits […] - [Schema Markup Generator](https://arvinwp.dev/schema-markup-generator-tool/): Overview While working on technical and on-page SEO projects in 2022, I frequently handled schema markup implementation for client websites. The process was repetitive, time-consuming, and often limited by existing tools. To solve this, I built a custom Schema Markup Generator tool using ChatGPT—designed to generate structured, flexible, and detailed schema markup for real-world SEO needs. The Problem Even basic schemas like LocalBusiness or FAQ were too restrictive in available tools, forcing me to write custom schema manually for most projects. The Idea When ChatGPT launched in November 2022, I started experimenting with it for schema generation. Initially: That’s when I […] - [Migrating 100+ WordPress Websites Across Multiple Hosting Platforms](https://arvinwp.dev/migrating-100-wordpress-websites-across-multiple-hosting-platforms/): Overview This project involved the successful migration of over 100 WordPress websites across a wide range of hosting providers and server environments. The objective was to ensure smooth, secure, and downtime-free transitions while maintaining data integrity, SEO stability, and site functionality. Scope of Work Hosting Platforms Handled Migrations were performed across multiple hosting providers, including: …and several other regional and niche hosting providers. Server Environments Handled migrations across all major server types: Migration Types Migration Methods Used Depending on the project complexity and constraints, multiple migration approaches were used: Manual Migration Workflow For high-reliability migrations, I primarily followed a structured manual […] - [How to Track Gravity Forms Stripe Subscriptions in GA4 via GTM](https://arvinwp.dev/how-to-track-gravity-forms-stripe-subscriptions-in-ga4-via-gtm/): When a Gravity Forms payment form uses Stripe with no AJAX, the browser performs a standard full-page redirect to a thank you page after submission. This makes tracking straightforward: pass the transaction value in the URL, read it with GTM, and fire a GA4 purchase event on arrival. What you need before starting: Part 1 — Pass the Transaction Value via URL in Gravity Forms Gravity Forms has a built-in option to append form field values to the confirmation page URL as query parameters. You will use this to carry the total transaction value into the thank you page, where GTM […] - [What Happens After a Browser Gets an IP Address?](https://arvinwp.dev/what-happens-after-a-browser-gets-an-ip-address/): Most developers understand how a domain is converted into an IP address using DNS. But what happens after the browser gets that IP? This post explains the journey in a simple way and also clarifies where IP geolocation fits in. 1. From IP to Server Connection Once the browser receives an IP address (for example: 192.0.2.1), it doesn’t know anything about the server’s location or company. It only knows: Step-by-Step Journey After this: 2. Important Concept: IP is Enough The internet works only using IP addresses. It does NOT need: Routing decisions are based purely on finding the best path to […] - [Override User-Agent with Chrome DevTools](https://arvinwp.dev/override-user-agent-with-chrome-devtools/): Why this matters Your webpage may work normally for users but fail for certain bots. This can lead to issues like “Destination Not Working” in Google Ads. By overriding the user-agent in Chrome DevTools, you can test how your site behaves for different crawlers. Steps (as per Google’s official documentation) https://support.google.com/adspolicy/answer/16431325 Example: Testing Google Ads bot You can set the user-agent to: This helps you verify whether your page is accessible and working correctly for Google Ads crawlers. Reference: Google user-agents https://developers.google.com/crawling/docs/crawlers-fetchers/overview-google-crawlers Summary Use Chrome DevTools to override the user-agent and quickly check if your webpage is accessible to bots like […] - [How to Track Fluent Forms Submissions by Page (GA4 + GTM)](https://arvinwp.dev/how-to-track-fluent-forms-submissions-by-page-ga4-gtm/): Tracking form submissions is essential, but what if the same Fluent Form is used across multiple pages? By default, all submissions get grouped together — making it hard to understand which page is actually converting. To set up basic tracking, follow the official Fluent Forms guide below: https://fluentforms.com/docs/fluent-forms-event-tracking-with-google-analytics-ga4-via-google-tag-manager Once you’ve completed their setup, you can refine it to track submissions based on specific pages. Final Step: Update Your Trigger Edit your GTM trigger and add the following conditions: This ensures: You can duplicate this setup for other pages (e.g., /quote/, /services/) to track each form submission separately in GA4. That’s it […] - [Achieving 100/100 PageSpeed Score Through Full-Stack Optimization](https://arvinwp.dev/achieving-100-100-pagespeed-score-through-full-stack-optimization/): Overview A client approached me with performance concerns on their website, particularly around load speed and user experience. While the site was functional, it was underperforming in speed metrics, which can directly impact SEO rankings and conversion rates. The objective was to optimize the website for maximum performance and achieve top scores in performance benchmarks without compromising functionality or design. Initial Performance Metrics Mobile Score: 65 Desktop Score: 78 The site had multiple performance bottlenecks including unoptimized assets, render-blocking resources, and inefficient loading strategies. Optimization Strategy 1. Server-Level Optimization Since the client’s server was running on LiteSpeed, I leveraged server-side optimizations: […] - [Removing a Persistent WordPress Malware Injection (Fake Cloudflare Verification Attack)](https://arvinwp.dev/removing-a-persistent-wordpress-malware-injection-fake-cloudflare-verification-attack/): Overview A client approached me with a critical issue on their WordPress website where visitors were intermittently shown a fake Cloudflare verification screen. This not only impacted user trust but also indicated a deeper security compromise. The goal was to identify the root cause, eliminate the malware completely, and harden the website against future attacks—without disrupting business operations. The Problem Investigation Process 1. Immediate Containment I started by securing access and preventing further damage: 2. Malware Scan & File Inspection Using a security scanner, I identified and removed flagged files. However, the issue persisted, indicating a deeper infection. I then manually […] - [GA4 Purchase Tracking via GTM for Booker (Mindbody)](https://arvinwp.dev/ga4-purchase-tracking-via-gtm-for-booker-mindbody/): This guide explains how to set up GA4 purchase tracking using Google Tag Manager (GTM) for the Booker (Mindbody) online booking platform. It also includes a simple method to track purchases by location. 1. Connect Google Tag Manager in Booker This ensures Booker sends booking data into GTM. 2. Create Data Layer Variables in GTM Go to GTM → Variables → New Cart Order ID Revenue 3. Create Purchase Trigger Go to GTM → Triggers → New This trigger fires when a booking is successfully completed. 4. Create GA4 Purchase Tag Go to GTM → Tags → New Tag Setup Event […] - [WordPress Plugin Update Hack: Copy Current & New Versions Instantly](https://arvinwp.dev/wordpress-plugin-update-hack-copy-current-new-versions-instantly/): If you manage WordPress websites with many plugins, you’ve probably faced this issue: This becomes time-consuming, especially when dealing with websites that have a large number of plugins. Here’s a simple bookmark-based solution to automate this entire process. The Problem When updating plugins in WordPress: The Solution: Bookmarklet This method uses a small JavaScript bookmark (bookmarklet) that extracts: And copies everything in one click. How to Set It Up Step 1: Create a Bookmark Step 2: Add This as the URL Paste the following script as the bookmark URL: This will act like a tool when clicked. How to Use It […] - [How to Remove Elementor Form After Submission & Show Thank You Message in Same Area](https://arvinwp.dev/how-to-remove-elementor-form-after-submission-show-thank-you-message-in-same-area/): By default, Elementor forms display a success message below the form after submission. However, in many cases, you may want to replace the entire form with a thank you message for a cleaner user experience. In this guide, I’ll show you a simple and reliable JavaScript method to achieve this. Goal Method: Replace Form After Submission Using JavaScript This method listens for Elementor’s submit_success event and replaces the form with the success message. Step 1: Add an HTML Widget Place an HTML widget on the same page as your form (either above or below the form). Step 2: Paste the Script […] - [Fixing WordPress Database Import Error (MySQL Collation Issue)](https://arvinwp.dev/fixing-wordpress-database-import-error-mysql-collation-issue/): Overview During a WordPress migration, the database import failed with a MySQL error in phpMyAdmin. This prevented the website from being restored on the new server. The Problem Root Cause The source server was using MySQL 8, while the destination server was running an older version (e.g., MySQL 5.7), which does not support the utf8mb4_0900_ai_ci collation. Solution Result Key Takeaway Database migrations between different MySQL versions can cause compatibility issues.A quick manual fix by updating collation values in the SQL file can resolve import errors efficiently. - [How to Disable Past Dates in Elementor Date Field (3 Easy Methods)](https://arvinwp.dev/how-to-disable-past-dates-in-elementor-date-field-3-easy-methods/): When building forms in Elementor, you may want to restrict users from selecting past dates—especially for bookings, appointments, or event registrations. In this guide, I’ll show you three simple methods to block past dates in an Elementor date field. Method 1: Using Custom JavaScript (Recommended) This is the most flexible and dynamic approach, as it automatically sets today’s date as the minimum selectable date. Add the following JavaScript: Where to add this code: This method ensures the date restriction updates automatically every day. Method 2: Using Custom Attributes (Static) If you prefer a no-code UI-based approach, you can set a fixed […] - [How to Add Dynamic Collection Schema in Shopify (Dawn Theme)](https://arvinwp.dev/how-to-add-dynamic-collection-schema-in-shopify-dawn-theme/): Adding structured data (schema) to your Shopify collection pages helps search engines better understand your content and can improve visibility in search results. In this guide, I’ll show you how to implement a dynamic CollectionPage schema for Shopify’s Dawn theme. What This Does Where to Add the Code Placement Options Paste the schema in one of the following locations: Schema Code Key Notes Testing After adding the schema: Conclusion This implementation is a simple yet powerful way to enhance your Shopify store’s SEO. By adding structured data to collection pages, you make it easier for search engines to understand your product […] - [Reducing VPS CPU Load and Stabilizing a Multi-Site WordPress Server](https://arvinwp.dev/reducing-vps-cpu-load-and-stabilizing-a-multi-site-wordpress-server/): Overview A client was experiencing frequent downtime and slow performance across multiple websites hosted on a VPS server. The server was running approximately 30 WordPress installations, and performance issues were affecting both uptime and user experience. The objective was to identify the root cause of high CPU usage, stabilize the server, and optimize performance across all hosted sites. The Problem Upon contacting hosting support, it was confirmed that CPU usage was consistently near maximum capacity. Investigation Process 1. Resource Usage Analysis These indicated bot or automated traffic contributing to server overload. 2. Server-Level Blocking (Apache Configuration) To immediately reduce unwanted load, […] - [Simple HTML Email Template for User Notification (Thank You Email)](https://arvinwp.dev/simple-html-email-template-for-user-notification-thank-you-email/): This is a clean and responsive HTML email template you can use for form submissions, lead confirmations, or onboarding emails. HTML Email Template Key Notes Customization Tips Conclusion This template is ideal for sending confirmation emails after form submissions. It’s lightweight, professional, and easy to reuse across projects. - [How to Block Free Email Domains in Elementor Forms (Gmail, Yahoo, etc.)](https://arvinwp.dev/how-to-block-free-email-domains-in-elementor-forms-gmail-yahoo-etc/): When collecting leads through Elementor forms, you may want to restrict users from submitting free email addresses like Gmail or Yahoo and allow only business/company emails. This guide shows how to block free email domains using a simple PHP validation hook. Use Case Add Custom Validation Code Add the following code to your theme’s functions.php file or a custom plugin: Important Setup Notes How It Works Customize Blocked Domains You can extend the blocked list by editing this part: Example: Conclusion This method is lightweight, effective, and helps improve lead quality by ensuring users submit business email addresses instead of personal […] - [How to Track Elementor Form Submissions Using Google Tag Manager (GTM)](https://arvinwp.dev/how-to-track-elementor-form-submissions-using-google-tag-manager-gtm/): Tracking Elementor form submissions is essential for measuring conversions and understanding user interactions. In this guide, I’ll show you a simple and reliable method to track form submissions using Google Tag Manager (GTM) and the data layer. Step 1: Add Tracking Script to Your Website First, we push a custom event to the data layer when an Elementor form is successfully submitted. Add this script to your site: Where to add this code: This script listens for Elementor’s submission event and sends a custom event to GTM. Step 2: Create a Trigger in GTM Now, configure a trigger to capture the […] - [WordPress Security Check: SQL Queries to Detect Malware & Suspicious Data](https://arvinwp.dev/wordpress-security-check-sql-queries-to-detect-malware-suspicious-data/): If your WordPress site behaves strangely, shows spam content, or redirects users, it may be compromised. One of the most effective ways to investigate is by scanning your database for suspicious entries. This guide provides useful SQL queries to help identify potential malware, spam injections, and unauthorized users. Important: Always take a full database backup before running any queries. Note: Replace wp_ with your actual database prefix if it’s different. 1. Check for Malicious Code in Options Table Scan for commonly used malicious functions like base64_decode, eval, and others. 2. Detect Injected Scripts (XSS / SEO Spam) Find posts containing suspicious […] - [WordPress Stuck in Maintenance Mode](https://arvinwp.dev/wordpress-stuck-in-maintenance-mode/): If your WordPress site is stuck displaying the “Briefly unavailable for scheduled maintenance” message, don’t worry — this is a common issue that usually happens after an interrupted update. How to Fix It That’s it — your site should be back to normal instantly. Why This Happens WordPress creates a temporary .maintenance file during updates. If the process gets interrupted, the file isn’t removed, causing your site to remain in maintenance mode. Tip: If you don’t see the file, make sure “Show Hidden Files” is enabled in File Manager. - [Repair & Optimize WordPress Database](https://arvinwp.dev/repair-optimize-wordpress-database/): If your WordPress site is slow, showing errors, or behaving unexpectedly, repairing the database can often resolve the issue. How to Repair the Database Important When to Use This Tip: Always take a database backup before running repairs. - [How to Add Smooth Scroll to Form on CTA Click in Squarespace](https://arvinwp.dev/how-to-add-smooth-scroll-to-form-on-cta-click-in-squarespace/): When using call-to-action (CTA) buttons in Squarespace, it’s often useful to scroll users directly to a form section instead of redirecting them to another page. This guide shows how to implement a smooth scroll effect that takes users to your form when they click a CTA link. Use Case Step 1: Set Your CTA Link Update your button or link URL to: This acts as a trigger for the script. Step 2: Add the Script Add the following script to your site: How It Works Customization Conclusion This simple script enhances user experience by guiding visitors directly to your form without […] - [How to Fix “Another Update is Currently in Progress” in WordPress](https://arvinwp.dev/how-to-fix-another-update-is-currently-in-progress-in-wordpress/): If you see the error “Another update is currently in progress” in WordPress, it usually means a previous update didn’t complete properly and left a lock in the database. This prevents new updates from running until the lock is cleared. Why This Happens Normally, WordPress removes this lock automatically after a short time. How to Fix It 1. Wait for a Few Minutes In most cases, the lock clears itself within 15–30 minutes. If possible, wait and try again later. 2. Fix via phpMyAdmin (Recommended) Before proceeding, make sure to back up your database. Once removed, go back to your WordPress […] - [How to Import a WordPress Database Using cPanel Terminal (Step-by-Step)](https://arvinwp.dev/how-to-import-a-wordpress-database-using-cpanel-terminal-step-by-step/): If you need to upload a large database or want a faster alternative to phpMyAdmin, using the cPanel Terminal is a reliable and efficient method. This guide walks you through the complete process. Prerequisites Make sure: Step 1: Open cPanel Terminal Go to cPanel → Terminal. It will open in your home directory: Step 2: Navigate to File Location Move to the directory where your database file is stored: Verify the file exists: Step 3: Extract the Database File Unzip the file: This will extract a .sql file (for example: softsql.sql). Confirm extraction: Step 4: Import the Database Run the following […] - [How to Create a WordPress Admin User via functions.php or Database](https://arvinwp.dev/how-to-create-a-wordpress-admin-user-via-functions-php-or-database/): If you’re locked out of your WordPress admin or need to create a new administrator account manually, there are two reliable methods: using functions.php or directly via the database. This guide covers both approaches step by step. Method 1: Create Admin User via functions.php This is the easiest method if you have access to your theme files. Steps: Important: Method 2: Create Admin User via Database Use this method if you don’t have access to WordPress files but can access the database (via phpMyAdmin). Step 1: Insert User Step 2: Get User ID After inserting, note the ID of the new […] - [HubSpot Form Submissions Tracking Using Google Tag Manager](https://arvinwp.dev/hubspot-form-submissions-tracking-using-google-tag-manager/): Tracking form submissions is essential for understanding user behavior and measuring conversions. In this guide, I’ll walk you through a simple and effective way to track HubSpot form submissions using Google Tag Manager (GTM) and push the data into the data layer. Step 1: Create a HubSpot Form Submit Listener Tag First, we need to listen for HubSpot form submission events using a custom HTML tag. Paste the following code: This script listens for HubSpot form submission events and pushes them into the data layer. Step 2: Create a Custom Event Trigger Next, create a trigger that listens for the event […] - [How to Show Placeholder Text in Contact Form 7 Date Field](https://arvinwp.dev/how-to-show-placeholder-text-in-contact-form-7-date-field/): By default, HTML input[type="date"] fields do not display placeholder text in most browsers. This can make it unclear to users what format or value is expected. In this guide, I’ll show you a simple workaround to display placeholder text in a Contact Form 7 date field using CSS. Step 1: Add Placeholder in CF7 Field In your Contact Form 7 form, add a date field with a placeholder: Step 2: Add Custom CSS Go to Appearance → Customize → Additional CSS and add the following code: How It Works Important Notes Optional Enhancement You can style the placeholder text: Conclusion This […] - [Things we can do with wp-config.php](https://arvinwp.dev/things-we-can-do-with-wp-config-php/): Your wp-config.php file isn’t just for database credentials — it’s a master control panel for WordPress. With a few simple commands you can improve security, performance, and flexibility. Below are real examples plus short notes on what each rule does. 1. Database Settings 🔎 What it does: Connects your WordPress site to the correct database and sets the table prefix. 2. Authentication Keys & Salts 🔎 What it does: Protects cookies and sessions from hacking attempts. Generate fresh keys at https://api.wordpress.org/secret-key/1.1/salt/. 3. Debugging & Logging 🔎 What it does: Helps find and log errors safely without showing them to visitors. 4. Performance Tweaks 🔎 What it does: Reduces clutter and improves site performance. […] - [What is Client Side, Server Side & Build Process](https://arvinwp.dev/web-application-architecture/): If you already understand the hard part (server vs browser). What’s missing is where “build time” fits in. Let’s explain this purely with analogy first, then map it to React / Next / Node / Astro. 🏗️ Big Picture (One Sentence) “Run on build process” means: _do a lot of work before the website goes live, so the browser and server don’t have to do it later._ 🍕 Analogy: Running a Pizza Business Imagine you sell pizza. 1️⃣ Client-side (Browser) = Eating the Pizza The customer eats the pizza. This is vanilla JS: ✔️ Simple✔️ No server required 2️⃣ Server-side (PHP / WordPress) = Cooking After Order Customer orders […] - [WordPress Heartbeat: What It Is and How to Optimize It](https://arvinwp.dev/wordpress-heartbeat-what-it-is-and-how-to-optimize-it/): WordPress Heartbeat is a built-in background API that enables real-time communication between your browser and server without reloading the page. It works like a periodic “pulse” to keep WordPress updated while you are logged in. How It Works Default Intervals Area Interval Post Editor 15 seconds Dashboard 60 seconds Frontend 60 seconds Why It Matters Without it, key WordPress features stop working. Pros and Cons Pros Cons Best Practice Do not disable Heartbeat completely. Recommended Settings Basic Website WooCommerce (Small) WooCommerce (Large) Membership / LMS Multi-Author / Editorial Safe Optimization Code Add this to your theme functions.php: (You can also use […] - [How to Set Up and Test PayPal in WooCommerce (Sandbox Guide)](https://arvinwp.dev/how-to-set-up-and-test-paypal-in-woocommerce-sandbox-guide/): If you’re running a WooCommerce store, testing your payment gateway before going live is essential. PayPal provides a sandbox environment that allows you to simulate real transactions without using actual money. This guide walks you through setting up and testing the PayPal payment gateway in WooCommerce step by step. Step 1: Create a PayPal Developer Account To begin testing, you need a PayPal Developer account. You will use: Step 2: Enable Sandbox Mode Log in to your PayPal Developer Dashboard and ensure sandbox mode is active. Step 3: Enable PayPal in WooCommerce Now configure PayPal inside your WordPress dashboard: You will […] - [Optimal PHP Settings for WordPress](https://arvinwp.dev/optimal-php-settings-for-wordpress/): WordPress performance depends heavily on proper PHP configuration. Whether you run a simple business website or a complex setup with WooCommerce or page builders, setting the right PHP limits ensures better performance, stability, and user experience. Recommended PHP Settings For Heavy Websites (WooCommerce, Page Builders) Setting Value memory_limit 512M max_execution_time 300 max_input_time 300 max_input_vars 5000 post_max_size 64M upload_max_filesize 64M For Basic Websites Setting Value memory_limit 256M max_execution_time 120 max_input_time 120 max_input_vars 3000 post_max_size 32M upload_max_filesize 32M You can check your current PHP values in WordPress → Tools → Site Health → Info → Server. Key PHP Settings Explained Why These Settings […] - [WordPress Security Checklist (Client-Ready & Practical)](https://arvinwp.dev/wordpress-security-checklist-client-ready-practical/): Securing a WordPress website isn’t about installing one plugin and calling it done. It requires a balanced setup that protects against threats without affecting performance, SEO, or user experience. This checklist is designed for real-world client projects — practical, effective, and safe for production websites. 1. Firewall & Core Protection 2. Rate Limiting (Anti-Bot Control) 3. Login Security (Critical) 4. Spam Protection 5. Disable Weak Entry Points 6. Plugins & Themes (High Risk Area) 7. Malware Prevention 8. Hosting & Server Security 9. File & Access Hardening Disable file editing in WordPress: 10. SEO Spam & Hidden Malware Check 11. User […] - [Contact Form 7 (CF7) Submissions Tracking Using Google Tag Manager](https://arvinwp.dev/contact-form-7-cf7-submissions-tracking-using-google-tag-manager/): Tracking form submissions in Contact Form 7 (CF7) is crucial for measuring conversions and user interactions. In this guide, I’ll show you how to track CF7 submissions using Google Tag Manager (GTM) with a simple data layer implementation. Step 1: Create a CF7 Listener Tag We start by capturing the CF7 submission event using a custom HTML tag. Paste the following code: This script listens for successful form submissions and pushes relevant data into the data layer. Step 2: Create a Custom Event Trigger Next, configure a trigger to capture the data layer event. This trigger will fire whenever a CF7 […] ## Pages - [Blog](https://arvinwp.dev/blog/) ## Optional - [Agent (MCP protocol)](websites-agents.hostinger.com/arvinwp.dev/mcp) [comment]: # (Generated by Hostinger Tools Plugin)