When working on a WordPress website—whether you’re a developer, content creator, or agency—it’s common to share draft pages or posts with clients before publishing.
However, by default, WordPress requires users to be logged in to view draft content. This can be inconvenient when you simply want to share a preview link with a client or team member who doesn’t have WordPress access.
Most people install plugins to do this, but you can generate secure, shareable preview links without any plugin using a small custom code snippet.
In this guide, you’ll learn how to:
Allow non-logged-in users to view draft previews
Generate a shareable URL for any post type
Automatically display a “Sharable Link” meta box in the WordPress editor
Add one-click buttons to copy or open the preview link
Support posts, pages, and unlimited custom post types (CPTs)
Why Do You Need Shareable Draft Links?
Here are common scenarios where this is extremely useful:
Sending preview links to clients
Allowing team members to review draft content
Sharing landing pages or funnels under development
Getting approval on blog posts, pages, or custom post types
Avoiding unnecessary WordPress accounts or login steps
How the Solution Works
We will:
Add a URL parameter key=guest
Modify the main query to allow draft preview when this key is present
Add a meta box that generates the shareable link
Automatically show the live URL for published posts
Allow preview URL for draft/unpublished posts
Add “Copy Link” and “Open Link” buttons
Full Code: Shareable Preview Link Generator
Place this code in your child theme’s functions.php File.
With just a few lines of code, you can easily generate shareable preview links for any WordPress post type—without plugins.
If you’re building a WordPress site that requires custom workflows, advanced CMS logic, or plugin-free solutions, our team can take complete ownership of the project—from planning and development to testing and launch.
You can Book a Free Project Consultation to discuss your requirements, timelines, and how we can deliver the entire solution for you.
Images play a major role in SEO. When your image file names and titles are optimized correctly, search engines can better understand your content — helping you rank higher in Google Image Search and improving overall keyword relevance.
But updating image file names manually can be risky. One wrong step and your pages may break, leaving broken image links across your website.
The good news? You can bulk update image file names and titles safely in WordPress using a powerful tool: Phoenix Media Rename.
In this guide, you’ll learn:
Why optimized image names help SEO
How to rename images safely without breaking pages
How Phoenix Media Rename automatically updates all internal links
Best practices for SEO-friendly file names
Tips for bulk renaming efficiently
Step 1: Install Phoenix Media Rename
Go to Plugins → Add New
Search “Phoenix Media Rename”
Install & activate
Step 2: Bulk Rename Images (Individually or in Groups)
Go to Media → Library → List View
You will see a new rename field next to each image
Update the file name and title
Then select Rename & Retitle
Then click on apply for update
Benefits of Phoenix Media Rename for SEO
Boosts image search visibility
Fixes messy media libraries
Prevents broken URLs
Keeps all page layouts intact
Helps search engines understand your content better
Speeds up images optimization
Conclusion
Renaming image file names is one of the simplest yet most powerful SEO improvements you can make — but it must be done safely.
With Phoenix Media Rename, you can bulk rename image files and update titles across your entire WordPress site without breaking a single link.
If you’re serious about improving SEO, cleaning up your media names is a highly effective step.
If you’re managing a WordPress site with hundreds (or thousands) of images and need bulk SEO-friendly updates without risking content or rankings, our team can handle the entire process—from planning and execution to validation and rollout.
You can Schedule a Free Consultation to discuss your site structure, SEO concerns, and how we can safely implement large-scale WordPress changes for you.
Gravity Forms is one of the most powerful form builders available for WordPress — but it has one limitation:
It does not offer a built-in Rich Text Editor (WYSIWYG) field.
For websites that rely on user-generated content—such as blogs, directories, reviews, job listings, or frontend post submissions—a basic textarea simply isn’t enough.
A proper Rich Text Editor allows users to format text with:
Headings (H1–H6)
Links & Media
Bold, Italic, Underline
Bullet and Numbered Lists
Images
Blockquotes
Inline styles like alignment, colors, and spacing
So in this tutorial, you’ll learn how to add a fully functional Rich Text Editor field inside Gravity Forms using custom code — without installing an extra plugin.
What This Solution Supports
Works on frontend
Uses TinyMCE (WordPress default editor)
Supports media uploads
Outputs clean formatted HTML
Works with Gravity Forms Post Creation Add-On
Prevents raw HTML from showing in visual mode
Why You Need a Custom Rich Text Editor in Gravity Forms
A normal textarea field cannot store or render formatted content like:
Titles and headings
Styled paragraphs
Embedded media or images
Links and structured lists
If you’re building forms like:
Blog submission form
Directory or listing submission
User reviews
Job listing submission
Knowledgebase article submission
Community-generated content
…then users need a proper editor — not a plain text field.
Step-by-Step Guide
Step 1 — Add This Code to Your functions.php
Copy and paste the following entire code block into your theme’s functions.php or a custom plugin:
( Code already formatted, so no changes needed — paste exactly as provided.)
Once added, Gravity Forms will display a new field called: Rich Text Editor under the “Custom Fields” tab.
Step 2 — Create a New Gravity Form
Go to Forms → New Form
Give it a name (Example: Blog Submission Form)
Add standard fields like:
Name
Email
Post Title
Add your new field: Rich Text Editor
Save the form
Tip: Note the Field ID for later (Example: Field ID: 10).
Step 3 — Configure Gravity Forms Post Creation Add-On
Go to Form → Settings → Post Creation
Create a new feed
Settings example:
Setting
Example
Post Type
Post (or Custom Post Type)
Status
Draft (recommended for testing)
Author
Logged-in User
Title
{Post Title:1}
Content
{Description:10} ← must match Rich Editor Field ID
(Optional) Map:
Categories
Tags
Featured Image
Custom fields
Important: Ensure the content field uses the field ID of the Rich Text Editor.
Step 4 — Add the Form to a Page
Use this shortcode anywhere: [ gravityform id="123" title="true" description="false" ajax="true" ]
Replace 123 with your form ID.
Publish your page (example: Submit a Blog).
Step 5 — Test the Submission
Open the form on the frontend
Format content using the editor (bold, headings, images, lists, etc.)
Submit the form
Check:
Posts → All Posts
You should see a new post created — with formatting preserved.
In WP Admin go to Posts → All Posts and find the new post (status based on your feed setting).
Click Edit on the post and check the Visual tab in the editor — the content should render as formatted HTML (not raw HTML tags).
View the post on the frontend and confirm headings, lists, images and styling display correctly.
Final Result
You now have a fully working frontend content editor inside Gravity Forms — without additional plugins.
Works with WordPress media uploader
Supports formatting, links, images, headings
Perfect for guest posting, user-generated content, and custom submission workflows
Conclusion
Adding a rich text editor to Gravity Forms dramatically improves the user experience for forms involving long-form content.
Whether you’re building a submission portal, directory, review system, or frontend publishing workflow — this upgrade makes Gravity Forms behave more like a real blogging platform.
If your project requires custom Gravity Forms functionality, enhanced user experience, or plugin-free custom editors, our team can handle the complete development—from planning and implementation to testing and launch.
You can Book a Free Project Consultation to discuss your requirements, timelines, and how we can deliver a scalable, high-quality solution for your website.
When building dynamic templates using Divi + Advanced Custom Fields (ACF), you may want certain sections or columns to appear only if the ACF field has a value.
For example:
Show the “Contact Information” section only if the product has phone/email fields
Hide empty specifications
Hide columns that have no ACF content
Divi makes this very easy using Conditional Display Logic.
In this guide, I’ll show you how you can hide:
Individual blurbs
Columns
Entire sections
…based on whether ACF fields contain data.
Step 1: Edit Your Template in Divi Builder
Open your template in:
Divi → Theme Builder → Product Template (or any template)
Here I created a Product Template and added multiple ACF fields to each product.
Step 2: Add ACF Fields Inside Blurbs
Now add your ACF content inside multiple Blurb Modules.
I added the ACF field value inside the Body of each blurb.
Title = Your label (e.g., “Toll Free Number”)
Body = Select ACF Field from Dynamic Content
This allows each blurb to show the product data dynamically.
Step 3: Apply Display Conditions on Each Column
Now, we want each column to appear only if its blurb has ACF data.
To do this:
Open Column Settings
Go to Advanced → Conditions
Add condition:
Custom Field
Field Name → your ACF field key (example: toll_free_number)
Display Only If → Is Any Value
This means:
If that ACF field has ANY data → the column appears
If the field is empty → the column hides automatically
Repeat this for all columns with ACF blurbs.
Step 4: Hide Entire Section When All ACF Fields Are Empty
Now we want the main section to hide if all inner fields are empty.
To do that:
Open Section Settings
Go to Advanced → Conditions
Add multiple conditions for all ACF fields you used
Use “OR” logic (default behavior)
Condition:
Display only if Custom Field is any value
This means:
If any one ACF field has data → Section is visible
If all ACF fields are empty → Section hides automatically
Step 5: Save Template & Test
That’s it!
Now:
If any column has its ACF data → column shows
If ACF data is missing → column hides
If all ACF blurbs are empty → entire section hides
If at least one field has a value → section appears normally
This keeps your product or page templates clean, dynamic, and fully automated.
If your website relies on ACF-powered layouts, dynamic visibility logic, or custom Divi behavior, our team can handle the complete development—from planning and implementation to testing and launch—without plugin bloat.
You can Book a Free Project Consultation to discuss your requirements, timelines, and how we can deliver a scalable, production-ready solution for your site.
Displaying events in a clean “Upcoming” and “Past” format is one of the most requested features on WordPress event websites. Whether you’re managing workshops, webinars, conferences, or local meetups—showing events in the right chronological order boosts user engagement and improves navigation.
With JetEngine’s Query Builder, you can easily create two dynamic listings:
Upcoming Events – sorted by closest future date
Past Events – sorted by most recent past date
In this guide, you’ll learn how to build both listings from scratch using JetEngine, Elementor, and your custom event date fields.
Why Use JetEngine Query Builder for Event Filters?
JetEngine gives you powerful control over custom post types, meta fields, and dynamic content. With the Query Builder, you can:
– Filter events by date automatically
– Sort events by ascending/descending order
– Display upcoming & past events on any page
– Reuse the queries across multiple listings
– Avoid writing custom PHP code
Step 1: Prepare Your Event Structure
Create a Custom Post Type
– JetEngine → Post Types → Add “Events”
Add an Event Date Meta Field
– JetEngine → Meta Fields
– Field Name: event_start_date
– Field Name: event_end_date
– Field Type: Date (or DateTime)
– Save Format: Y-m-d
Step 2: Build the Query for Upcoming Events
JetEngine → Query Builder → Add New
Query Type: Posts Query
Post Type: Events
Sorting:
– Order By: By date
– Order: ASC ( From lowest to highest values (1, 2, 3; a, b, c) )
Meta Query:
– Key: event_end_date
– Operator: Greater than ( > )
– Value: Today
– Type: Numeric
Name it: Upcoming Events Query
Step 3: Build the Query for Past Events
JetEngine → Query Builder → Add New
Query Type: Posts Query
Post Type: Events
Sorting:
– Order By: By date
– Order: ASC ( From highest to lowest values (3, 2, 1; c, b, a) )
Meta Query:
– Key: event_end_date
– Operator: Less than ( < )
– Value: Today
– Type: Numeric
Name it: Past Events Query
Step 4: Create the Event Listing Template
JetEngine → Listings → Add New
Select CPT: Events
Add:
– Dynamic Title
– Event Start Date
– Event End Date
– Featured Image
– Location
– View Details Button
Step 5: Add Upcoming & Past Listings on a Page
For Upcoming Events:
– Add Listing Grid in Elementor
– Enable Custom Query
– Select: Upcoming Events Query
For Past Events:
– Repeat with: Past Events Query
Final Thoughts
Using JetEngine’s Query Builder makes event management fast, scalable, and automatic. Your listings update dynamically without manual work, making your website more professional and user-friendly.
If you’re building a WordPress site with dynamic event listings, date-based queries, or complex JetEngine logic, our team can take full ownership of the project—from data structure and query setup to frontend integration and performance optimization.
You can Book a Free Project Consultation to discuss your goals, timelines, and how we can deliver a reliable, scalable solution tailored to your website.
A clean, modern website isn’t just about colors and layout — it’s also about user experience. One of the most popular UX enhancements used on professional websites today is the sticky shrinking header.
This feature allows your navigation bar to stay visible as users scroll, while smoothly shrinking in size to maximize screen space. It keeps important navigation links always accessible and improves the browsing experience — especially on long pages.
In this tutorial, we’ll walk you through how to create a professional sticky shrink header in Divi using built-in features — fast, clean, and performance-friendly.
Why Use a Sticky Shrink Header?
A well-optimized header can make a big difference in how visitors interact with your site. Sticky headers provide:
Continuous navigation access
Better UX for mobile and desktop users
Modern, professional design feel
More space for content while keeping branding visible
Whether you’re building a business site, portfolio, or e-commerce store, this effect adds polish and functionality your visitors will notice.
Step-by-Step: Create a Sticky Shrink Header Using Divi
Below is the exact method we used to build this feature in our demo site — and you can follow the same steps:
Step 1: Create a New Header Layout
Go to: Divi → Theme Builder
Click Add Global Header or create a custom header for selected post types or pages.
Choose Build From Scratch.
Step 2: Add Your Structure
Inside your header, add:
Section
Row
Menu Module
This will be the foundation for your navigation.
Step 3: Enable Sticky Behavior
Now the magic begins.
Open the Menu Module Settings
Go to: Advanced → Scroll Effects
Under Sticky Position, select: Sticky: Top
Once enabled, Divi will display a new sticky icon next to editable fields (similar to hover states).
Step 4: Apply Shrinking Effects (Sticky State Styling)
To create a professional shrinking effect, adjust the following settings for both normal and sticky states:
Logo Size
Menu Text Size
Padding / Spacing
Background Color
Box Shadow (optional)
Example:
Property
Normal State
Sticky State
Logo Height
40px
30px
Menu Font Size
18px
16px
Top/Bottom Padding
30px
10px
These subtle visual changes create a smooth professional shrinking animation when users scroll.
Step 5: Save & Publish
Once everything looks perfect:
Click Save → Exit the Theme Builder → Visit your site.
You should now see your sticky shrink header in action — smooth, modern, and fully responsive.
Final Result: A Clean, Modern Navigation Experience
Your new header will now:
Stick to the top while scrolling
Shrink smoothly to save space
Maintain full navigation visibility
Enhance overall user experience
All without installing extra plugins or affecting site speed.
Final Thoughts
A sticky shrinking header may seem like a small design change, but it dramatically improves:
Branding visibility
Navigation usability
Professional perception
If you’re building a WordPress site that requires custom Divi UI interactions, sticky headers, or performance-optimized front-end behavior, our team can take full ownership of the project—from design implementation and development to testing and launch.
You can Schedule a Consultation to discuss your goals, timelines, and how we can deliver a polished, production-ready solution for your website.
If you’re using Directorist – Business Directory Plugin and want to customize your single listing page layout using Elementor without writing complex templates, you’re in the right place.
In this tutorial, you’ll learn how to structure your single business listing page into a two-column layout and control what content appears on the left or right—using a simple CSS class and small JavaScript snippet.
Step 1: Install the Directorist Plugin
First, install the plugin from the official WordPress repository:
Directorist – Business Directory Plugin (Available in WordPress Plugins Directory)
This is where you will customize the single listing design.
Configure the Listing Header
Click on Listing Header and toggle ON/OFF the elements you want to display:
Back Button
Bookmark
Share
Report
Listing Title
Location
Category
Rating
Badges
Pricing
Configure Your Listing Contents
Next, go to:
Listing Contents
Drag, reorder, or remove blocks like:
Description
Business Information
Business Photos
Location Map
Reviews
Related Listings
Author Info
Custom Content
After you finish arranging fields, click Update.
Step 3: Assign Left or Right Column Placement
Now we need to tell the system which content belongs in the sidebar and which belongs in the main content area.
Click a section → open its settings → find Custom Block Classes.
Add one of the following:
Class Name
Layout Position
left-side
Appears in left/main content section
right-side
Appears inside the sidebar
Example:
Description → left-side
Business Info / Contact Form → right-side
Step 4: Add Custom Elementor JavaScript
Now we’ll use a small script to organize the layout structure.
Go to:
Elementor → Custom Code → Add New
Name: Create Directory Single Page JS
Location:Header or Footer (recommended Footer)
Paste this script:
<script>
jQuery(document).ready(function($) {
// Insert new layout row after the listing header
$('.directorist-single .directorist-single-wrapper .directorist-single-listing-header').after(`
<div class="directorist-row directorist-single-bottom">
<div class="directorist-single-bottom-left directorist-col-lg-8"></div>
<div class="directorist-single-bottom-right directorist-col-lg-4"></div>
</div>
`);
// Move left-side items into left content area
$('.directorist-single .directorist-single-wrapper > .left-side')
.appendTo('.directorist-single .directorist-single-wrapper .directorist-single-bottom-left');
// Move right-side items into sidebar
$('.directorist-single .directorist-single-wrapper > .right-side')
.appendTo('.directorist-single .directorist-single-wrapper .directorist-single-bottom-right');
});
</script>
Save and make sure it applies sitewide or only on Directorist single pages (recommended).
Step 5: Style and Customize
Now that the structure is created, you can:
Add spacing
Add backgrounds
Customize typography
Style widgets
Make it visually match your directory branding.
Final Output
You’ll now have a clean, structured two-column layout where:
Main business details appear on the left
Contact, map, info, and widgets appear on the right sidebar
Conclusion
With just a few simple steps and a small JavaScript tweak, you can fully customize the Directorist Single Listing Page layout using Elementor—without editing plugin files or writing a custom template.
This method gives you complete layout control and makes your business directory look more professional and user-friendly.
If you’re building a business directory, custom listing platform, or Elementor-based marketplace, our team can handle the complete project—from data structure and custom templates to dynamic integrations and performance optimization.
You can Book a Free Project Consultation to discuss your requirements, timelines, and how we can deliver a scalable, production-ready solution for your directory website.
Popups are a great way to display offers, lead forms, promotions, or important messages. Most Divi users rely on third-party popup plugins, but the truth is—you can build a fully custom popup in Divi using only the Theme Builder, CSS, and a tiny line of jQuery.
The best part?
No extra plugins
Lightweight and fast
100% design freedom
Works with any Divi page
This tutorial will walk you through creating a fully functional popup in Divi step-by-step.
Why Build Popups Without Plugins?
Using Divi alone gives you some big advantages:
Better page speed (no extra plugin loading)
Full control of styling with the Divi Visual Builder
No plugin conflicts
Reusable popup design for multiple pages
Works for WooCommerce, landing pages, and blog posts
Step-by-Step Guide to Creating a Popup in Divi
Follow these steps to build your custom popup from scratch:
Step 1: Create and Configure the Popup Section
Open the page in Divi and enable the Visual Builder.
Add a new Section where your popup will appear and design it with your content (text, image, form, button, blurb, etc.).
Add Two rows Inside Section
Apply the following settings to the section:
Section Class : popup-modal
Section Background : transparent
Position (Advanced → Position) :
Position = Fixed
Z-Index = 9999
This section now acts as your main popup container and stays above all page content.
Step 2: Configure Two Rows Inside the Popup Section
Inside the popup section, create:
Row 1 → Popup Content
Row 2 → Overlay Background
Configure Row 1 (Popup Content)
Add your content modules such as:
Text or heading
Image
Button
Now add a close icon ( Divi Icon):
Set Icon Settings:
Icon Class : popup-trigger
Position (Advanced → Position) :
Position = Absolute
Z-Index = 11
Vertical/Horizontal Offset = 0px ( Set as per your need )
This positions the close icon on top of the popup.
Configure Row 2 (Overlay Background)
This will act as the background overlay to fade out the rest of the page.
Go to Row Settings and add:
Row Class : popup-overlay
Position (Advanced → Position) :
Position = Absolute
Z-Index = 9
Width = 100%
Height = 100%
Step 3: Hide the Popup on Page Load
Go to: Section Settings → Advanced → Custom CSS → Main Element
Add: display: none;
This keeps the popup hidden until triggered.
Step 4: Add jQuery to Enable Popup Actions
Go to: Divi → Theme Options → Integration → Add code to <head>
Finally, add a button anywhere on the page and give it this class: popup-trigger
This button will open the popup when clicked.
Test Now Popup Is Ready!
Now your popup will:
Open when the trigger button is clicked
Close when clicking the close icon
Close when clicking outside (overlay background)
Final Thoughts
Creating a popup in Divi without plugins gives you full flexibility and keeps your site lightweight. Once you’ve finished styling and testing, you can duplicate the layout and reuse it across multiple pages.
Custom popups built with Divi’s Theme Builder let you improve conversions without relying on heavy plugins. For a high-performing, professionally developed website, Book a Free Consultation.
Youtube Video Url
Youtube Video Url
Try a Free 2-Hour Test Task
Experience our quality, speed, and communication on any small WordPress task before you commit. No contract. No cost. No obligation. [For New Agency Partners]
"*" indicates required fields
Try a Free 2-Hour Test Task
Experience our quality, speed, and communication on any small WordPress task before you commit. No contract. No cost. No obligation. [For New Agency Partners]