<?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>DEV Community: Lana Miro</title>
    <description>The latest articles on DEV Community by Lana Miro (@lana_miro).</description>
    <link>https://dev.to/lana_miro</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%2F150232%2Fece4f990-76be-483f-8217-f66e8d3434cf.jpg</url>
      <title>DEV Community: Lana Miro</title>
      <link>https://dev.to/lana_miro</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/lana_miro"/>
    <language>en</language>
    <item>
      <title>Invitation to WordPress Agency Summit 2024, Online</title>
      <dc:creator>Lana Miro</dc:creator>
      <pubDate>Fri, 20 Sep 2024 10:04:53 +0000</pubDate>
      <link>https://dev.to/lana_miro/invitation-to-wordpress-agency-summit-2024-online-1f3p</link>
      <guid>https://dev.to/lana_miro/invitation-to-wordpress-agency-summit-2024-online-1f3p</guid>
      <description>&lt;p&gt;Connect with fellow WordPress developers and agencies for a day filled with valuable insights and practical discussions on 27th of September. &lt;/p&gt;

&lt;p&gt;Explore the latest industry trends, exchange ideas, and gain knowledge to enhance your projects. It’s a great opportunity to grow your expertise and build strong connections within the WordPress community.&lt;/p&gt;

&lt;p&gt;Join us for an engaging and collaborative experience!&lt;/p&gt;

&lt;p&gt;Registration is here: &lt;br&gt;
&lt;a href="https://crocoblock.com/wordpress-agency-summit/" rel="noopener noreferrer"&gt;https://crocoblock.com/wordpress-agency-summit/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>webdev</category>
      <category>freelance</category>
      <category>agency</category>
    </item>
    <item>
      <title>Top 5 JetEngine Taxonomy Use Cases for Elementor</title>
      <dc:creator>Lana Miro</dc:creator>
      <pubDate>Thu, 21 Mar 2024 10:52:18 +0000</pubDate>
      <link>https://dev.to/lana_miro/top-5-jetengine-taxonomy-use-cases-for-elementor-7i2</link>
      <guid>https://dev.to/lana_miro/top-5-jetengine-taxonomy-use-cases-for-elementor-7i2</guid>
      <description>&lt;p&gt;Imagine your website as a comprehensive database where each page or post is a separate element, and each category or tag is data that defines relationships and classifications. Without a well-organized search and classification system, visitors may encounter difficulties in finding the information they need because the content is unstructured and lacks clear navigational markers.&lt;/p&gt;

&lt;p&gt;By combining the convenience of Elementor with the custom post organization capabilities of &lt;a href="https://crocoblock.com/blog/jetengine-start-working-with-dynamic-content-while-using-elementor/" rel="noopener noreferrer"&gt;JetEngine&lt;/a&gt;, you unlock new possibilities in web development, allowing you to create websites with thoughtful structure and &lt;a href="https://crocoblock.com/blog/website-navigation-basics/" rel="noopener noreferrer"&gt;convenient navigation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Let’s consider five examples of using JetEngine’s custom taxonomy with Elementor to optimize your website’s structure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Table of Contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;What Is the JetEngine Taxonomy Tool?&lt;/li&gt;
&lt;li&gt;Why JetEngine Taxonomy Tool?&lt;/li&gt;
&lt;li&gt;WordPress Taxonomy Types&lt;/li&gt;
&lt;li&gt;Benefits of Using JetEngine Taxonomy Tool&lt;/li&gt;
&lt;li&gt;
Best Examples of JetEngine Taxonomy Tool Implementations

&lt;ul&gt;
&lt;li&gt;Use case 1: Real estate portfolio&lt;/li&gt;
&lt;li&gt;Use case 2: Product catalog&lt;/li&gt;
&lt;li&gt;Use case 3: Travel website&lt;/li&gt;
&lt;li&gt;Use case 4: Service provision website&lt;/li&gt;
&lt;li&gt;Use case 5: Job board website&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;FAQ&lt;/li&gt;

&lt;li&gt;Takeaway&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  What Is the JetEngine Taxonomy Tool?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://crocoblock.com/plugins/jetengine/" rel="noopener noreferrer"&gt;JetEngine&lt;/a&gt;‘s taxonomy tool for Elementor is a feature that extends the capabilities of the Elementor plugin for creating posts and pages in WordPress. It helps you conveniently manage and display classifications of your content.&lt;/p&gt;

&lt;p&gt;For example, if you run a blog about different countries, you can add custom taxonomies using JetEngine to create a taxonomy called “Continents” and then add terms such as “Europe,” “Asia,” and “South America.” Then, you can categorize your blog posts under these terms.&lt;/p&gt;

&lt;p&gt;JetEngine integrates with the drag-and-drop &lt;a href="https://crocoblock.com/blog/elementor-plugin-review/" rel="noopener noreferrer"&gt;Elementor editor&lt;/a&gt;. This allows you to easily add widgets to your web pages that visually display these classifications in an attractive way. There are &lt;a href="https://crocoblock.com/blog/elementor-widgets-explained/" rel="noopener noreferrer"&gt;widgets&lt;/a&gt; for archive lists, single term templates, and many more. Overall, JetEngine taxonomy provides complete control over how your content is organized and presented, leading to more structured, user-friendly websites with enhanced navigation capabilities.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why JetEngine Taxonomy Tool?
&lt;/h2&gt;

&lt;p&gt;Tools that JetEngine offers for creation custom taxonomies provide users with a convenient interface within the WordPress dashboard, allowing them to create, edit, and manage taxonomies effortlessly. Users can define hierarchical &lt;a href="https://crocoblock.com/blog/wordpress-relationships-explained/" rel="noopener noreferrer"&gt;relationships&lt;/a&gt;, set customizable labels, and configure other parameters according to their site’s requirements.&lt;/p&gt;

&lt;p&gt;One of the key advantages of JetEngine’s custom taxonomy tool is its seamless integration with the Elementor page builder, enabling users to incorporate taxonomy elements directly into the design of their web pages. This integration dynamically filters, sorts, and displays content based on taxonomy terms, offering users a more interactive and visually appealing browsing experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  WordPress Taxonomy Types
&lt;/h2&gt;

&lt;p&gt;There are two main types for effective post organization: &lt;strong&gt;categories&lt;/strong&gt; and &lt;strong&gt;tags&lt;/strong&gt;. Let’s take a closer look at both.&lt;/p&gt;

&lt;h3&gt;
  
  
  Categories
&lt;/h3&gt;

&lt;p&gt;These are hierarchical &lt;a href="https://crocoblock.com/blog/wordpress-taxonomy-explained/" rel="noopener noreferrer"&gt;WordPress taxonomies&lt;/a&gt;, where you can create subcategories, similar to a big box containing several smaller boxes, each of which can contain even smaller ones. Each category is referred to as a term. You can assign one or multiple categories to a single post or page.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fab6nghnj95aeg6teqylm.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%2Fab6nghnj95aeg6teqylm.png" alt="wordpress categories" width="760" height="193"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pro tip&lt;/p&gt;

&lt;p&gt;However, for the ease of site navigation, it’s better to stick to the minimum necessary categories.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tags
&lt;/h3&gt;

&lt;p&gt;Tags serve a similar function to categories but without hierarchical structures. They group posts with similar details, focusing on finer aspects of content than general topics. For example, if you want to create genres and subgenres for your movie website, you can use categories for hierarchical structures and tags for more specific groupings. Creating tags is similar to creating categories; you can configure them in the &lt;strong&gt;Posts &amp;gt; Tags&lt;/strong&gt; section or the panel next to the visual editor. Here, you can define slugs and descriptions.&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%2Fblk8f3nvus7m5bu3zfhn.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%2Fblk8f3nvus7m5bu3zfhn.png" alt="wordpress tags" width="760" height="182"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you want detailed instructions on creating a custom taxonomy, please follow &lt;a href="https://crocoblock.com/knowledge-base/features/custom-taxonomy-overview/" rel="noopener noreferrer"&gt;our guide&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Benefits of Using JetEngine Taxonomy Tool
&lt;/h2&gt;

&lt;p&gt;We’ve touched on the key advantages of JetEngine taxonomy for Elementor, but now, let’s explore them in greater detail.&lt;/p&gt;

&lt;h3&gt;
  
  
  Enhanced сontent organization
&lt;/h3&gt;

&lt;p&gt;JetEngine custom taxonomy tool simplifies content structuring by allowing the creation of custom classification systems. This not only streamlines content organization but also enhances the overall user experience, enabling visitors to find the information they need quickly.&lt;/p&gt;

&lt;h3&gt;
  
  
  Powerful taxonomy listings
&lt;/h3&gt;

&lt;p&gt;Using the &lt;a href="https://crocoblock.com/knowledge-base/jetengine/creating-a-listing-template-for-the-terms-from-custom-taxonomy-with-jetengine/" rel="noopener noreferrer"&gt;Listing Grid widget&lt;/a&gt; in Elementor powered by JetEngine, you can create dynamic lists showcasing your taxonomy terms. This feature enables visually appealing displays of taxonomies with customizable layouts and presented information, offering an engaging way to navigate through your content.&lt;/p&gt;

&lt;h3&gt;
  
  
  Flexibility and control
&lt;/h3&gt;

&lt;p&gt;JetEngine provides extensive control over your taxonomies. You can define custom labels, configure additional parameters like term hierarchy (e.g., categories and subcategories), and even link &lt;a href="https://crocoblock.com/plugins/jetengine/custom-fields/" rel="noopener noreferrer"&gt;custom meta fields&lt;/a&gt; with terms for richer data representation. Such flexibility ensures that your taxonomy system aligns seamlessly with your content structure and presentation preferences.&lt;/p&gt;

&lt;h3&gt;
  
  
  Optimized integration with Elementor
&lt;/h3&gt;

&lt;p&gt;JetEngine seamlessly integrates with Elementor, allowing you to utilize the familiar interface for developing and creating taxonomy listings. This eliminates the need for complex coding, making the entire process more convenient for users accustomed to Elementor’s intuitive &lt;a href="https://crocoblock.com/blog/web-design-principles/" rel="noopener noreferrer"&gt;design capabilities&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Best Examples of JetEngine Taxonomy Tool Implementations
&lt;/h2&gt;

&lt;p&gt;We’ve reached the most interesting part – the use cases, thanks to which you’ll see how simple and effective content categorization can be. Below are several examples of how JetEngine taxonomy can be used to categorize content on different website types.&lt;/p&gt;

&lt;h3&gt;
  
  
  Use case 1. Real estate portfolio
&lt;/h3&gt;

&lt;p&gt;If you want to categorize &lt;a href="https://crocoblock.com/dynamic-templates/findero/" rel="noopener noreferrer"&gt;real estate properties&lt;/a&gt; on your website, we can create custom taxonomies such as “Location,” “Property Type,” or “Purpose.” Each property posted on the site is linked to the corresponding taxonomy based on its characteristics.&lt;/p&gt;

&lt;p&gt;Let’s take a look at a step-by-step taxonomy setup using Case 1 as an example. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1. Installing and configuring the JetEngine plugin&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Install and activate the JetEngine plugin on your website. Navigate to &lt;strong&gt;JetEngine &amp;gt; Taxonomies &amp;gt; Add New&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Enter the category name (e.g., “Location”). Choose “Properties” as the &lt;strong&gt;Post Type&lt;/strong&gt; from the list. Optionally, enable the &lt;strong&gt;Edit taxonomy/meta box link&lt;/strong&gt; for quicker access to taxonomy settings.&lt;/p&gt;

&lt;p&gt;In the end, click the “ &lt;strong&gt;Add Taxonomy&lt;/strong&gt; ” button to create the taxonomy.&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Step 2. Creating tags for the category&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Go to the &lt;strong&gt;Properties &amp;gt; Locations&lt;/strong&gt; page. Enter the tag name (e.g., “Los Angeles”) and a corresponding slug. Click on the “ &lt;strong&gt;Add New Tag&lt;/strong&gt; ” button to add the tag. The newly added tag will appear on the right side.&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Step 3. Assigning tags to properties&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Navigate to the &lt;strong&gt;Properties&lt;/strong&gt; page and select the desired property. On the right panel, find the created category and choose the appropriate tag. Utilize the JetEngine’s &lt;a href="https://crocoblock.com/widgets/dynamic-terms/" rel="noopener noreferrer"&gt;&lt;strong&gt;Dynamic Terms&lt;/strong&gt;&lt;/a&gt; widget to create a label showing where your property is located. In the &lt;strong&gt;General&lt;/strong&gt; section, select the taxonomy you created. You can customize the tag’s appearance as desired (size, color, style, etc.)&lt;/p&gt;

&lt;p&gt;Click “ &lt;strong&gt;Update&lt;/strong&gt; ” to save the changes.&lt;/p&gt;



&lt;p&gt;Now, the property is categorized and ready to be displayed on your website.&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%2Fayamdpkpt4brwoycupbl.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%2Fayamdpkpt4brwoycupbl.png" alt="real estate portfolio" width="760" height="531"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Use case 2. Product catalog
&lt;/h3&gt;

&lt;p&gt;For enhanced product browsing, it’s essential to organize the product catalog into categories for easier searching for desired items. If you’re running a &lt;a href="https://crocoblock.com/dynamic-templates/only-books/" rel="noopener noreferrer"&gt;bookstore&lt;/a&gt;, optimizing the search using hierarchical taxonomies like type of book or genres to classify books in your catalog is advisable. Arrange books into categories such as author, publication year, and others to ensure convenience and ease for website users.&lt;/p&gt;

&lt;p&gt;To build taxonomies for a product catalog, use the same process as before, but this time, to create hierarchical categories, go to &lt;strong&gt;Taxonomies &amp;gt; Advanced Settings&lt;/strong&gt;. Within the advanced settings, locate the &lt;strong&gt;Hierarchical&lt;/strong&gt; toggle and enable it.&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%2Fhtsb8ajgm8wyuifgwixg.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%2Fhtsb8ajgm8wyuifgwixg.png" alt="hierarchical taxonomy setup" width="760" height="745"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, you will see that in the admin panel, within the section of your post, a button for adding a new term will appear. Simply type the category name (for example, Paper Book or E-Book). Underneath the slug field, you’ll find a new option labeled &lt;strong&gt;Parent Category&lt;/strong&gt;. Here, you’ll select the appropriate subcategory (e.g., for E-Book, add Text Book or Audio Book). Click on the “ &lt;strong&gt;Add New Tag&lt;/strong&gt; ” button to include the tag.&lt;/p&gt;



&lt;p&gt;Now, assign this category to the posts or products for which you’ve created this taxonomy.&lt;/p&gt;

&lt;h3&gt;
  
  
  Use case 3. Travel website
&lt;/h3&gt;

&lt;p&gt;Diversify your &lt;a href="https://crocoblock.com/dynamic-templates/travengo/" rel="noopener noreferrer"&gt;travel website&lt;/a&gt; by categorizing the tours into custom taxonomies like countries such as France, Germany, and Iceland. This method simplifies tour discovery for users, making it easier to find relevant ones. Additionally, it enhances promotional efforts, ensuring effective targeting of specific event categories.&lt;/p&gt;

&lt;p&gt;In JetEngine, create a new “Country” taxonomy for the Tour page. Define categories like France, Germany, etc. Then, when selecting a tour, choose the appropriate country category/tag. &lt;/p&gt;



&lt;h3&gt;
  
  
  Use case 4: Service provision website
&lt;/h3&gt;

&lt;p&gt;It’s time to organize your &lt;a href="https://crocoblock.com/dynamic-templates/medcenter/" rel="noopener noreferrer"&gt;service provision website&lt;/a&gt; to ensure users can easily find what they need. If your website offers medical services, categorize them into specific fields such as &lt;em&gt;dermatology, cosmetology, surgery&lt;/em&gt;, and more.&lt;/p&gt;

&lt;p&gt;Just like in previous examples, start by going to &lt;strong&gt;JetEngine &amp;gt; Taxonomies &amp;gt; Add New&lt;/strong&gt;. Create a category (e.g., Service Type) and choose “Doctors” as the taxonomy type from the list.&lt;/p&gt;

&lt;p&gt;Within the &lt;strong&gt;Doctors&lt;/strong&gt; field, add the necessary category terms.&lt;/p&gt;

&lt;p&gt;Assign categories to your posts, and the ultimate outcome will resemble this:&lt;/p&gt;



&lt;h3&gt;
  
  
  Use case 5: Job board website
&lt;/h3&gt;

&lt;p&gt;Ditch the one-size-fits-all approach and organize your team by vacancy type (full-time, intern, volunteer) using custom categories. This lets you showcase your diverse &lt;a href="https://crocoblock.com/dynamic-templates/labortime/" rel="noopener noreferrer"&gt;workforce&lt;/a&gt; efficiently and build user-friendly dynamic employee lists – a win for both you and website visitors.&lt;/p&gt;

&lt;p&gt;The steps remain the same as in previous cases. Navigate to &lt;strong&gt;JetEngine &amp;gt; Taxonomies &amp;gt; Add New&lt;/strong&gt;. Add the needed category (for example, Vacancy Type) and choose “Jobs” as the taxonomy type from the list.&lt;br&gt;&lt;br&gt;
Let’s diversify by opting for a non-hierarchical taxonomy here. In the &lt;strong&gt;Jobs (Vacancies)&lt;/strong&gt; field, click on the newly created tag and add the labels you require for classification. We decided to choose &lt;em&gt;Full-time, Intern&lt;/em&gt;, and &lt;em&gt;Volunteer&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%2Feqg8j44qcdw8738kphyg.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%2Feqg8j44qcdw8738kphyg.png" alt="non-hierarchical taxonomy" width="760" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Navigate to the &lt;strong&gt;Jobs (Vacancies)&lt;/strong&gt; page, choose a desired employee, and select the relevant tag. &lt;/p&gt;

&lt;p&gt;Here’s the final result after we categorized the workers:&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%2F4wdmlyw4rwhs9cp1oigs.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%2F4wdmlyw4rwhs9cp1oigs.png" alt="job board categorization" width="760" height="429"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pro tip&lt;/p&gt;

&lt;p&gt;Plan your taxonomy structure. Before creating taxonomies, think about how you want to categorize your content. For complex category structures, use hierarchical taxonomies.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What are taxonomies in WordPress?&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Taxonomies in WordPress are a way of organizing and categorizing content. The default taxonomies include categories and tags.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How can I use JetEngine taxonomy for Elementor?&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;To use JetEngine taxonomy tool, you need to have a WordPress website with Elementor installed. Then, install and activate the JetEngine plugin, go to the taxonomies tab, and choose your settings.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I use JetEngine taxonomy with any WordPress theme?&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Yes, JetEngine is designed to work seamlessly with any well-coded &lt;a href="https://crocoblock.com/blog/free-wordpress-themes-elementor/" rel="noopener noreferrer"&gt;WordPress theme&lt;/a&gt;. Whether you’re using a pre-built theme or developing your own, you can use the plugin’s functionality to enhance your website’s taxonomy management.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do I need coding knowledge to use JetEngine taxonomy in Elementor?&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;No, JetEngine taxonomy is designed to be user-friendly and intuitive; no coding skills are required. The plugin offers a visual interface within WordPress, making it easy for users to create and manage custom taxonomies using a familiar interface.&lt;/p&gt;

&lt;h2&gt;
  
  
  Takeaway
&lt;/h2&gt;

&lt;p&gt;Taxonomies are definitely heroes of website organization. They make it easier for visitors to find what they need quickly. A well-organized website with a clear hierarchy is not just user-friendly; it can also lead to &lt;a href="https://crocoblock.com/blog/fundamental-seo-settings-for-new-wordpress-website/" rel="noopener noreferrer"&gt;better SEO&lt;/a&gt; and a more engaging experience.&lt;/p&gt;

&lt;p&gt;While WordPress offers built-in categories and tags, &lt;a href="https://crocoblock.com/blog/10-plugins-you-no-longer-need-if-you-have-jetengine/" rel="noopener noreferrer"&gt;plugins like &lt;strong&gt;JetEngine&lt;/strong&gt;&lt;/a&gt; take content organization to the next level. With JetEngine taxonomy, you can create custom classification systems tailored to your specific needs. This empowers you to categorize your content in highly relevant and meaningful ways, enhancing your website’s functionality tremendously.&lt;/p&gt;

&lt;p&gt;Utilizing the JetEngine taxonomy and Elementor duo, you can transform your website from a content jungle into a simplified informational hub. Remember, small efforts in the organization will help create a user-friendly and successful website.&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://crocoblock.com/blog/jetengine-taxonomy-use-cases-for-elementor/" rel="noopener noreferrer"&gt;Top 5 JetEngine Taxonomy Use Cases for Elementor&lt;/a&gt; appeared first on &lt;a href="https://crocoblock.com" rel="noopener noreferrer"&gt;Crocoblock&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>wordpress</category>
    </item>
    <item>
      <title>JetEngine Profile Builder Overview</title>
      <dc:creator>Lana Miro</dc:creator>
      <pubDate>Tue, 12 Mar 2024 07:43:34 +0000</pubDate>
      <link>https://dev.to/lana_miro/jetengine-profile-builder-overview-39ij</link>
      <guid>https://dev.to/lana_miro/jetengine-profile-builder-overview-39ij</guid>
      <description>&lt;p&gt;I guess JetEngine’s real appeal is its flexibility. It provides a broad range of tools that let you shape your projects however you want, based on your creativity.&lt;/p&gt;

&lt;p&gt;So, its &lt;strong&gt;Profile Builder module&lt;/strong&gt; for WordPress membership websites really hits the mark, giving you all the tools you need to put together something awesome, almost without limitations. &lt;/p&gt;

&lt;p&gt;So, it’s time to explore it. &lt;/p&gt;

&lt;h2&gt;
  
  
  Table of Contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Getting Started with JetEngine’s Profile Builder&lt;/li&gt;
&lt;li&gt;How to Create a User Profile with JetEngine Profile Builder&lt;/li&gt;
&lt;li&gt;FAQ&lt;/li&gt;
&lt;li&gt;Wrapping Up&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Getting Started with JetEngine’s Profile Builder
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://crocoblock.com/plugins/jetengine/" rel="noopener noreferrer"&gt;&lt;strong&gt;JetEngine&lt;/strong&gt;&lt;/a&gt; offers, except for the core functionality (which is already a lot), &lt;strong&gt;19 modules&lt;/strong&gt; that you can switch on and off for better performance and 27 free add-ons, which &lt;a href="https://crocoblock.com/freemium/tools/" rel="noopener noreferrer"&gt;can be found here&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;The &lt;a href="https://crocoblock.com/plugins/jetengine/membership/" rel="noopener noreferrer"&gt;&lt;strong&gt;Profile Builder module&lt;/strong&gt;&lt;/a&gt; is really impressive, especially for advanced WordPress users who love to have all the aces and play them masterfully. Why? Because you have a lot of things, such as &lt;a href="https://crocoblock.com/blog/wordpress-relations-use-cases/" rel="noopener noreferrer"&gt;Relations&lt;/a&gt;, &lt;a href="https://crocoblock.com/plugins/jetengine/dynamic-visibility/" rel="noopener noreferrer"&gt;Dynamic Visibility&lt;/a&gt;, a unique and powerful &lt;a href="https://crocoblock.com/plugins/jetengine/query-builder/" rel="noopener noreferrer"&gt;Query Builder&lt;/a&gt;, &lt;a href="https://crocoblock.com/plugins/jetengine/data-store/" rel="noopener noreferrer"&gt;Data Stores&lt;/a&gt;, &lt;a href="https://crocoblock.com/blog/jetengine-rest-api-new-features-and-use-cases/" rel="noopener noreferrer"&gt;REST API&lt;/a&gt; tool, and other cool things available in a frame of one plugin. Also, if you are an &lt;a href="https://crocoblock.com/pricing/" rel="noopener noreferrer"&gt;All-Inclusive&lt;/a&gt; Crocoblock subscriber, you can enjoy the whole ecosystem of plugins that reinforce and share data with each other. In this case, if you build a website with membership and user profile functionality as its central feature, you will appreciate the integration with &lt;a href="https://crocoblock.com/plugins/jetpopup/" rel="noopener noreferrer"&gt;JetPopup&lt;/a&gt; or &lt;a href="https://crocoblock.com/plugins/jetappointment/" rel="noopener noreferrer"&gt;JetAppointment&lt;/a&gt; for such websites. &lt;/p&gt;

&lt;p&gt;Even if you have only JetEngine and a free JetFormBuilder, there’s a lot you can do by not only adding and updating users but also linking new related items via forms, submitting not only posts and CPTs but also &lt;a href="https://crocoblock.com/blog/custom-content-type-brand-new-data-storage-approach/" rel="noopener noreferrer"&gt;CCTs&lt;/a&gt; to store user listings or portfolio content in meta fields without overloading the database. Certainly, you can charge members for their subscriptions and &lt;a href="https://jetformbuilder.com/features/changing-wordpress-user-role-via-form/" rel="noopener noreferrer"&gt;change user roles via forms&lt;/a&gt; so they can upgrade their plans.  &lt;/p&gt;

&lt;p&gt;Anyway, I guess you know the drill and how important it is to have a good ecosystem if your site is not just a simple landing page. So, if you have never heard about or tried JetEngine’s Profile Builder, welcome. &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%2F39tqfvmiek8m3xjmsge5.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%2F39tqfvmiek8m3xjmsge5.png" alt="💡" width="72" height="72"&gt;&lt;/a&gt; &lt;strong&gt;Check Profile Builder in action. For a more advanced demonstration of its functionality, visit the&lt;/strong&gt; &lt;a href="https://crocoblock.com/dynamic-templates/labortime/" rel="noopener noreferrer"&gt;&lt;strong&gt;Job Board demo&lt;/strong&gt;&lt;/a&gt; &lt;strong&gt;site. Also, check the&lt;/strong&gt; &lt;a href="https://crocoblock.com/dynamic-templates/cardealer-gutenberg/" rel="noopener noreferrer"&gt;&lt;strong&gt;Car Dealer Marketplace&lt;/strong&gt;&lt;/a&gt; *&lt;em&gt;for a bit more simplified functionality. *&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The good news is these two and the other 12 dynamic templates (premade websites) are available in the All-Inclusive subscription.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Create a User Profile with JetEngine Profile Builder
&lt;/h2&gt;

&lt;p&gt;Typical User Profile plugins offer some shortcodes for a user registration form, then for log in/log out, redirection functionality, and probably user roles editor, plus something else. Such plugins are great and easy to use but definitely have limitations. &lt;/p&gt;

&lt;p&gt;JetEngine’s Profile Builder offers a logic that is different from that of typical user profile or membership plugins. Also, it doesn’t have a user role editor or restricted content functionality (it has a &lt;a href="https://crocoblock.com/plugins/jetengine/dynamic-visibility/" rel="noopener noreferrer"&gt;dynamic visibility&lt;/a&gt; module, which is about individual blocks but not full pages or taxonomies). However, there are many free plugins for this. &lt;/p&gt;

&lt;p&gt;The rest Crocoblock will do for you. So, let’s dig in and check the steps for setting up an advanced user profile functionality with JetEngine. &lt;/p&gt;

&lt;p&gt;*&lt;em&gt;I suggest this workflow for creating a user profile with JetEngine. *&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;_In the illustrating videos, I will show you examples of user profiles created for two user roles: Company and Employee. That’s why you will see forms created for each of them and the subpages available for different user roles. This will demonstrate how it’s possible to create as many user roles as you want within the Profile Builder interface. _&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Adding extra meta fields to Users if needed.&lt;/strong&gt;
It’s important because the list of default WordPress users’ fields is quite limited; also, in some cases, it’s easier to work with custom fields, such as profession, user picture (instead of Gravatar), contact details, etc. Read this article to learn how to &lt;a href="https://crocoblock.com/knowledge-base/jetengine/jetengine-how-to-apply-meta-boxes-to-users/" rel="noopener noreferrer"&gt;apply meta boxes to users&lt;/a&gt;.
&lt;/li&gt;
&lt;/ol&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%2Fu3kkk3i3oux9gk3ruwgj.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%2Fu3kkk3i3oux9gk3ruwgj.png" alt="⛏" width="72" height="72"&gt;&lt;/a&gt; &lt;strong&gt;The tool to use – JetEngine Meta Boxes.&lt;/strong&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%2F7w137jmurqnwrszkwfym.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%2F7w137jmurqnwrszkwfym.png" alt="JetEngine Meta Box tool for users" width="760" height="452"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Creating User Profile page structure.&lt;/strong&gt;
In this step, create and assign pages for the &lt;em&gt;User’s Account&lt;/em&gt;, &lt;em&gt;User’s Public Profile (optional)&lt;/em&gt;, and &lt;em&gt;All Users Page (optional)&lt;/em&gt;. To do so, create blank pages and select them from the dropdown in the Profile Builder &amp;gt; Pages tab. Also, choose the Template mode (you will most probably need a &lt;strong&gt;Content&lt;/strong&gt; mode).
&lt;/li&gt;
&lt;/ol&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%2Fu3kkk3i3oux9gk3ruwgj.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%2Fu3kkk3i3oux9gk3ruwgj.png" alt="⛏" width="72" height="72"&gt;&lt;/a&gt; &lt;strong&gt;The tool to use – JetEngine &amp;gt; Profile Builder &amp;gt;&lt;/strong&gt; &lt;a href="https://crocoblock.com/knowledge-base/features/jetengine-user-profile-builder-overview/#pages-tab-overview" rel="noopener noreferrer"&gt;&lt;strong&gt;Pages tab&lt;/strong&gt;&lt;/a&gt; *&lt;em&gt;.  *&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%2F93fcnb73x5prixb6lh02.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%2F93fcnb73x5prixb6lh02.png" alt="WordPress profile builder" width="760" height="340"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Creating forms for Users.&lt;/strong&gt;
Here, we need a Registration form, a Profile Edit form, and any other forms you will need for your project and use in the next step. The logic is the following: &lt;strong&gt;anything users edit will be done using forms&lt;/strong&gt; because the idea here is not to use quite an ugly and limited default WordPress user profile interface. So, instead, we create custom forms so Users will be able to edit the information about them, add posts (if allowed), etc. Based on the submitted information, new/existing meta fields and/or posts will be created or updated. Read this article to learn how to &lt;a href="https://jetformbuilder.com/features/update-user/#frontend" rel="noopener noreferrer"&gt;update users via forms&lt;/a&gt;.
&lt;/li&gt;
&lt;/ol&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%2F01q1wziwsqd5x2bufq4m.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%2F01q1wziwsqd5x2bufq4m.png" alt="📌" width="72" height="72"&gt;&lt;/a&gt; &lt;em&gt;Note that you can not only update users’ profiles but also submit and update posts (e.g., with users’ listings, portfolios, and other content). JetFormBuilder, even in its free version, has full functionality for doing that.&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%2Fu3kkk3i3oux9gk3ruwgj.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%2Fu3kkk3i3oux9gk3ruwgj.png" alt="⛏" width="72" height="72"&gt;&lt;/a&gt; &lt;strong&gt;The tool to use – the&lt;/strong&gt; &lt;a href="http://jetformbuilder.com" rel="noopener noreferrer"&gt;&lt;strong&gt;JetFormBuilder&lt;/strong&gt;&lt;/a&gt; &lt;strong&gt;plugin or the JetEngine Forms (Legacy – but it’s used in Profile Builder&lt;/strong&gt; &lt;a href="https://crocoblock.com/knowledge-base/features/jetengine-user-profile-builder-overview/#exploring-presets-import-option" rel="noopener noreferrer"&gt;&lt;strong&gt;presets&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;).&lt;/strong&gt; However, it’s strongly recommended to use JetFormBuilder instead because it is much more powerful and has additional &lt;a href="https://jetformbuilder.com/addons/" rel="noopener noreferrer"&gt;paid add-ons&lt;/a&gt; that offer even greater functionality. &lt;/p&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Creating subpages for User Accounts.&lt;/strong&gt;
Now, it’s time to create subpages which will be components of the layouts for the pages we’ve assigned to the User’s profile structure in step 2. Go to the &lt;strong&gt;JetEngine &amp;gt; Profile Builder &amp;gt; Account&lt;/strong&gt; tab. You will see the “ &lt;strong&gt;Add Subpage&lt;/strong&gt; ” button and settings for redirection for unauthorized users. Start adding subpages for the user’s account (note that you can make a different set of pages, depending on the user’s role, because you assign the subpage visibility according to the role).
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To design your subpages, use the dialog for adding &lt;strong&gt;templates&lt;/strong&gt; right here. You can make them with Elementor (free or paid) or JetEngine’s &lt;a href="https://crocoblock.com/knowledge-base/jetengine/jetengine-how-to-create-a-listing-template-in-gutenberg/" rel="noopener noreferrer"&gt;Listing Template&lt;/a&gt; functionality. Set visibility for these subpages in the user’s menu so some can be hidden and accessed only by link. Also, drag and drop subpages in the order you want them to appear on the user’s account page.  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F01q1wziwsqd5x2bufq4m.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%2F01q1wziwsqd5x2bufq4m.png" alt="📌" width="72" height="72"&gt;&lt;/a&gt; &lt;em&gt;These subpages will almost entirely consist of forms because this is the area where the user can edit information about them and/or submit posts.&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%2Fu3kkk3i3oux9gk3ruwgj.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%2Fu3kkk3i3oux9gk3ruwgj.png" alt="⛏" width="72" height="72"&gt;&lt;/a&gt; &lt;strong&gt;The tool to use – JetEngine &amp;gt; Profile Builder &amp;gt;&lt;/strong&gt; &lt;a href="https://crocoblock.com/knowledge-base/features/jetengine-user-profile-builder-overview/#account-page-tab-overview" rel="noopener noreferrer"&gt;&lt;strong&gt;Account tab&lt;/strong&gt;&lt;/a&gt; *&lt;em&gt;. *&lt;/em&gt;&lt;/p&gt;



&lt;p&gt;In this video example, I showed the “Personal info template” that is common for both Employee and Company user roles. The irrelevant blocks are hidden with the Dynamic Visibility tool. Alternatively, you can create different templates and assign them to the user roles on the Subpage settings in the User Profile Builder.  &lt;/p&gt;

&lt;p&gt;Also, I’ve demonstrated that dynamic fields with users’ data are fetched with the help of the Dynamic Field widget, and the forms for editing them open on pop-ups linked to the “ &lt;strong&gt;Edit&lt;/strong&gt; ” buttons. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Populating the Users’ Account Page (Members’ area).&lt;/strong&gt;
Now that we have created all the subpages, it’s time to combine them on the User’s page — the page that the user sees after logging in. Don’t mix it up with the Public User Page.
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In step 2, we created a blank page for the user’s &lt;em&gt;Account&lt;/em&gt;. Now, it’s time to add content there, namely, adding the user’s menu and subpages. The menu will be generated automatically, and the subpage templates we’ve already created in step 4.  &lt;/p&gt;

&lt;p&gt;There are “&lt;a href="https://crocoblock.com/widgets/profile-menu/" rel="noopener noreferrer"&gt;Profile Menu&lt;/a&gt;” and “&lt;a href="https://crocoblock.com/widgets/profile-subpage-content/" rel="noopener noreferrer"&gt;Profile Subpage Content&lt;/a&gt;” widgets/blocks for adding these elements, which are available for Gutenberg, Elementor, and Bricks. So, place them, add all the necessary styling and headings, and enjoy the result.  &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%2Fu3kkk3i3oux9gk3ruwgj.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%2Fu3kkk3i3oux9gk3ruwgj.png" alt="⛏" width="72" height="72"&gt;&lt;/a&gt; *&lt;em&gt;The tool to use – Gutenberg/Elementor/Bricks editor with JetEngine’s  Profile widgets. *&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%2Fc7mddlg9n4p1fsh7n7oq.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%2Fc7mddlg9n4p1fsh7n7oq.png" alt="Crocoblok user profile builder widgets" width="760" height="324"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Creating templates for Public User’s Pages (if you choose to have them).&lt;/strong&gt;
If the users of your website are supposed to have a public profile &lt;a href="https://demo.crocoblock.com/jobboard/profile/marketing-force/profile-company/" rel="noopener noreferrer"&gt;like this&lt;/a&gt;, then it’s time to create it as well.
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In step 2, we created a blank page for the user’s &lt;em&gt;Public Profile&lt;/em&gt;. Now, it’s time to create a Template or templates for it. Here, we will also add subpages, as in step 4, but they will not consist of forms but instead fetch the dynamic content users already added using the forms.  &lt;/p&gt;

&lt;p&gt;If you want to display one field, e.g., a user’s email, use the JetEngine &lt;a href="https://crocoblock.com/widgets/dynamic-field/" rel="noopener noreferrer"&gt;Dynamic Field widget&lt;/a&gt;. But if you want to show a loop of elements, &lt;a href="https://demo.crocoblock.com/jobboard/profile/jamiel/profile-employee/" rel="noopener noreferrer"&gt;like here&lt;/a&gt; in the Work Experience and Portfolio sections, create a &lt;a href="https://crocoblock.com/knowledge-base/features/listing-template-in-elementor-overview/" rel="noopener noreferrer"&gt;Listing Template&lt;/a&gt; first and then fetch it using the &lt;a href="https://crocoblock.com/knowledge-base/features/listing-grid-widget-overview/" rel="noopener noreferrer"&gt;Listing Grid&lt;/a&gt; widget.&lt;br&gt;&lt;br&gt;
Also, you can assign each subpage to a certain user role; thus, each of them can have a different layout for their public page. Examples: an &lt;a href="https://demo.crocoblock.com/jobboard/profile/anfisa/profile-employee/" rel="noopener noreferrer"&gt;Employee’s&lt;/a&gt; profile and a &lt;a href="https://demo.crocoblock.com/jobboard/profile/comfort-stand/profile-company/" rel="noopener noreferrer"&gt;Company’s&lt;/a&gt; profile.  &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%2Fu3kkk3i3oux9gk3ruwgj.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%2Fu3kkk3i3oux9gk3ruwgj.png" alt="⛏" width="72" height="72"&gt;&lt;/a&gt; &lt;strong&gt;The tools to use – Gutenberg/Elementor/Bricks editor with JetEngine’s dynamic content widgets and Listing templates for loops (Listing grids).&lt;/strong&gt;&lt;/p&gt;



&lt;p&gt;Pro tip&lt;/p&gt;

&lt;p&gt;Use the same layout and design for the Account page and for the Public User Profile page; just add the “ &lt;strong&gt;Edit&lt;/strong&gt; ” buttons and place forms for editing in pop-ups. Thus, the user will see exactly what their public profile page looks like right after editing.&lt;/p&gt;

&lt;p&gt;This is an illustration of this tip:&lt;/p&gt;



&lt;p&gt;*&lt;em&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%2Fmtgkznztc1vcdg1xxy83.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%2Fmtgkznztc1vcdg1xxy83.png" alt="📚" width="72" height="72"&gt;&lt;/a&gt; Read also: *&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://crocoblock.com/knowledge-base/jetengine/creating-user-account-page/" rel="noopener noreferrer"&gt;Creating a User Account Page&lt;/a&gt; with various dashboard structures. &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://crocoblock.com/blog/building-membership-site-with-jetengine/" rel="noopener noreferrer"&gt;Membership website with Crocoblock&lt;/a&gt;. &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://crocoblock.com/blog/wordpress-membership-website-examples/" rel="noopener noreferrer"&gt;Top membership websites&lt;/a&gt; with Croсoblock Profile Builder. &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://crocoblock.com/blog/wordpress-relations-use-cases/" rel="noopener noreferrer"&gt;JetEngine Relationship&lt;/a&gt; use cases. &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://jetformbuilder.com/features/jetformbuilder-connecting-wordpress-related-items-with-post-submit-actions/" rel="noopener noreferrer"&gt;Connecting relation items&lt;/a&gt; using forms. &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;*&lt;em&gt;What is a WordPress profile builder? *&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;It’s a plugin or a module that adds functionality for registering users from the front-end forms and also provides them with a front-end user profile interface. It’s used for membership websites. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I create a membership site with WordPress?&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Sure, you can. You will need a User Profile Builder, as the one described above, and some tools for adding and editing user roles. Also, you might need a plugin to restrict content by pages or categories. &lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping Up
&lt;/h2&gt;

&lt;p&gt;In this article, I’ve described the capabilities of JetEngine’s Profile Builder module in conjunction with the JetFormBuilder plugin for creating full-fledged user profiles. Using these tools and the guide, you can build &lt;a href="https://www.youtube.com/watch?v=ItrPlwgChPY&amp;amp;t=628s" rel="noopener noreferrer"&gt;membership or directory sites&lt;/a&gt; and monetize your WordPress projects.   &lt;/p&gt;

&lt;p&gt;Thanks to the JetEngine’s powerful functionality and other Crocoblock plugins, there’s a lot of space for your creativity. &lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://crocoblock.com/blog/wordpress-jetengine-profile-builder-overview/" rel="noopener noreferrer"&gt;JetEngine Profile Builder Overview&lt;/a&gt; appeared first on &lt;a href="https://crocoblock.com" rel="noopener noreferrer"&gt;Crocoblock&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>wordpress</category>
    </item>
    <item>
      <title>Recreating WordPress Events Page with Crocoblock Plugins</title>
      <dc:creator>Lana Miro</dc:creator>
      <pubDate>Wed, 28 Feb 2024 08:05:00 +0000</pubDate>
      <link>https://dev.to/lana_miro/recreating-wordpress-events-page-with-crocoblock-plugins-ob1</link>
      <guid>https://dev.to/lana_miro/recreating-wordpress-events-page-with-crocoblock-plugins-ob1</guid>
      <description>&lt;p&gt;Most WordPress developers probably know about the community of this CMS and the events that take place pretty often. There’s an official &lt;a href="https://events.wordpress.org/" rel="noopener noreferrer"&gt;WordPress.org event page&lt;/a&gt; with a list of these events, the information about them, and the location, so people can find what’s going on in their region. &lt;/p&gt;

&lt;p&gt;I’ve recreated it using Crocoblock plugins and will give you a step-by-step guide on how to do it in this article. &lt;strong&gt;Check the&lt;/strong&gt; &lt;a href="https://demo.crocoblock.com/lab/copy-of-wp-org-events-page-with-crocoblock-plugins/" rel="noopener noreferrer"&gt;&lt;strong&gt;live demo here.&lt;/strong&gt;&lt;/a&gt; ** **&lt;/p&gt;

&lt;h2&gt;
  
  
  Table of Contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The Scope of Work&lt;/li&gt;
&lt;li&gt;Crocoblock Tools Used&lt;/li&gt;
&lt;li&gt;
Adding Events

&lt;ul&gt;
&lt;li&gt;Creating CCT for events&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Creating Queries in Query Builder&lt;/li&gt;

&lt;li&gt;Creating Listing Templates&lt;/li&gt;

&lt;li&gt;Setting Up Filters&lt;/li&gt;

&lt;li&gt;Сomposing the Events Page&lt;/li&gt;

&lt;li&gt;FAQ&lt;/li&gt;

&lt;li&gt;The Bottom Line&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Scope of Work
&lt;/h2&gt;

&lt;p&gt;The event page of WordPress events for 2024 has the following components: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Interactive map with pop-ups that display the information about events and a link to the event’s page.&lt;/li&gt;
&lt;li&gt;A list of events. &lt;/li&gt;
&lt;li&gt;Filters for this list (search field and sorting by month, format, and type).&lt;/li&gt;
&lt;li&gt;A dynamic counter for the events.&lt;/li&gt;
&lt;li&gt;A dynamic counter of the countries in which these events will take place. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;There is also a number of participants displayed on the original page, but I will skip it for now. They could also be displayed dynamically, but it requires more advanced logic. &lt;/p&gt;

&lt;p&gt;_Also, I will recreate only some European events for obvious reasons, not to add over 1,000 of them to the demo site. _&lt;/p&gt;

&lt;p&gt;Pro tip&lt;/p&gt;

&lt;p&gt;If you want to display only future events or create two lists with past and future ones, &lt;a href="https://crocoblock.com/knowledge-base/tips-and-tricks/fail-to-display-future-and-past-events-in-the-listing-grid-widget/" rel="noopener noreferrer"&gt;use this tutorial&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here is a step-by-step work plan:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;creating a CCT and adding events;&lt;/li&gt;
&lt;li&gt;creating custom queries in Query Builder;&lt;/li&gt;
&lt;li&gt;creating Listing Templates based on these queries;&lt;/li&gt;
&lt;li&gt;setting up filters;&lt;/li&gt;
&lt;li&gt;composing the Events Page and fetching data dynamically.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Crocoblock Tools Used
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://crocoblock.com/blog/custom-content-type-brand-new-data-storage-approach/" rel="noopener noreferrer"&gt;&lt;strong&gt;Custom Content Types&lt;/strong&gt;&lt;/a&gt;. This is a Crocoblock-specific &lt;a href="https://crocoblock.com/features/?_plugin=jetengine&amp;amp;_feature=63" rel="noopener noreferrer"&gt;entity&lt;/a&gt;, and they are used for better performance and reducing the Database size in case there is a large number of records. We will store individual events using them. It’s also the most convenient way because the events have individual pages on third-party resources. &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://crocoblock.com/plugins/jetengine/query-builder/" rel="noopener noreferrer"&gt;&lt;strong&gt;Query Builder&lt;/strong&gt;&lt;/a&gt;. A powerful tool to get any data from the Database. I’ve used it to get all the events, the total number of countries and events, and to display in-person events only. In total, there are three queries.
&lt;em&gt;We need a separate query for in-person (not online) events, as only this type should be displayed on the map.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://crocoblock.com/knowledge-base/features/map-listing-overview/" rel="noopener noreferrer"&gt;&lt;strong&gt;Map Listing&lt;/strong&gt;&lt;/a&gt;. It showcases the in-person events on the map and on-click pop-ups that display brief info with a link to the event. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;By the way, if you need a geolocation filter so the users find something close to their location, we’ve released a functionality for it; read the &lt;a href="https://crocoblock.com/knowledge-base/jetengine/how-to-set-geo-search-based-on-user-geolocation/" rel="noopener noreferrer"&gt;detailed tutorial here&lt;/a&gt;. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://crocoblock.com/plugins/jetsmartfilters/" rel="noopener noreferrer"&gt;&lt;strong&gt;JetSmartFilters&lt;/strong&gt;&lt;/a&gt;. They filter events with AJAX right on the page.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://crocoblock.com/plugins/jetengine/twig/" rel="noopener noreferrer"&gt;&lt;strong&gt;Timber/Twig Views&lt;/strong&gt;&lt;/a&gt;. I’ve created listing templates &lt;a href="https://crocoblock.com/blog/twig-integration-for-jetengine/" rel="noopener noreferrer"&gt;using Twig&lt;/a&gt;. This way, the best performance can be achieved. &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://crocoblock.com/widgets/listing-grid/" rel="noopener noreferrer"&gt;&lt;strong&gt;Listing Grid&lt;/strong&gt;&lt;/a&gt;. It’s a widget/block for looping JetEngine Listing templates. &lt;/li&gt;
&lt;li&gt;A Dropbar widget from &lt;a href="https://crocoblock.com/plugins/jetelements/" rel="noopener noreferrer"&gt;JetElements&lt;/a&gt; is used to create a smooth filter display. However, it’s pretty optional, and only if you use Elementor to compose the event page. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In total, &lt;strong&gt;two Crocoblock plugins&lt;/strong&gt; were used to implement this functionality: &lt;a href="https://crocoblock.com/plugins/jetengine/" rel="noopener noreferrer"&gt;&lt;strong&gt;JetEngine&lt;/strong&gt;&lt;/a&gt; &lt;strong&gt;and&lt;/strong&gt; &lt;a href="https://crocoblock.com/plugins/jetsmartfilters/#filtered-results" rel="noopener noreferrer"&gt;&lt;strong&gt;JetSmartFilters&lt;/strong&gt;&lt;/a&gt; &lt;strong&gt;.&lt;/strong&gt; The additional plugin is JetElements, which is used to display filters in a dropbar. &lt;/p&gt;

&lt;p&gt;&lt;strong&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%2F39tqfvmiek8m3xjmsge5.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%2F39tqfvmiek8m3xjmsge5.png" alt="💡" width="72" height="72"&gt;&lt;/a&gt; I will demonstrate settings using Elementor, but all of these work equally well in Gutenberg and Bricks.&lt;/strong&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%2Fo732guh1e0s50oklcoca.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%2Fo732guh1e0s50oklcoca.png" alt="crocoblock event directory" width="760" height="288"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Adding Events
&lt;/h2&gt;

&lt;p&gt;First, let’s create a CCT for events. &lt;a href="https://crocoblock.com/knowledge-base/features/custom-content-type/" rel="noopener noreferrer"&gt;CCT&lt;/a&gt; is a Crocoblock-specific entity similar to CPT but doesn’t have a dedicated single page (but can be linked to any of the post types to have it and inherit its template) and stores the whole post in one database row, which is great for performance. You have full control over its REST API settings and admin columns as well. &lt;/p&gt;

&lt;p&gt;It can have meta fields, relations, etc, just like CPTs. &lt;/p&gt;

&lt;p&gt;Another advantage of using CCT in our case is that a dedicated JetFormBuilder form can be created in one click, so you can easily populate the CCT records via the front end – which is exactly what we need for events when users submit them. &lt;/p&gt;

&lt;p&gt;Also, the WordPress community events on the original site have a meeting agenda on &lt;em&gt;meetup.com&lt;/em&gt; or other third-party resources, so we definitely don’t need single pages in this case. &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%2Fmtgkznztc1vcdg1xxy83.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%2Fmtgkznztc1vcdg1xxy83.png" alt="📚" width="72" height="72"&gt;&lt;/a&gt; Check the guided use case of collecting events from different websites using the &lt;a href="https://crocoblock.com/blog/jetengine-rest-api-new-features-and-use-cases/" rel="noopener noreferrer"&gt;REST API tool by JetEngine here&lt;/a&gt;. &lt;/p&gt;

&lt;h3&gt;
  
  
  Creating CCT for events
&lt;/h3&gt;

&lt;p&gt;First, activate &lt;strong&gt;Custom Content Types and Map Listings modules&lt;/strong&gt;  &lt;strong&gt;in JetEngine &amp;gt; JetEngine&lt;/strong&gt;. The Custom Content Type option will appear in the JetEngine section of the Dashboard. Click “ &lt;strong&gt;Add New&lt;/strong&gt; ” and create a CCT called “Events.” &lt;/p&gt;

&lt;p&gt;I’ve added eight meta fields to it:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Event URL (text);&lt;/li&gt;
&lt;li&gt;Event Date (date);&lt;/li&gt;
&lt;li&gt;Event Type (select type, with Meetup, WordCamp, and Other options);&lt;/li&gt;
&lt;li&gt;Event Format (radio type, with In-Person and Online options);&lt;/li&gt;
&lt;li&gt;Event Location (map);&lt;/li&gt;
&lt;li&gt;Event Country (select from &lt;a href="https://crocoblock.com/plugins/jetengine/glossary/" rel="noopener noreferrer"&gt;Glossary&lt;/a&gt;);&lt;/li&gt;
&lt;li&gt;Event City (text).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I’ve also selected the fields I wanted to see in the admin columns. &lt;/p&gt;

&lt;p&gt;After that, the Event CCT will appear in the Dashboard menu, and it’s time to add the events. Don’t forget to add a map provider (e.g., Google Maps) with their API key in &lt;strong&gt;JetEngine &amp;gt; Maps Settings.&lt;/strong&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%2Fbltvninvgefd0poye3hs.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%2Fbltvninvgefd0poye3hs.png" alt="JetEngine CCT" width="760" height="497"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating Queries in Query Builder
&lt;/h2&gt;

&lt;p&gt;Custom queries are required to fetch the exact content we want in the order we want. The query results can be cached as well. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;All Events query&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To display all events in chronological order, I create the All Events query with query type “Custom Content Type,” “events-list” ID (it’s required to deal with filters on the Main Page), and “from lowest to highest” order.&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%2Fvs4exn9ywy45jux81gkg.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%2Fvs4exn9ywy45jux81gkg.png" alt="Crocoblock query CCT" width="760" height="316"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In-Person Events query&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As only in-person events will be displayed on the map, let’s create a query to display only this type. It will have the same settings as the previous query (but it doesn’t require an ID) to sort by date, plus it selects the “Event Format” field value equal to “in-person.”&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%2Fzgtg9jvzrcztxf4ique9.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%2Fzgtg9jvzrcztxf4ique9.png" alt="Crocoblock query builder" width="760" height="343"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Total Number of Countries query&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To count the number of countries where the events will take place, I will use Query Builder with a query type “SQL/AI query.” Switch the &lt;strong&gt;Advanced/AI query&lt;/strong&gt; toggle.&lt;/p&gt;

&lt;p&gt;The command is the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT count(*) AS total_events, count(DISTINCT event_country ) AS total_countries FROM {prefix}jet_cct_event;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you want to modify the query but are not so familiar with SQL commands, use the AI tool and check our &lt;a href="https://crocoblock.com/blog/use-cases-jetengine-sql-query-builder/" rel="noopener noreferrer"&gt;article about popular queries&lt;/a&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  Creating Listing Templates
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://crocoblock.com/knowledge-base/features/listing-template-in-elementor-overview/" rel="noopener noreferrer"&gt;Listing templates&lt;/a&gt; are the templates for the loop, which are based on selected queries. There can be various types of listing sources and display posts, users, terms, &lt;a href="https://crocoblock.com/knowledge-base/articles/jetengine-options-page-overview/" rel="noopener noreferrer"&gt;relations&lt;/a&gt;, &lt;a href="https://crocoblock.com/knowledge-base/articles/jetengine-options-page-overview/" rel="noopener noreferrer"&gt;Options Pages&lt;/a&gt; data, &lt;a href="https://crocoblock.com/knowledge-base/features/query-builder-overview/" rel="noopener noreferrer"&gt;Query Builder&lt;/a&gt; data, &lt;a href="https://crocoblock.com/knowledge-base/articles/how-to-create-a-repeater-with-jetengine-repeater-usage-examples/" rel="noopener noreferrer"&gt;Repeater fields&lt;/a&gt;, &lt;a href="https://crocoblock.com/knowledge-base/articles/jetengine-how-to-create-a-custom-content-type/" rel="noopener noreferrer"&gt;Custom Content Type&lt;/a&gt; items, and &lt;a href="https://crocoblock.com/knowledge-base/jetengine/jetengine-how-to-display-custom-content-type-items-using-rest-api/" rel="noopener noreferrer"&gt;REST API endpoint&lt;/a&gt; items.&lt;/p&gt;

&lt;p&gt;In this case, I will use a Query Builder as a source with the queries created above and the &lt;strong&gt;Timber/Twig view&lt;/strong&gt; to design them to ensure the best possible performance. &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%2Fmtgkznztc1vcdg1xxy83.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%2Fmtgkznztc1vcdg1xxy83.png" alt="📚" width="72" height="72"&gt;&lt;/a&gt; To use it, activate the Timber/Twig view in the &lt;strong&gt;JetEngine &amp;gt; JetEngine &amp;gt; Performance&lt;/strong&gt; tab and &lt;a href="https://crocoblock.com/knowledge-base/jetengine/creating-listing-template-using-timber-twig-view/" rel="noopener noreferrer"&gt;&lt;strong&gt;follow this guide&lt;/strong&gt;&lt;/a&gt; for detailed instructions on creating it. &lt;/p&gt;

&lt;p&gt;For this project, I will need two listing templates: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;List Event&lt;/strong&gt; – to display the list of all events; &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Map Event&lt;/strong&gt; – to display events on the map. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The List Event listing is for displaying all the events (online and in-person). Choose the &lt;strong&gt;All Events&lt;/strong&gt; query as a source. &lt;/p&gt;

&lt;p&gt;This is the code I’ve used:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;HTML/Twig:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;*(remember, you can generate Twig tags dynamically using buttons on the top)&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;div class="list-event"&amp;gt;
    &amp;lt;div class="list-event__name"&amp;gt;
        &amp;lt;a href="{{ jet_engine_data(args={key:'event__event_url'}) }}" target="_blank"&amp;gt;{{ jet_engine_data(args={key:'event__event_name'}) }} ↗&amp;lt;/a&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;div class="list-event__where"&amp;gt;
        {% if jet_engine_data(args={key:'event__event_format'}) == 'in-person' %}
            {{ jet_engine_data(args={key:'event__event_city'}) }}, {{ jet_engine_data(args={key:'event__event_country'})|jet_engine_callback(args={cb:'jet_engine_label_by_glossary',labels_by_glossary:'2'}) }}
        {% else %}
            Online
        {% endif %}
    &amp;lt;/div&amp;gt;
    &amp;lt;div class="list-event__when"&amp;gt;
        {{ jet_engine_data(args={key:'event__event_date'})|jet_engine_callback(args={cb:'jet_engine_date'}) }}
    &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;CSS:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.list-event {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 20px;
    border: 1px solid #d9d9d9;
    margin-top: -1px;
}

.list-event__name {
    flex: 0 0 60%;
}
.list-event__where,
.list-event__when {
    flex: 0 0 20%;
    color: var(--e-global-color-text);
}

@media (max-width:768px) {
    .list-event {
        flex-wrap: wrap;
        font-size: 14px;
    }
    .list-event__name {
        flex: 0 0 100%;
    }
    .list-event__where,
    .list-event__when {
        flex: 0 0 auto;
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As you can see, I’ve used global style variables here, such as &lt;em&gt;color: var(–e-global-color-text)&lt;/em&gt;; in our case, it’s Elementor’s variables, but the same approach can be used with other tools. It’s recommended to maintain the style compatibility without editing the code. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;As a result, we will get the following view:&lt;/strong&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%2Fucmsvlwc2ryuzz7fj461.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%2Fucmsvlwc2ryuzz7fj461.png" alt="Twig Crocoblock" width="760" height="381"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The the Map Event listing, I use the &lt;strong&gt;In Person&lt;/strong&gt; query as a source. &lt;/p&gt;

&lt;p&gt;The design is pretty similar:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;HTML/Twig:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;*(remember, you can generate Twig tags dynamically using buttons on the top)&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;div class="map-event"&amp;gt;
    &amp;lt;div class="map-event__title"&amp;gt;
        {{ jet_engine_data(args={key:'event__event_name'}) }}
    &amp;lt;/div&amp;gt;
    &amp;lt;div class="map-event__link"&amp;gt;
        &amp;lt;a href="{{ jet_engine_data(args={key:'event__event_url'}) }}" target="_blank"&amp;gt;Open event site ↗&amp;lt;/a&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;div class="map-event__meta"&amp;gt;
        &amp;lt;div class="map-event__meta-row"&amp;gt;
            {{ jet_engine_data(args={key:'event__event_country'})|jet_engine_callback(args={cb:'jet_engine_label_by_glossary',labels_by_glossary:'2'}) }}
        &amp;lt;/div&amp;gt;
        &amp;lt;div class="map-event__meta-row"&amp;gt;
{{ jet_engine_data(args={key:'event__event_date'})|jet_engine_callback(args={cb:'jet_engine_date'}) }}          
        &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;CSS:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.map-event {
    background:#fff;
    padding: 20px;
    font-family: var(--e-global-typography-text-font-family);
    font-size: 13px;
    color: var(--e-global-color-text);
    border-radius: 3px;
    box-shadow: 0 3px 5px rgba(0,0,0,.1);
}

.map-event__title {
    font-weight: 500;
    font-size: 16px;
    padding: 0 0 10px;
    color: var(--e-global-color-secondary);
}

.map-event__meta {
    padding: 10px 0 0 0;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;This is the output preview:&lt;/strong&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%2Fbe1m32ww1lsn8oov1kdq.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%2Fbe1m32ww1lsn8oov1kdq.png" alt="Twig JetEngine" width="760" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting Up Filters
&lt;/h2&gt;

&lt;p&gt;I guess there’s no need to explain why filters are essential here. &lt;/p&gt;

&lt;p&gt;I will create four filters:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Search (by event name) – search;&lt;/li&gt;
&lt;li&gt;Format (In–person or Online) – radio;&lt;/li&gt;
&lt;li&gt;Type (Meetup, WordCamp, or Other) – radio;&lt;/li&gt;
&lt;li&gt;Date (select month) – date period. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Search filter settings (search type)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The settings for this filter are pretty straightforward: select the &lt;strong&gt;Search By Custom Field&lt;/strong&gt; and type the &lt;strong&gt;Query Variable “event_name”&lt;/strong&gt; (the name of the field for your event). &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Format filter settings (radio type)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Data Source – Manual Input.
&lt;em&gt;Add options with “in–person” and “online” values (they must be the same as the option of the “event-format” meta fields of your CCT);&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Type the “event_format” query variable;&lt;/li&gt;
&lt;li&gt;The comparison operator should be “equals” (=);&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Type filter settings (radio type)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The settings are the same as for the previous one, but the options must be for the “event_type” meta field and the “event_type” query variable. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Date filter settings (date period type)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Filter by – Meta date;&lt;/li&gt;
&lt;li&gt;Period type – Month;&lt;/li&gt;
&lt;li&gt;Datepicker button text – Month;&lt;/li&gt;
&lt;li&gt;Start/End Date Period Enabled – toggle activated;&lt;/li&gt;
&lt;li&gt;Query Variable – event_date.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Сomposing the Events Page
&lt;/h2&gt;

&lt;p&gt;_I will demonstrate settings using Elementor, but it works equally well in Gutenberg and Bricks. _&lt;/p&gt;

&lt;p&gt;First, let’s place the interactive map on the page. Add the &lt;strong&gt;Map Listing widget&lt;/strong&gt; with the &lt;strong&gt;Map Event listing&lt;/strong&gt; selected “event_location” meta key in the &lt;em&gt;Address meta field&lt;/em&gt; input in General settings and your preferred style settings for the map (height, center, etc.). I’ve used this custom map style to look like the one on WordPress.org:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[
    {
        "featureType": "administrative",
        "elementType": "labels.text.fill",
        "stylers": [
            {
                "color": "#444444"
            }
        ]
    },
    {
        "featureType": "landscape",
        "elementType": "all",
        "stylers": [
            {
                "color": "#f2f2f2"
            }
        ]
    },
    {
        "featureType": "poi",
        "elementType": "all",
        "stylers": [
            {
                "visibility": "off"
            }
        ]
    },
    {
        "featureType": "road",
        "elementType": "all",
        "stylers": [
            {
                "saturation": -100
            },
            {
                "lightness": 45
            }
        ]
    },
    {
        "featureType": "road.highway",
        "elementType": "all",
        "stylers": [
            {
                "visibility": "simplified"
            }
        ]
    },
    {
        "featureType": "road.arterial",
        "elementType": "labels.icon",
        "stylers": [
            {
                "visibility": "off"
            }
        ]
    },
    {
        "featureType": "transit",
        "elementType": "all",
        "stylers": [
            {
                "visibility": "off"
            }
        ]
    },
    {
        "featureType": "water",
        "elementType": "all",
        "stylers": [
            {
                "color": "#c8d1fc"
            },
            {
                "visibility": "on"
            }
        ]
    }
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Marker tab&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I chose the WordPress icon. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Popup tab&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the pop-up to display the info about the event, designed in the Map Event listing. &lt;/p&gt;

&lt;p&gt;The size is 320x45px, with a pop-up preloader activated and a pin, it opens on click. &lt;/p&gt;

&lt;p&gt;Here is the result: &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%2F78ieqgj1hyqdo5mzet43.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%2F78ieqgj1hyqdo5mzet43.png" alt="Map view Crocoblock" width="760" height="326"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To add the dynamic counts of events and countries, I used a &lt;strong&gt;Heading widget&lt;/strong&gt; and a dynamic tag. Choose &lt;strong&gt;“Dynamic function”&lt;/strong&gt; from the JetEngine section of the list and the &lt;strong&gt;“SQL query results”&lt;/strong&gt; function. Choose the “total_events” query column to display the number of events and the “total_countries” to display countries.  &lt;/p&gt;

&lt;p&gt;In the Advanced tab of the same window, add the text that comes after the dynamic data:  _events this year/countries. _&lt;/p&gt;

&lt;p&gt;Now, let’s display the list of all events with filters.&lt;/p&gt;

&lt;p&gt;For the &lt;strong&gt;Seach filter&lt;/strong&gt; , add the Seach Filter widget and select your filter; choose AJAX on typing, with a minimum of 3 letters, and the “events-list” query ID. &lt;/p&gt;

&lt;p&gt;To display &lt;strong&gt;Radio filters (Format and Type)&lt;/strong&gt;, I’ve used a &lt;a href="https://crocoblock.com/widgets/dropbar/" rel="noopener noreferrer"&gt;&lt;strong&gt;Dropbar&lt;/strong&gt;&lt;/a&gt; &lt;strong&gt;widget&lt;/strong&gt; to show the radio fields as a smooth dropdown (for Gutenberg or Bricks, use other solutions or just add the radio filters as they are). Choose the Button type – Text, and type the name of the filter. In the Content Type tab, choose Template.  &lt;/p&gt;

&lt;p&gt;Create Section templates using Elementor (for Format and Type filters). Add the Radio filter to that section with the “events-list” query ID and AJAX apply type. You should create two templates like this for Format and Type filters. For the first one, choose the “Format” in the &lt;em&gt;Select filter&lt;/em&gt; input, and for the second, choose the “Type” one. Add styling, go back to the main page, and choose these templates for the corresponding Dropbar widgets. &lt;/p&gt;

&lt;p&gt;For the &lt;strong&gt;Date filter&lt;/strong&gt; , add the Date Period filter widget. Select the “Date” filter, choose the AJAX apply type with Apply on Value change, and specify the “events-list” query ID.&lt;/p&gt;

&lt;p&gt;Finally, to &lt;strong&gt;clear all the filters&lt;/strong&gt; , add the Remove filters widget with AJAX apply type and “events-list” query ID. &lt;/p&gt;

&lt;p&gt;Don’t forget to style everything.&lt;/p&gt;

&lt;p&gt;The final step is &lt;strong&gt;adding the list of all events&lt;/strong&gt;. Add the &lt;strong&gt;Listing Grid widget&lt;/strong&gt; , choose the Event list listing template, “Published” status, select “1 column” and Lazy Load. If you want to use Infinite Scroll or Load More, they are available right here in settings. In case you want to add pagination, &lt;a href="https://crocoblock.com/knowledge-base/jetsmartfilters/jetengine-how-to-add-pagination-to-the-listing-grid-widget/" rel="noopener noreferrer"&gt;check this guide&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Enjoy the result! &lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;*&lt;em&gt;When to use Crocoblock CCT instead of CPT? *&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;There are a lot of applications for CCT; however, it will be the best choice if you want to place a large number of records with a lot of meta fields and keep your database as compact as possible. Check &lt;a href="https://crocoblock.com/wp-content/uploads/2020/11/Croco-blog-post-760x690-1.png" rel="noopener noreferrer"&gt;this diagram&lt;/a&gt; to get an idea. &lt;/p&gt;

&lt;p&gt;*&lt;em&gt;What is a WordPress event plugin? *&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://crocoblock.com/blog/best-wordpress-event-plugins/" rel="noopener noreferrer"&gt;Event plugins&lt;/a&gt; are tools for displaying various events. They provide functionality to make these events easy to find and filterable and even display them as an event calendar.  &lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Can I create an event calendar with Crocoblock? *&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;Sure! You can display JetEngine CPT and CCT &lt;a href="https://crocoblock.com/widgets/dynamic-calendar/" rel="noopener noreferrer"&gt;as a calendar&lt;/a&gt;, dynamically submit new events via forms, and filter them. &lt;/p&gt;

&lt;h2&gt;
  
  
  The Bottom Line
&lt;/h2&gt;

&lt;p&gt;In this article, I demonstrate how you can recreate the main event page of the WordPress community with just a couple of Crocoblock plugins. There’s also a lot of space for additional development if you want to create a more complex event directory or combine it with &lt;a href="https://crocoblock.com/blog/building-membership-site-with-jetengine/" rel="noopener noreferrer"&gt;membership functionality&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://crocoblock.com/blog/wordpress-events-page-crocoblock-plugins/" rel="noopener noreferrer"&gt;Recreating WordPress Events Page with Crocoblock Plugins&lt;/a&gt; appeared first on &lt;a href="https://crocoblock.com" rel="noopener noreferrer"&gt;Crocoblock&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>wordpress</category>
    </item>
    <item>
      <title>WordPress Rest API: What Is It And How Can You Expand It?</title>
      <dc:creator>Lana Miro</dc:creator>
      <pubDate>Wed, 03 May 2023 08:32:38 +0000</pubDate>
      <link>https://dev.to/lana_miro/wordpress-rest-api-what-is-it-and-how-can-you-expand-it-5658</link>
      <guid>https://dev.to/lana_miro/wordpress-rest-api-what-is-it-and-how-can-you-expand-it-5658</guid>
      <description>&lt;p&gt;You may have seen or heard people mention the &lt;strong&gt;WordPress REST API&lt;/strong&gt; but weren't sure what it was. Or perhaps you already know what it is and want to learn more and discover some tools to expand it. Either way, I've got you covered. Let's dive in.&lt;/p&gt;

&lt;h2&gt;
  
  
  Table of Contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;What is the WordPress REST API?&lt;/li&gt;
&lt;li&gt;What is an API?&lt;/li&gt;
&lt;li&gt;What is a REST API?&lt;/li&gt;
&lt;li&gt;What does the WordPress REST API do?&lt;/li&gt;
&lt;li&gt;Use cases of the WordPress REST API&lt;/li&gt;
&lt;li&gt;Tools for Expanding the WordPress REST API&lt;/li&gt;
&lt;li&gt;Ultimate Endpoints With REST API by Dipankar Pal&lt;/li&gt;
&lt;li&gt;JetEngine REST API &amp;amp; Custom Endpoints by Crocoblock&lt;/li&gt;
&lt;li&gt;WP REST API Controller by Evan Herman&lt;/li&gt;
&lt;li&gt;REST API Toolbox by Pete Nelson&lt;/li&gt;
&lt;li&gt;Summary&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What is the WordPress REST API? &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;The WordPress REST API &lt;strong&gt;allows external applications to access all of WordPress's features and data&lt;/strong&gt;. This means developers can integrate WordPress into third-party apps without requiring users to log in. The API enables developers to create custom interfaces and user experiences that meet project needs and make it easier to share content across websites and apps, promoting collaboration and integration. &lt;/p&gt;

&lt;p&gt;The REST API provides a standard way to access WordPress data from any programming language, making it easier to build powerful apps that use the &lt;a href="https://crocoblock.com/blog/what-is-wordpress-guide-for-beginners/" rel="noopener noreferrer"&gt;WordPress platform&lt;/a&gt;. &lt;a href="https://blog.hubspot.com/website/what-is-rest-api" rel="noopener noreferrer"&gt;(Hubspot)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Okay, that's the short answer. If you want a more in-depth explanation, let's backtrack and explore what APIs and REST APIs are.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is an API?&lt;a&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;An API, or &lt;strong&gt;Application Programming Interface&lt;/strong&gt;, is a software component allowing &lt;strong&gt;external applications to communicate with it&lt;/strong&gt;. By exposing a portion of an application's data and functionality, third-party apps can integrate with it.&lt;/p&gt;

&lt;p&gt;For example, to display a YouTube video on your website, you'll use YouTube's API to request the video and embed it on your website. And if you want to upload a video to YouTube using your app, YouTube's API lets you do so without requiring a YouTube user account.&lt;/p&gt;

&lt;p&gt;APIs are critical to today's software ecosystem, allowing different software applications to &lt;strong&gt;share data standardized and automatedly&lt;/strong&gt;. They enable developers to connect their websites to Google Maps and most of your favorite apps, whether it's your automation software scheduling your social media posts or the weather app on your phone, use APIs in some way.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is a REST API?&lt;a&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;REST APIs are a type of API that follow a set of guidelines called REST, which stands for &lt;strong&gt;"Representational State Transfer."&lt;/strong&gt; The requirements for REST APIs are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Client-server separation:&lt;/strong&gt; The client and server may only communicate via a request followed by a response.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Uniform interface:&lt;/strong&gt; All requests and responses must adhere to a standard protocol, typically HTTP.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stateless:&lt;/strong&gt; Each interaction with an API is independent of previous interactions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Layered system:&lt;/strong&gt; Proxy servers are usually between the client and server.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cacheable:&lt;/strong&gt; For resources provided, the server should specify whether the client can cache them and for how long.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These constraints standardize how web applications communicate with each other, ensuring that all REST APIs follow a similar process and keep the two applications independent.&lt;/p&gt;

&lt;h3&gt;
  
  
  What does the WordPress REST API do?&lt;a&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;The &lt;a href="https://crocoblock.com/blog/wordpress-rest-api-basics/" rel="noopener noreferrer"&gt;WordPress REST API&lt;/a&gt; follows the guidelines for REST APIs, &lt;strong&gt;allowing developers to integrate WordPress with other applications&lt;/strong&gt; in multiple ways and making it relatively easy for developers to learn and use. Initially created as an open-source plugin for WordPress, the WordPress REST API was later added to the WordPress core in version 4.7, effectively transforming WordPress into a software platform.&lt;/p&gt;

&lt;p&gt;With the WordPress REST API, developers can build web applications from scratch while utilizing WordPress's article drafting and content management features or connect WordPress to a mobile app. The REST API also offers powerful flexibility for developers, allowing them to work in different programming languages outside the constraints of WordPress.&lt;/p&gt;

&lt;h3&gt;
  
  
  Use cases of the WordPress REST API&lt;a&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;The WordPress REST API is a powerful tool that enables developers to interact with WordPress sites using HTTP requests. Here are some of the common use cases for the WordPress REST API:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Building mobile apps:&lt;/strong&gt; Developers can create custom mobile apps that can access WordPress content and perform actions like creating posts, updating content, and managing user accounts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Creating custom themes and plugins:&lt;/strong&gt; Developers can create custom templates, shortcodes, plugins, and widgets that can be used to build unique WordPress sites.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integrating third-party services:&lt;/strong&gt; The WordPress REST API can also be used to integrate third-party services with WordPress sites, such as social media platforms like Twitter and Facebook. This allows WordPress site owners to share content with their followers and interact with them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Migrating content to or from WordPress sites:&lt;/strong&gt; Developers can export content from WordPress sites and import it into other systems or import content into WordPress sites from other systems.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automating WordPress site tasks:&lt;/strong&gt; Developers can create custom scripts that can perform tasks automatically, such as creating posts, updating content, and managing user accounts. This saves time and effort.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tools for Expanding the WordPress REST API&lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;In this section, I'll explore some popular tools for expanding the functionality of the WordPress REST API. These plugins can help you create custom endpoints, manage &lt;a href="https://crocoblock.com/blog/wordpress-custom-post-type-examples-and-plugins/" rel="noopener noreferrer"&gt;custom post types&lt;/a&gt; and &lt;a href="https://crocoblock.com/blog/wordpress-taxonomy-explained/" rel="noopener noreferrer"&gt;taxonomies&lt;/a&gt;, and modify multiple REST API settings. By utilizing these plugins, you can unlock the full potential of the REST API and create powerful applications that integrate with WordPress.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://wordpress.org/plugins/custom-wp-rest-api/" rel="noopener noreferrer"&gt;Ultimate Endpoints With REST API by Dipankar Pal&lt;/a&gt;&lt;a&gt;&lt;/a&gt;
&lt;/h3&gt;

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

&lt;p&gt;Ultimate Endpoints is a WordPress REST API plugin that &lt;strong&gt;simplifies the process of adding custom endpoints to the API&lt;/strong&gt;. You can easily generate a secret key for authentication and create a custom endpoint URL. Once you have created the endpoint, you can use it to send requests to the server and obtain data.&lt;br&gt;
You can also attach custom code to the filter hook to enhance the API's functionality and receive all request parameters.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key features:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Secret key creation/deactivation.&lt;/li&gt;
&lt;li&gt;Endpoint URL creation.&lt;/li&gt;
&lt;li&gt;API request/response log keeping and deleting.&lt;/li&gt;
&lt;li&gt;Recent activity recording.
You can manage all these functionalities through a convenient settings panel.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://crocoblock.com/plugins/jetengine/restapi/" rel="noopener noreferrer"&gt;JetEngine REST API &amp;amp; Custom Endpoints by Crocoblock&lt;/a&gt;&lt;a&gt;&lt;/a&gt;
&lt;/h3&gt;

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

&lt;p&gt;JetEngine's REST API &amp;amp; Custom Endpoints allow you to &lt;strong&gt;create connections between websites, forms, apps, and third-party APIs&lt;/strong&gt;. Its functionality is impressive, as it allows for remote data management and quick front-end fetching.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key features:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Custom Content Type Endpoints: create custom tables and fetch/edit data from them using REST API endpoints.&lt;/li&gt;
&lt;li&gt;REST API Listings: obtain third-party data listings and adjust their appearance in Elementor and Gutenberg.&lt;/li&gt;
&lt;li&gt;REST API Request notifications for Forms: &lt;a href="https://jetformbuilder.com/features/creating-a-form/" rel="noopener noreferrer"&gt;set up forms&lt;/a&gt; to send requests to third-party APIs using the "REST API" notification type in form settings.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://wordpress.org/plugins/wp-rest-api-controller/" rel="noopener noreferrer"&gt;WP REST API Controller by Evan Herman&lt;/a&gt;&lt;a&gt;&lt;/a&gt;
&lt;/h3&gt;

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

&lt;p&gt;The WP REST API Controller plugin is a powerful tool for &lt;strong&gt;customizing endpoints and visibility of WordPress post types and taxonomies&lt;/strong&gt;. With its graphical interface, customization of your website's API settings is easy. The plugin also allows for metadata customization of the API response, giving you more control over your website's content.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key features:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Customize REST API endpoints for post types and taxonomies.&lt;/li&gt;
&lt;li&gt;Adjust metadata fields for API requests.&lt;/li&gt;
&lt;li&gt;Rename base endpoints for post types and taxonomies.&lt;/li&gt;
&lt;li&gt;Rename metadata field names in API requests for better user-friendliness.&lt;/li&gt;
&lt;li&gt;Control post types and taxonomies created by third-party plugins and themes.&lt;/li&gt;
&lt;li&gt;Granular control of API responses without writing PHP code.&lt;/li&gt;
&lt;li&gt;Filters included for altering and extending default functionality.&lt;/li&gt;
&lt;li&gt;Localization support for translations.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://wordpress.org/plugins/rest-api-toolbox/" rel="noopener noreferrer"&gt;REST API Toolbox by Pete Nelson&lt;/a&gt;&lt;a&gt;&lt;/a&gt;
&lt;/h3&gt;

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

&lt;p&gt;&lt;strong&gt;WARNING: This plugin has not been updated for a couple of years and has not been tested with the most recent version of WordPress.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;REST API Toolbox is a free WordPress plugin that &lt;strong&gt;enables users to modify multiple REST API settings&lt;/strong&gt;. It is easy to install and use, making it ideal for those who are new to REST API or those who want to secure their data from unauthorized access. With this plugin, users can specify the authentication methods and permissions required to access each REST API endpoint, ensuring safe and uncompromised REST API usage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key features:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Disabling REST API and JSONP support.&lt;/li&gt;
&lt;li&gt;Assigning a custom prefix to REST API.&lt;/li&gt;
&lt;li&gt;Removing WP core endpoints and custom post type endpoints.&lt;/li&gt;
&lt;li&gt;Forcing SSL.&lt;/li&gt;
&lt;li&gt;Supporting WP-CLI commands.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Summary&lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Here, I have discussed what the WordPress REST API is, what it can be used for, and some tools for expanding the WordPress REST API.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;To summarize:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;WordPress REST API lets external apps access all of WordPress's features and data.&lt;/li&gt;
&lt;li&gt;WordPress's features and data can be accessed by developers without requiring user login, allowing for integration into third-party apps.&lt;/li&gt;
&lt;li&gt;Developers can create custom interfaces and user experiences, make content sharing easier, and promote collaboration and integration.&lt;/li&gt;
&lt;li&gt;REST API provides a standard way to access WordPress data from any programming language.&lt;/li&gt;
&lt;li&gt;REST APIs follow a set of guidelines called REST (Representational State Transfer).&lt;/li&gt;
&lt;li&gt;WordPress REST API was added to the WordPress core in version 4.7, effectively transforming WordPress into a software platform.&lt;/li&gt;
&lt;li&gt;Common use cases for the WordPress REST API include building mobile apps, creating custom themes and plugins, integrating third-party services, migrating content to/from WordPress sites, and automating WordPress site tasks.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Some of the tools available for expanding the WordPress REST API are:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Ultimate Endpoints With REST API by Dipankar Pal.&lt;/li&gt;
&lt;li&gt;JetEngine REST API &amp;amp; Custom Endpoints by Crocoblock.&lt;/li&gt;
&lt;li&gt;WP REST API Controller by Evan Herman.&lt;/li&gt;
&lt;li&gt;REST API Toolbox by Pete Nelson.&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>restapi</category>
      <category>wordpress</category>
      <category>development</category>
      <category>webdev</category>
    </item>
    <item>
      <title>WordPress Acquisitions: The Best, The Worst, Unclear</title>
      <dc:creator>Lana Miro</dc:creator>
      <pubDate>Fri, 07 Oct 2022 12:12:25 +0000</pubDate>
      <link>https://dev.to/lana_miro/wordpress-acquisitions-the-best-the-worst-unclear-2hal</link>
      <guid>https://dev.to/lana_miro/wordpress-acquisitions-the-best-the-worst-unclear-2hal</guid>
      <description>&lt;p&gt;I bet you’ve noticed how many acquisitions WordPress companies have made these years. I’m the one who follows and tries not to miss &lt;a href="https://crocoblock.com/blog/wordpress-newsletters-to-subscribe/" rel="noopener noreferrer"&gt;any WordPress news&lt;/a&gt; to stay updated. &lt;/p&gt;

&lt;p&gt;That motivated me to write this article to show you the top brands in the WordPress market, their history, discover acquisition reasons, and their effects on the whole community. &lt;/p&gt;

&lt;p&gt;Thus, at the end of the article, you’ll be able to figure out, “ &lt;strong&gt;Is acquisition terrible for the company or customers?&lt;/strong&gt; ”&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Spoiler: not always.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Table of Contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Is Acquisition Bad?&lt;/li&gt;
&lt;li&gt;WordPress Acquisitions Main Numbers&lt;/li&gt;
&lt;li&gt;
Why Brands Sell: Product Selling Reasons

&lt;ul&gt;
&lt;li&gt;Competition&lt;/li&gt;
&lt;li&gt;Low budgets&lt;/li&gt;
&lt;li&gt;Burnout&lt;/li&gt;
&lt;li&gt;Recession&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

Why Brands Buy: Acquisition Reasons

&lt;ul&gt;
&lt;li&gt;Diversification&lt;/li&gt;
&lt;li&gt;Dealing with competitors&lt;/li&gt;
&lt;li&gt;Expand web presence&lt;/li&gt;
&lt;li&gt;Expand the product or service&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Key WordPress Brands and Their Effect on The Acquired Product&lt;/li&gt;

&lt;li&gt;To Conclude&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  Is Acquisition Bad?
&lt;/h2&gt;

&lt;p&gt;I know the feeling when you find out another company has bought the product you used. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Frustration, not knowing what comes next.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Thoughts about alternatives and researching companies’ past acquisitions to see how that’s influenced another product.&lt;/p&gt;

&lt;p&gt;Fear of the future is a familiar feeling of every human being, so it’s okay to care about the tools you use as you want stability in the development process.&lt;/p&gt;

&lt;h2&gt;
  
  
  WordPress Acquisitions Main Numbers
&lt;/h2&gt;

&lt;p&gt;Regarding the &lt;a href="https://poststatus.com/acquisitions/" rel="noopener noreferrer"&gt;Post Status acquisitions database&lt;/a&gt;, 2021 was the most acquisition-rich year – 46. The rise of WordPress acquisitions started in 2019 (15). On average, there were 5-10 acquisitions during 2014-2018. &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%2Faaczu0owu2exjapxobje.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%2Faaczu0owu2exjapxobje.png" alt="wordpress acquisitions graph during 2014 - 2022" width="760" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Brands Sell: Product Selling Reasons
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Competition
&lt;/h3&gt;

&lt;p&gt;Imagine you are a small business owner with just one WordPress plugin in the arsenal and notice that plugin installations are stuck. &lt;/p&gt;

&lt;p&gt;_You’ll be frustrated, yes? _&lt;/p&gt;

&lt;p&gt;This is because of the &lt;strong&gt;high competition&lt;/strong&gt; : 60,000+ WordPress plugins in the directory. &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%2Famnco7nhybf45lbvlxez.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%2Famnco7nhybf45lbvlxez.png" alt="😶‍🌫️" width="72" height="72"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You should invest your time not only in development but also in marketing: to let users know about your plugin.&lt;/p&gt;

&lt;p&gt;So, you have three choices:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Keep the plugin development slow; make it more like a hobby than a business.&lt;/li&gt;
&lt;li&gt;Create the team for developing and marketing your product.&lt;/li&gt;
&lt;li&gt;Sell the plugin if you are not ready to handle the competition.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When we launched &lt;a href="https://wordpress.org/plugins/jetformbuilder/" rel="noopener noreferrer"&gt;JetFormBuilder&lt;/a&gt;, we knew about the form plugins competition, so we made a competitive analysis and thought about what we wanted to make better. Then, we asked top influencers and the WordPress community to test the plugin and share their thoughts. Thus, after a year, JetFormBuilder became one of the most used products in our stack. &lt;/p&gt;

&lt;h3&gt;
  
  
  Low budgets
&lt;/h3&gt;

&lt;p&gt;It’s evident that one person cannot cover product marketing, onboarding, support, SEO optimization, etc. So, you’ll need &lt;strong&gt;more budget and time if you want your product to pay off&lt;/strong&gt;. Smaller companies have smaller budgets, so they should rely on the community more.&lt;/p&gt;

&lt;h3&gt;
  
  
  Burnout
&lt;/h3&gt;

&lt;p&gt;You may simply burn out, as we are not robots. We have our dreams, and sometimes you don’t want to continue product development to focus more on what you like. &lt;/p&gt;

&lt;p&gt;I’m happy that mental health has become one of the top topics. And I think it’s better to sell the product than &lt;strong&gt;keep developing despite not feeling happy about it&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Recession
&lt;/h3&gt;

&lt;p&gt;Covid brought a new era of working from home, and I think not everyone was ready to embrace the change. It makes us reconsider our wishes, desires, and work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Brands Buy: Acquisition Reasons
&lt;/h2&gt;

&lt;p&gt;It may sound obvious, but money. &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%2F7ve88d29emfx2ts9rgca.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%2F7ve88d29emfx2ts9rgca.png" alt="🤑" width="72" height="72"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To get more profit from the business, there are several reasons why big players buy new or famous brands, as outlined below.&lt;/p&gt;

&lt;h3&gt;
  
  
  Diversification
&lt;/h3&gt;

&lt;p&gt;During my university time studying economics, diversification was the #1 rule for any business or individual investments. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Don’t put all eggs in one basket.”&lt;/em&gt; &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So, most companies keep following the rule to diversify their investments in different products.&lt;/p&gt;

&lt;h3&gt;
  
  
  Dealing with competitors
&lt;/h3&gt;

&lt;p&gt;You’ve noticed the new product (similar to yours), buy it, and close – sounds like a plan? Yeap, it’s one of the strategic moves for many big brands. &lt;/p&gt;

&lt;p&gt;For example, Nimbella startup has been merged into Digital Ocean.&lt;/p&gt;

&lt;h3&gt;
  
  
  Expand web presence
&lt;/h3&gt;

&lt;p&gt;Broad marketing techniques include buying the popular product, adding the brand keyword, changing naming, and getting backlinks to the target website.&lt;/p&gt;

&lt;h3&gt;
  
  
  Expand the product or service
&lt;/h3&gt;

&lt;p&gt;Some companies want to deliver all-in-one solutions or services to &lt;strong&gt;add more value to the client&lt;/strong&gt; , keep them, and attract more customers. The WordPress market is not an exception. &lt;/p&gt;

&lt;p&gt;For instance, if you are a hosting company owner, why not broaden your services by tapping into domain registration, SSL certificates, and website builders? &lt;/p&gt;

&lt;p&gt;When we find a reliable brand in website building, we want to stay with their team as much as we can because we simply trust them. &lt;/p&gt;

&lt;h2&gt;
  
  
  Key WordPress Brands and Their Effect on The Acquired Product
&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%2Fcrocoblock.com%2Fwp-content%2Fuploads%2F2022%2F10%2FWP-Acquisitions.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%2Fcrocoblock.com%2Fwp-content%2Fuploads%2F2022%2F10%2FWP-Acquisitions.png" alt="top wordpress companies that acquire other wp brands" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;NOTE:&lt;/p&gt;

&lt;p&gt;You can find all news links about acquisitions in the &lt;a href="https://poststatus.com/acquisitions/" rel="noopener noreferrer"&gt;Post Status database&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Automattic
&lt;/h3&gt;

&lt;p&gt;The pioneer in WordPress acquisitions is Automattic. Their first buying was made in 2007, two years after the company was founded in 2005. As you know, Automattic is &lt;strong&gt;the team behind WordPress.org and WordPress.com&lt;/strong&gt; ; they own a bunch of products (and acquired at least 30), and here are their top acquires: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;WP Super Cache – a caching plugin, with 2 million installations and more than 1900 reviews, was sold because Donncha O Caoimh, the plugin’s author, didn’t want to develop further.&lt;/li&gt;
&lt;li&gt;Clipisode – a social media platform &lt;em&gt;that has been closed&lt;/em&gt;. Brian Alvey, the Clipisode CEO, joined the WordPress VIP company. &lt;/li&gt;
&lt;li&gt;WPScan – &lt;em&gt;WordPress vulnerability database&lt;/em&gt; that continues working independently as a team in Jetpack. Both WPScan owners joined the Automattic team.&lt;/li&gt;
&lt;li&gt;Social Image Generator – the naming speaks for itself; this plugin functionality will be integrated into Jetpack.
&lt;/li&gt;
&lt;li&gt;Frontity – React Framework is an open-source project and free to use now, but the team will focus on improving the &lt;a href="https://crocoblock.com/blog/wordpress-full-site-editing/" rel="noopener noreferrer"&gt;full site editing&lt;/a&gt; experience.&lt;/li&gt;
&lt;li&gt;Pocket Casts – a podcast app that continues to operate.&lt;/li&gt;
&lt;li&gt;Day One – a journalistic app for Mac and Apple users.&lt;/li&gt;
&lt;li&gt;Parse.ly – an &lt;em&gt;analytics tool&lt;/em&gt; that became part of WordPress VIP (enterprise package). &lt;/li&gt;
&lt;li&gt;MailPoet – an &lt;em&gt;email plugin for WordPress&lt;/em&gt; that joined the WooCommerce team to add more value for store owners.&lt;/li&gt;
&lt;li&gt;Tumblr – a &lt;em&gt;blogging platform&lt;/em&gt; that Matt Mullenweg is passionate about making great again. &lt;/li&gt;
&lt;li&gt;Cloudup – a &lt;em&gt;media sharing platform&lt;/em&gt; planned to replace the WordPress.com media uploading functionality. &lt;/li&gt;
&lt;li&gt;Gravatar – one of the first Automattic acquisitions. This blog avatar platform &lt;a href="https://blog.gravatar.com/2007/10/18/automattic-gravatar/" rel="noopener noreferrer"&gt;had scaling problems that Automattic was ready to solve,&lt;/a&gt; according to Mullenweg.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For years, Automattic has shown its &lt;strong&gt;responsibility and dedication to acquisitions&lt;/strong&gt; , so some products have become more popular, such as Gravatar, MailPoet, and WP Super Cache. Joining Automattic is a boost for the acquired brand, and it is so interesting to observe what comes next and how Tumblr’s development continues. &lt;/p&gt;

&lt;h3&gt;
  
  
  DigitalOcean
&lt;/h3&gt;

&lt;p&gt;DigitalOcean, the cloud-hosting company, was founded in 2011 and has had only three huge acquisitions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cloudways – 2M visitors, &lt;em&gt;top hosting provider&lt;/em&gt;; Aaqib Gadit, co-founder and CEO, said that the company continues to function as a standalone business, so nothing changes for their customers. &lt;/li&gt;
&lt;li&gt;CSS Tricks – one of the &lt;em&gt;most popular web development blogs&lt;/em&gt;; Chris Coyier is planning to help with the transition and step back, then focus on other projects.&lt;/li&gt;
&lt;li&gt;Nimbella – an &lt;em&gt;open-source serverless development startup&lt;/em&gt; that was closed after acquisition. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Digital Ocean plans its acquisitions precisely to get more value from the bit. Honestly, I was surprised after Cloudways and CSS Tricks acquisitions, but I’m sure this is for the best, as they are in good hands with a robust community that cares a lot about partnerships.&lt;/p&gt;

&lt;h3&gt;
  
  
  Awesome Motive
&lt;/h3&gt;

&lt;p&gt;Awesome Motive (AM) is the one behind the WPBeginner blog, WPForms, OptinMonster, RafflePress, and MonsterInsights brands. Syed Balkhi founded the company in 2009 and had &lt;strong&gt;at least 12 acquisitions&lt;/strong&gt; , for example: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pirate Forms – a WordPress form plugin from the Themeisle team, Awesome Motive acquired the plugin when the Themeisle team decided to recommend WPForms instead Pirate Forms.&lt;/li&gt;
&lt;li&gt;WP Charitable – a donation plugin with a small team, has been sold to pass the further development to AM. &lt;/li&gt;
&lt;li&gt;Sandhills Development, which owned Easy Digital Downloads, AffiliateWP, Sugar Calendar, WP Simple Pay, and Payouts Service – one of the vast AM acquisitions; the whole team joined the AM corporation.&lt;/li&gt;
&lt;li&gt;SearchWP – a WordPress search plugin that joined AM family and &lt;em&gt;continued fruitful development&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Smash Balloon – a popular social media plugin, was added to the AM brand lists.&lt;/li&gt;
&lt;li&gt;All in One SEO – an SEO WordPress plugin became a great addition to the AM products. &lt;/li&gt;
&lt;li&gt;SeedProd – the founder of this plugin managed development by himself, so he wanted to sell the product to have a bigger team.&lt;/li&gt;
&lt;li&gt;Formidable Forms – a WordPress form plugin, that becomes part of the WPBeginner accelerator and becomes one of the advanced WordPress form plugins.&lt;/li&gt;
&lt;li&gt;Yoast Analytics – rebranded into MonsterInsights.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By the way, Awesome Motive brands sometimes got criticized for “&lt;a href="https://twitter.com/schutzsmith/status/1573178612739706884" rel="noopener noreferrer"&gt;shady marketing&lt;/a&gt;” or confusing content pieces. In return, &lt;a href="https://syedbalkhi.com/" rel="noopener noreferrer"&gt;Syed Balkhi&lt;/a&gt; commented in Post Status Slack:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“…Our companies operate independently of each other and tech decisions / cross promotion decisions are made by their respective GMs”.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Anyway, all WordPress product owners should re-think their honesty in their blog posts, so I’m happy the Community is talking about this, so we can make WordPress a better place.&lt;/p&gt;

&lt;h3&gt;
  
  
  Elementor
&lt;/h3&gt;

&lt;p&gt;Founded in 2016, Elementor has become one of the &lt;a href="https://crocoblock.com/blog/free-premium-wordpress-page-builders/" rel="noopener noreferrer"&gt;popular WordPress website builders&lt;/a&gt;. Thus, the company has only two acquisitions – Strattic, headless WordPress hosting, and Layers WP, a theme development company.&lt;/p&gt;

&lt;p&gt;Elementor decided to continue Strattic development; on the other hand, paused Layers WP themes improvement and make the themes free for users.&lt;/p&gt;

&lt;h3&gt;
  
  
  WP Engine
&lt;/h3&gt;

&lt;p&gt;A WordPress hosting company founded in 2010, which is also known for its Torque magazine.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ACF – after a year of being under the Delicious Brains roof, the &lt;a href="https://crocoblock.com/blog/advanced-custom-fields-plugin-review/" rel="noopener noreferrer"&gt;Advanced Custom Fields&lt;/a&gt; plugin has been sold one more time with other Delicious Brains plugins.&lt;/li&gt;
&lt;li&gt;Frost – WordPress themes, the business model has been changed to free-to-use, and all customers received the refunds. &lt;/li&gt;
&lt;li&gt;Block Lab team joined the WP Engine team, but the plugin will no longer have new features.&lt;/li&gt;
&lt;li&gt;Flywheel – &lt;em&gt;managed WordPress hosting&lt;/em&gt; that successfully continues operating.&lt;/li&gt;
&lt;li&gt;StudioPress – WordPress solutions joined the WP Engine product list and went on with product development. &lt;/li&gt;
&lt;li&gt;CloudMoxie – a hosting company that has been merged with WP Engine.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Liquid Web
&lt;/h3&gt;

&lt;p&gt;Liquid Web Family of Brands includes LiquidWeb hosting, Nexcess digital cloud, StellarWP (iThemes, Kadence, GiveWP, IconicWP, etc.), and was founded in 1997. Most of the acquired products continue operating and are being further developed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Modern Tribe agency;&lt;/li&gt;
&lt;li&gt;LearnDash WordPress plugin;&lt;/li&gt;
&lt;li&gt;IconicWP WooCommerce plugins;&lt;/li&gt;
&lt;li&gt;The Events Calendar plugin;&lt;/li&gt;
&lt;li&gt;Beyond Hosting clients &lt;strong&gt;migrated to Liquid Web&lt;/strong&gt; ;&lt;/li&gt;
&lt;li&gt;iThemes Media, including themes and products;&lt;/li&gt;
&lt;li&gt;WiredTree was merged with Liquid Web hosting;&lt;/li&gt;
&lt;li&gt;Rackspace cloud sites platform.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  GoDaddy
&lt;/h3&gt;

&lt;p&gt;GoDaddy’s path started back in 1997 in the United States, and they had several successful acquisitions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pagely managed WordPress services.&lt;/li&gt;
&lt;li&gt;SkyVerge extensions were planned to be included in GoDaddy packages. &lt;/li&gt;
&lt;li&gt;CoBlocks and other Rich Tabor’s plugins joined GoDaddy.&lt;/li&gt;
&lt;li&gt;Sucuri security products added more value to GoDaddy customers.&lt;/li&gt;
&lt;li&gt;WP Curve customers moved to GoDaddy.&lt;/li&gt;
&lt;li&gt;ManageWP – &lt;a href="https://crocoblock.com/blog/wordpress-multisites-everything-you-need-to-know/" rel="noopener noreferrer"&gt;multisite management&lt;/a&gt; add-ons.&lt;/li&gt;
&lt;li&gt;DNAcademy and Dan.com were integrated into GoDaddy domain services.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Newfold Digital
&lt;/h3&gt;

&lt;p&gt;Bluehost, HostGator, Web.com, and others are part of Newfold Digital corporation. The acquisitions of Yoast SEO and YITH development brand impress. &lt;/p&gt;

&lt;p&gt;After a while, &lt;strong&gt;Yoast launched their product for Shopify users&lt;/strong&gt;. Isn’t it splendid? &lt;/p&gt;

&lt;h2&gt;
  
  
  To Conclude
&lt;/h2&gt;

&lt;p&gt;I hope this article was helpful, especially for WordPress newbies. WordPress is astonishing. With all #wpdrama, changes, new products, and acquisitions, it brings the excellent feeling of competition, variety of products, and frustration (sometimes &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%2Ft4uuubsixkc0ny33u5q1.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%2Ft4uuubsixkc0ny33u5q1.png" alt="😅" width="72" height="72"&gt;&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;In conclusion, I want to quote Erik Karkovack from &lt;a href="https://speckyboy.com/wordpress-plugin-acquisitions/" rel="noopener noreferrer"&gt;his thoughtful article about acquisitions&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“New ownership often means more resources to maintain, support, and extend the software. This could be a great thing for the WordPress community…The fear is that competition will shrink and that we may become too reliant on a small number of developers for the bulk of a site’s functionality.&lt;/em&gt;”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I can’t disagree. Acquisition mostly means better development by the bigger company that can effort better marketing, improvement, and organization, but we should pay attention to each product acquisition to check if the product is going to the “right hands” and forecast changes. And it’s incredible to have WordPress huddles, like Post Status Community or Twitter spaces, where I can read members’ thoughts to learn more about the companies. It helps to stay on track.&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://crocoblock.com/blog/wordpress-acquisitions-explained/" rel="noopener noreferrer"&gt;WordPress Acquisitions: The Best, The Worst, Unclear&lt;/a&gt; appeared first on &lt;a href="https://crocoblock.com" rel="noopener noreferrer"&gt;Crocoblock&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>acquisitions</category>
    </item>
    <item>
      <title>Creating WordPress Crowdfunding Platform with Crocoblock</title>
      <dc:creator>Lana Miro</dc:creator>
      <pubDate>Thu, 28 Apr 2022 12:36:42 +0000</pubDate>
      <link>https://dev.to/lana_miro/creating-wordpress-crowdfunding-platform-with-crocoblock-3h20</link>
      <guid>https://dev.to/lana_miro/creating-wordpress-crowdfunding-platform-with-crocoblock-3h20</guid>
      <description>&lt;p&gt;In this manual, I would like to replicate crowdfunding functionality using Crocoblock plugins, such as &lt;a href="https://crocoblock.com/plugins/jetengine/" rel="noopener noreferrer"&gt;JetEngine&lt;/a&gt;, &lt;a href="https://jetformbuilder.com/" rel="noopener noreferrer"&gt;JetFormBuilder&lt;/a&gt;, &lt;a href="https://crocoblock.com/plugins/jetthemecore/" rel="noopener noreferrer"&gt;JetThemeCore&lt;/a&gt;, &lt;a href="https://crocoblock.com/plugins/jetpopup/" rel="noopener noreferrer"&gt;JetPopup&lt;/a&gt;, &lt;a href="https://crocoblock.com/plugins/jettabs/" rel="noopener noreferrer"&gt;JetTabs&lt;/a&gt;, and &lt;a href="https://crocoblock.com/blog/elementor-free-vs-pro/" rel="noopener noreferrer"&gt;Elementor free version&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Setting the Goal&lt;/li&gt;
&lt;li&gt;Website Structure&lt;/li&gt;
&lt;li&gt;
Crowdfunding Use Case Logic

&lt;ul&gt;
&lt;li&gt;Custom post type Projects&lt;/li&gt;
&lt;li&gt;Custom content type Donations&lt;/li&gt;
&lt;li&gt;WordPress form&lt;/li&gt;
&lt;li&gt;Project single page&lt;/li&gt;
&lt;li&gt;Project statistics&lt;/li&gt;
&lt;li&gt;Donations table&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Sum Up: Testing&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  Setting the Goal
&lt;/h2&gt;

&lt;p&gt;The main task was to create a website to gather money for different charitable projects with detailed project information, statistics, and reports about collected funds.&lt;/p&gt;

&lt;p&gt;Check out the &lt;a href="https://crocoblock.com/donation-engine/" rel="noopener noreferrer"&gt;&lt;strong&gt;demo website&lt;/strong&gt;&lt;/a&gt;, and don't hesitate to donate to help Ukrainians now. &lt;/p&gt;

&lt;h2&gt;
  
  
  Website Structure
&lt;/h2&gt;

&lt;p&gt;To start with, let’s build a structure. For a crowdfunding platform, we need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://crocoblock.com/plugins/jetengine/custom-post-type/" rel="noopener noreferrer"&gt;Custom post type&lt;/a&gt; called &lt;strong&gt;Projects&lt;/strong&gt; – to store the information about the project and meta data, such as description, the amount needed, etc.&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%2Fs00a5g4yjs51q1vuo8mf.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%2Fs00a5g4yjs51q1vuo8mf.png" alt="projects custom post type" width="760" height="581"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://crocoblock.com/features/?_plugin=jetengine&amp;amp;_feature=63" rel="noopener noreferrer"&gt;Custom content type&lt;/a&gt; called &lt;strong&gt;Donations&lt;/strong&gt; – to store information about donations, such as amount, project, date, and user data.&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%2Fiefa1os0i2y2zcss1yq3.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%2Fiefa1os0i2y2zcss1yq3.png" alt="donations custom content type" width="760" height="1185"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Form – to carry out a donation followed by a post-submit action for adding new CCT &lt;strong&gt;Donations&lt;/strong&gt; after submission.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Crowdfunding Use Case Logic
&lt;/h2&gt;

&lt;p&gt;Before replicating the crowdfunding platform, we need to understand the general logic. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Our homepage will display a &lt;a href="https://crocoblock.com/knowledge-base/articles/jetengine-listing-grid-widget-overview/" rel="noopener noreferrer"&gt;listing grid&lt;/a&gt; with all the projects. &lt;/li&gt;
&lt;li&gt;Then users can go to each single project page and donate.&lt;/li&gt;
&lt;li&gt;We’ll display the donation form in a pop-up on the single project page.&lt;/li&gt;
&lt;li&gt;Then users enter the amount they want to donate.&lt;/li&gt;
&lt;li&gt;After this, users are redirected to PayPal to make the payment.&lt;/li&gt;
&lt;li&gt;A new &lt;strong&gt;Donations&lt;/strong&gt; CCT item will be added to the database if the payment is successful.&lt;/li&gt;
&lt;li&gt;Thus, all donation data will be used for calculating statistics and displaying people who donated to the exact project.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now, let’s go through every component of the crowdfunding project.&lt;/p&gt;

&lt;h3&gt;
  
  
  Custom post type Projects
&lt;/h3&gt;

&lt;p&gt;As &lt;a href="https://crocoblock.com/knowledge-base/articles/how-to-create-a-custom-post-type-based-on-jetengine-plugin/" rel="noopener noreferrer"&gt;custom post type&lt;/a&gt; is the most known JetEngine feature, I won’t stop there for a long. For &lt;strong&gt;Projects&lt;/strong&gt; meta fields, I’ll add:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Total – the desired total amount per project that we need to gather.&lt;/li&gt;
&lt;li&gt;Short Desc – quick project overview displayed on the homepage listing grid.&lt;/li&gt;
&lt;li&gt;Description – full project description displayed on each single project page.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Custom content type Donations
&lt;/h3&gt;

&lt;p&gt;The main goal of this CCT is to store information about all donations and gather project statistics (how many people donated, the money gathered, percentage of needed amount). &lt;/p&gt;

&lt;p&gt;The fields we need in this CCT are as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Amount&lt;/strong&gt; – the sum of donations;&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%2F23srpyg0drpgk3g5sltq.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%2F23srpyg0drpgk3g5sltq.png" alt="amount custom content field" width="760" height="496"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Project&lt;/strong&gt; – the project collecting donations;&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%2Fuiobdumr2hpv14tfl9q6.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%2Fuiobdumr2hpv14tfl9q6.png" alt="project custom content type field" width="760" height="536"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Show on project page&lt;/strong&gt; – a Select field to choose whether to show or not the donation in the statistics list;&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%2Fm32k20oj60yc6omqxeks.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%2Fm32k20oj60yc6omqxeks.png" alt="cct select field" width="760" height="573"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Name&lt;/strong&gt; – user name that will be displayed in the donations list.&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%2Fdl8drkk9ps95m3oj3u4x.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%2Fdl8drkk9ps95m3oj3u4x.png" alt="name custom content type field" width="760" height="410"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;To create a WordPress form, we’ll use &lt;a href="https://jetformbuilder.com/" rel="noopener noreferrer"&gt;JetFormBuilder&lt;/a&gt;. Our form should accomplish two tasks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;donation payment via PayPal;&lt;/li&gt;
&lt;li&gt;saving information about each donation to CCT.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, we’ll need these form fields:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Project ID&lt;/strong&gt; – a Hidden field that will store the project ID, which has been donated to. Thus, the form will be used on the single project page. As a Field Value, we’ll use “Current Post ID.”&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%2F48tjbn9fc9vn8rbm4jfu.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%2F48tjbn9fc9vn8rbm4jfu.png" alt="hidden form field" width="760" height="254"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Amount&lt;/strong&gt; – a Text field for displaying donation sum.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Show your name in donations list?&lt;/strong&gt; – a Select field, where users can choose whether to show or not their names.&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%2Fwznu7eykj9lbti7q5j33.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%2Fwznu7eykj9lbti7q5j33.png" alt="show your donation name select field" width="760" height="318"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Name –&lt;/strong&gt; a Text field for indicating user name.&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%2F35e71c32rmtrw50y4iqr.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%2F35e71c32rmtrw50y4iqr.png" alt="user name form field" width="760" height="172"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;NOTE:&lt;/p&gt;

&lt;p&gt;User name should be shown only if the user chose to show their name in the donations list at the previous step. For this, we need to wrap the &lt;strong&gt;Name&lt;/strong&gt; field in a Conditional Block and configure it as shown below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvj03yn9fsjd98c9mfzxl.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%2Fvj03yn9fsjd98c9mfzxl.png" alt="name conditional field block" width="760" height="367"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After creating the donation form, we need to set up a &lt;a href="https://jetformbuilder.com/features/how-to-configure-payment-gateways/" rel="noopener noreferrer"&gt;PayPal gateway&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Finally, we need to configure the form in a way to save donations to a dedicated CCT &lt;strong&gt;Donations&lt;/strong&gt; after it’s submitted. &lt;/p&gt;

&lt;p&gt;For this, add the post-submit action Insert/Update &amp;gt; Custom Content Type Item. Then press the “ &lt;strong&gt;Edit&lt;/strong&gt; ” button and match the form fields with CCT fields.&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%2F415ega3h5sunsiy6mwqq.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%2F415ega3h5sunsiy6mwqq.png" alt="form post submit action custom content types" width="760" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Important:&lt;/p&gt;

&lt;p&gt;We need to add a new CCT item only after successful payment. Thus, during payment gateway configuration, we need to specify that Insert/Update Custom Content Type Item should be added only after successful donation.&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%2F1il4gwke9luvlshcpppw.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%2F1il4gwke9luvlshcpppw.png" alt="successful payment condition" width="760" height="231"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Project single page
&lt;/h3&gt;

&lt;p&gt;The next step will be to gather all project information on one single page. For this, we’ll create a &lt;a href="https://crocoblock.com/knowledge-base/articles/how-to-add-a-single-post-page-template-with-elementor/#create-single-post-page-template-in-elementor" rel="noopener noreferrer"&gt;single template using JetThemeCore&lt;/a&gt; and try the new Elementor experiment – &lt;em&gt;Flexbox Container&lt;/em&gt;. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;We’ll create a box with featured image and project statistics using a flexbox container.&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%2Fhrez7y5dj1zzudr2oma6.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%2Fhrez7y5dj1zzudr2oma6.png" alt="flexbox container" width="760" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I want the featured image to be as a container &lt;strong&gt;Background&lt;/strong&gt; to the left of the grid:&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%2F9xt552tfl8zapzlu3jl1.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%2F9xt552tfl8zapzlu3jl1.png" alt="featured as a background image" width="760" height="588"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Project name&lt;/strong&gt; will be displayed via the Dynamic Field widget.&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%2F8sqlkd6pb0rh8d6kbuhu.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%2F8sqlkd6pb0rh8d6kbuhu.png" alt="title displaying via dynamic field" width="760" height="570"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I don’t want to overload the page visually with the donation form. I’ll put it into a&lt;a href="https://jetformbuilder.com/features/how-to-store-paypal-payments-from-wordpress-form-in-database-tables/#add-form-to-page" rel="noopener noreferrer"&gt;pop-up using JetPopup&lt;/a&gt;. Thus, after clicking the “ &lt;strong&gt;Donate&lt;/strong&gt; ” button, our pop-up with the form will appear.&lt;/p&gt;

&lt;p&gt;We’ll add tabs at the bottom of the main project information using the JetTabs plugin: Description, Donation List, and Statistics.&lt;/p&gt;

&lt;h3&gt;
  
  
  Project statistics
&lt;/h3&gt;

&lt;p&gt;The most interesting and complicated part is project statistics: donations amount, total sum, percentage of gathered donations.&lt;/p&gt;

&lt;p&gt;Firstly, let’s figure out what we call statistics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Amount of donations&lt;/strong&gt; is the amount of Donations CCT items that contain the exact &lt;strong&gt;project ID&lt;/strong&gt; in the Project ID field.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Total gathered funds&lt;/strong&gt; are the sum of all Amount field of all Donations CCT items that contain the exact Project ID.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Percentage of gathered donations&lt;/strong&gt; is the sum of all funds divided by the &lt;strong&gt;Total&lt;/strong&gt; meta field value for the current project and multiplied by 100.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We can obtain all this data using SQL queries. We’ll use the &lt;a href="https://crocoblock.com/knowledge-base/articles/jetengine-using-the-pre-designed-section-templates-to-display-dynamic-content/" rel="noopener noreferrer"&gt;dynamic tag&lt;/a&gt; Dynamic Functions, which allows displaying various data calculated dynamically, including data from SQL queries.&lt;/p&gt;

&lt;h4&gt;
  
  
  Create SQL query
&lt;/h4&gt;

&lt;p&gt;Next, we’ll create an &lt;strong&gt;SQL query&lt;/strong&gt; with &lt;a href="https://crocoblock.com/plugins/jetengine/query-builder/" rel="noopener noreferrer"&gt;Query Builder&lt;/a&gt; that will take the information from the database:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Query type&lt;/strong&gt; : SQL, not Custom Content Type (even though we are getting data from CCT) because we need to crunch the numbers further.&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%2Fzhd7n8e2ndey87dn510h.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%2Fzhd7n8e2ndey87dn510h.png" alt="query type sql" width="760" height="231"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;From table&lt;/strong&gt; : jet_cct_donations. This table stores information about CCT Donations (you can check the table naming in the CCT settings).&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%2F94ku5w3kbv92uso80ljl.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%2F94ku5w3kbv92uso80ljl.png" alt="select data from cct table" width="760" height="76"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Where (query clauses)&lt;/strong&gt;: we need to limit the selection to only posts from the desired project. To get the project ID, we’ll use &lt;strong&gt;Object ID&lt;/strong&gt; macros.&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%2Fuuv57jfm6eapomjssdpm.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%2Fuuv57jfm6eapomjssdpm.png" alt="query clauses" width="760" height="433"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Then we need to &lt;strong&gt;Group Results&lt;/strong&gt; by Project ID to use the Calculated Columns option next.&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%2F955mnc49jcg3sckijieh.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%2F955mnc49jcg3sckijieh.png" alt="group results" width="760" height="153"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Configure calculated columns option
&lt;/h4&gt;

&lt;p&gt;After setting everything up, we can finally use the Calculated Columns option. It will add columns storing the necessary calculation results to the SQL query.&lt;/p&gt;

&lt;p&gt;NOTE:&lt;/p&gt;

&lt;p&gt;Regular columns in the query results table contain static data from the database. The&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Calculated Columns&lt;/strong&gt; option allows you to add new columns containing dynamic data to query results. Such dynamic data can be calculated based on data from other SQL query results columns. It works best in combination with the &lt;strong&gt;Group By&lt;/strong&gt; option. Read more &lt;a href="https://www.freecodecamp.org/news/sql-group-by-clauses-explained/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For instance, we group all items by &lt;strong&gt;Project ID&lt;/strong&gt; and display only items with a certain Project ID. This means we can count the amount, sum, and max/min value among all CCT items with the same Project ID. &lt;/p&gt;

&lt;p&gt;Therefore, to get all donations amounts for each project, we’ll add a new &lt;strong&gt;Calculated Column&lt;/strong&gt; based on column &lt;strong&gt;_ID&lt;/strong&gt; and use the function &lt;strong&gt;COUNT&lt;/strong&gt; to know the amount of all CCT items that fit our request. &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%2Foe7mvedqycz88zjc0e46.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%2Foe7mvedqycz88zjc0e46.png" alt="calculated column id with count function" width="760" height="181"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To count the sum of all donations, we’ll add the &lt;strong&gt;Calculated Column&lt;/strong&gt; based on the &lt;strong&gt;Amount&lt;/strong&gt; column from the table and use the function &lt;strong&gt;SUM&lt;/strong&gt;. That’s how we’ll know the sum of all &lt;strong&gt;Amount&lt;/strong&gt; fields in all CCT items within one project.&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%2Flj4cf4bfigsinuyjedxb.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%2Flj4cf4bfigsinuyjedxb.png" alt="calculated column amount with sum function" width="760" height="181"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Calculating percentages is a more complicated process, as we need to get data from the meta field to use them to make calculations. Let’s take the &lt;strong&gt;Amount column&lt;/strong&gt; one more time and use a custom function for results processing. Next, we’ll add math expressions to be calculated to the custom function body.&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%2F9hu8n6ub7orp4xfqgrt5.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%2F9hu8n6ub7orp4xfqgrt5.png" alt="define custom column using function" width="760" height="269"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In our case, &lt;strong&gt;SUM(%1$s)&lt;/strong&gt; gets the total amount of all CCT items, fitting the request. &lt;/p&gt;

&lt;p&gt;Next, this value should be divided by the value of the &lt;strong&gt;Total&lt;/strong&gt; meta field for the current project. However, we’ll use the &lt;strong&gt;current_meta&lt;/strong&gt; macro to get a certain value: &lt;strong&gt;%current_meta|total%&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Finally, we need to display all the information using the dynamic tag:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;donation amount;&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%2Fc84v4ahhd4bdgyxuhgib.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%2Fc84v4ahhd4bdgyxuhgib.png" alt="donation amount using dynamic tag count _id" width="760" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;sum;&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%2F4pxmtfrwkcoow1oylvi6.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%2F4pxmtfrwkcoow1oylvi6.png" alt="projects sum amount" width="760" height="545"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;percentages.&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%2Fnsrtwhasbyori1ja7lbl.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%2Fnsrtwhasbyori1ja7lbl.png" alt="display percentages via dynamic tag" width="760" height="674"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Donations table
&lt;/h3&gt;

&lt;p&gt;Now, let’s sort out the donations list. Before creating it, we need to create a new query for getting data to be displayed in the list.&lt;/p&gt;

&lt;p&gt;In this case, the &lt;strong&gt;Query type&lt;/strong&gt; would be &lt;strong&gt;Custom Content Type Query&lt;/strong&gt; by CCT Donations. Don’t forget to set the needed conditions in &lt;strong&gt;Where (query clauses)&lt;/strong&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%2Fgv8anidl2akd7xy45z9c.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%2Fgv8anidl2akd7xy45z9c.png" alt="query type custom content type" width="760" height="525"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We need to get donations from a specific project with the “Yes” value in the &lt;strong&gt;Show on project page&lt;/strong&gt; field and display all contributions from users who choose to show their names on the donations list.&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%2Fp4xb22y5zmmuo1mo7b7s.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%2Fp4xb22y5zmmuo1mo7b7s.png" alt="set up content type query settings" width="760" height="581"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After creating the query, let’s show all data in the table using the &lt;a href="https://crocoblock.com/plugins/jetengine/tables-builder/" rel="noopener noreferrer"&gt;Dynamic Table Builder module&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F710xvi7jdnusrgxtf5uq.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%2F710xvi7jdnusrgxtf5uq.png" alt="jetengine dynamic table builder module" width="760" height="387"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then choose the previously created “Donations list” in the &lt;strong&gt;Data Query&lt;/strong&gt; field.&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%2Fned4z2q9d1sk4vl7fut8.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%2Fned4z2q9d1sk4vl7fut8.png" alt="data query" width="760" height="243"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Set the needed columns and add the table to the single page.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fko08nkqjqdlhyztslcgo.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%2Fko08nkqjqdlhyztslcgo.png" alt="table columns" width="760" height="545"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Finally, we can add project information to the homepage’s listing grid.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sum Up: Testing
&lt;/h2&gt;

&lt;p&gt;As I wanted to create a fully workable crowdfunding platform, we’ve decided to create a PayPal account (Daria, our Content Manager) to collect all the donations and then send them to the dedicated project you choose.&lt;/p&gt;

&lt;p&gt;So, don’t hesitate to &lt;a href="https://crocoblock.com/donation-engine/" rel="noopener noreferrer"&gt;test the platform&lt;/a&gt;; donate to the charity project you like, and we’ll make sure to transfer the funds. After one month, we’ll share the report with you.&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://crocoblock.com/blog/wordpress-crowdfunding-platform-with-crocoblock/" rel="noopener noreferrer"&gt;Creating WordPress Crowdfunding Platform with Crocoblock&lt;/a&gt; appeared first on &lt;a href="https://crocoblock.com" rel="noopener noreferrer"&gt;Crocoblock&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>crocoblock</category>
      <category>crowdfunding</category>
      <category>ukraine</category>
    </item>
    <item>
      <title>14 Best Free Plugins and Tools for WordPress Website Development</title>
      <dc:creator>Lana Miro</dc:creator>
      <pubDate>Wed, 06 Apr 2022 11:56:56 +0000</pubDate>
      <link>https://dev.to/lana_miro/14-best-free-plugins-and-tools-for-wordpress-website-development-jcd</link>
      <guid>https://dev.to/lana_miro/14-best-free-plugins-and-tools-for-wordpress-website-development-jcd</guid>
      <description>&lt;p&gt;I’ve had a dream to gather all valuable, free plugins and tools for developing WordPress websites under one roof. Recently, this dream has become real. &lt;/p&gt;

&lt;p&gt;You may think: “Oh, one more article among tons of other.” Yeap, but this one has only community feedback and what the real WordPress developers are using. &lt;/p&gt;

&lt;p&gt;So, I’ve gone through our &lt;a href="https://www.facebook.com/groups/CrocoblockCommunity/posts/4961862940571754/" rel="noopener noreferrer"&gt;recent Community poll&lt;/a&gt; and asked the &lt;a href="https://poststatus.com/" rel="noopener noreferrer"&gt;Post Status&lt;/a&gt; community about the free tools everyone is using for website development. However, don’t hesitate to share your top plugin or tool in the comments below if I’ve missed something. Now, let me present the 14 best free plugins and tools for WordPress website development.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://wordpress.org/plugins/wp-staging/" rel="noopener noreferrer"&gt;WP Staging&lt;/a&gt;
&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%2F77xlb4hj2lknbdecemgn.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%2F77xlb4hj2lknbdecemgn.png" alt="Wp staging wordpress backup and cloning plugin" width="760" height="315"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;WP Staging plugin aims to migrate, clone websites, and be a great helper in testing plugins, making changes before going live.&lt;/p&gt;

&lt;p&gt;WP Staging features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clone or backup website;&lt;/li&gt;
&lt;li&gt;Migrate the staging WordPress site to the server;&lt;/li&gt;
&lt;li&gt;Backup website for testing.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Pods Framework
&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%2Fzfy06wrcjxub2r3qpzc6.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%2Fzfy06wrcjxub2r3qpzc6.png" alt="Pods custom post types plugin" width="760" height="478"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pods is the free WordPress plugin for creating custom post types and fields. Jim, from &lt;a href="https://rocketgenius.com/" rel="noopener noreferrer"&gt;Rocket Genius&lt;/a&gt; recommends this free plugin:&lt;/p&gt;

&lt;p&gt;“Primarily because it’s the easiest and most robust way to add Custom Post Types, Taxonomy, and Custom Fields in an all-in-one solution. The flexibility with adding to and expanding existing post types and taxonomies along with the powerful relationship fields make this a necessary addition to any work I do on a site.”  &lt;/p&gt;

&lt;p&gt;Pods Framework features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create content types;&lt;/li&gt;
&lt;li&gt;Build custom taxonomies;&lt;/li&gt;
&lt;li&gt;Add custom fields.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ACF
&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%2Fjzlznpe5uu3ly4omg7qv.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%2Fjzlznpe5uu3ly4omg7qv.png" alt="ACF wordpress plugin" width="760" height="521"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Advanced Custom Fields plugin is a free, simple WordPress plugin that allows to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add custom fields anywhere;&lt;/li&gt;
&lt;li&gt;Edit over 30 field types.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pro tip&lt;/p&gt;

&lt;p&gt;If you find this free custom post type plugin limitless, don’t hesitate to try out the &lt;a href="https://crocoblock.com/plugins/jetengine/" rel="noopener noreferrer"&gt;JetEngine&lt;/a&gt; plugin. Here you can &lt;a href="https://crocoblock.com/feature-comparison-dynamic-set/" rel="noopener noreferrer"&gt;check our comparison&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://wordpress.org/plugins/elementor/" rel="noopener noreferrer"&gt;Elementor&lt;/a&gt;
&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%2F8da6vq3mch80e0vutefm.gif" 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%2F8da6vq3mch80e0vutefm.gif" alt="elementor free wordpress plugin" width="800" height="454"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Without a doubt, Elementor will be on my list. This is one of the &lt;a href="https://crocoblock.com/blog/free-premium-wordpress-page-builders/" rel="noopener noreferrer"&gt;best WordPress page builder plugins&lt;/a&gt;, and many developers recommended this tool in my poll in Post Status.&lt;/p&gt;

&lt;p&gt;Elementor main features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Drag-n-drop functionality;&lt;/li&gt;
&lt;li&gt;Easy-to-use;&lt;/li&gt;
&lt;li&gt;30+ free widgets;&lt;/li&gt;
&lt;li&gt;Tons of &lt;a href="https://crocoblock.com/blog/free-premium-elementor-addons/" rel="noopener noreferrer"&gt;Elementor addons&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;“If you want to use WordPress’s CMS, your style options are limited. You can use Oxygen or equivalent and get a fast, beautiful website. But you’re going to spend dozens or hundreds of hours figuring out the development environment (and code library). Elementor, on the other hand, is beautiful and easy to use. All in all, the platform’s success speaks for itself. Elementor is wonderful to have in your WordPress tool stack,” says Richard, the owner of an &lt;a href="https://pantsandsocks.com/" rel="noopener noreferrer"&gt;e-store&lt;/a&gt; (built with Elementor, without coding skills).&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://wordpress.org/plugins/hide-my-wp/" rel="noopener noreferrer"&gt;Hide My WP Ghost&lt;/a&gt;
&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%2Fkimk2dc3s7atbjz4y4ft.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%2Fkimk2dc3s7atbjz4y4ft.png" alt="hide my wp ghost" width="760" height="507"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hide My WP Ghost is a &lt;a href="https://crocoblock.com/blog/best-wordpress-security-plugins/" rel="noopener noreferrer"&gt;WordPress security plugin&lt;/a&gt; recommended by the Crocoblock community. This free WordPress plugin helps to protect and secure your website. By the way, you can check if your website is secure with a &lt;a href="https://wpplugins.tips/wordpress-vulnerability-detector/" rel="noopener noreferrer"&gt;free vulnerability detector&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Hide My WP Ghost features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Compatible with different hostings and servers;&lt;/li&gt;
&lt;li&gt;Prevent SQL injections and scripts;&lt;/li&gt;
&lt;li&gt;Blacklist IPs manager.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://wordpress.org/plugins/wordfence/" rel="noopener noreferrer"&gt;Wordfence&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwddvr67o092rqblx6dyl.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%2Fwddvr67o092rqblx6dyl.png" alt="wordfence securing plugin" width="800" height="257"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;“WordFence Security is an essential plugin for any WordPress website. It’s a fully-featured security plugin to keep your website safe and secure. It will create a firewall to keep hackers away, keep you safe from malware and viruses. If there’s an issue, you will receive an email notification.” – Lindsay, &lt;a href="https://www.playbookux.com/" rel="noopener noreferrer"&gt;PlayBookUX&lt;/a&gt; co-founder.&lt;/p&gt;

&lt;p&gt;Wordfence features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Monitor hackers attacks;&lt;/li&gt;
&lt;li&gt;Block attackers by IPs;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://crocoblock.com/blog/wordpress-websites-management-plugins/" rel="noopener noreferrer"&gt;Multiple websites management&lt;/a&gt; with Wordfence Central.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://wordpress.org/plugins/cookie-law-info/" rel="noopener noreferrer"&gt;CookieYes&lt;/a&gt;
&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%2F1q99vr0lbf7fq17ib84h.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%2F1q99vr0lbf7fq17ib84h.png" alt="cookiyes free wordpress plugin for cookies consent" width="760" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;CookieYes free WordPress plugin guides you in a world of cookies consent, supporting European Union GDPR, LGPD of Brazil, CNIL of France, and California Consumer Privacy Act (CCPA).&lt;/p&gt;

&lt;p&gt;CookieYes features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enable a cookie pop-up with accept/reject options;&lt;/li&gt;
&lt;li&gt;Cookie scanning and categorization;&lt;/li&gt;
&lt;li&gt;Notice bar configuration.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://wordpress.org/plugins/accessibility-checker/" rel="noopener noreferrer"&gt;Accessibility Checker &lt;/a&gt;
&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%2Fphdxgwjg2dpmh5kjmg7v.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%2Fphdxgwjg2dpmh5kjmg7v.png" alt="free accessibility checker wordpress plugin" width="760" height="507"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;“Accessibility Checker is a great free plugin for auditing for accessibility problems while building websites,” – from the poll.&lt;/p&gt;

&lt;p&gt;Accessibility Checker features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Posts and pages checkups;&lt;/li&gt;
&lt;li&gt;Audit your content following the Web Content Accessibility Guidelines each time;&lt;/li&gt;
&lt;li&gt;Prepare suggestions for fixing the issues.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://wordpress.org/plugins/user-switching/" rel="noopener noreferrer"&gt;User Switching&lt;/a&gt;
&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%2Fkl48mpnzj1d4231u8jvv.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%2Fkl48mpnzj1d4231u8jvv.png" alt="user switching free tool" width="760" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The next valuable recommendation from WordPress developers was the User Switching plugin. This is a free plugin to switch between several WordPress accounts. Thus, it helps to swap quickly for testing websites.&lt;/p&gt;

&lt;p&gt;User Switching features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Log in/off from different WP accounts;&lt;/li&gt;
&lt;li&gt;Doesn’t reveal your passwords.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://wordpress.org/plugins/query-monitor/" rel="noopener noreferrer"&gt;Query Monitor&lt;/a&gt;
&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%2Fr613aro3mqacbzrsdl0q.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%2Fr613aro3mqacbzrsdl0q.png" alt="query monitor plugin" width="760" height="327"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Query Monitor is also a free and open-source WordPress plugin for developers. &lt;/p&gt;

&lt;p&gt;“Debug Monitor may be the most famous of free debug tools for website builders, but it doesn’t hold a candle to Query Monitor, in my opinion. Query Monitor lets us view the database and all the rows of code involved.” – Jane, &lt;a href="https://fastpeoplefinder.com/" rel="noopener noreferrer"&gt;FastPeopleFinder&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Query Monitor features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Debug database queries, PHP errors, etc.;&lt;/li&gt;
&lt;li&gt;Detect bad-performing plugins, themes;&lt;/li&gt;
&lt;li&gt;Admin toolbar menu.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://localwp.com/" rel="noopener noreferrer"&gt;Local WP&lt;/a&gt;
&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%2Fugwz4cj35dyl3b04g657.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%2Fugwz4cj35dyl3b04g657.png" alt="localwp by flywheel free tool" width="760" height="509"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Local WP is one of the best development tools to set up and test websites locally, created by the Flywheel team. &lt;/p&gt;

&lt;p&gt;Local WP features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Setup WordPress automatically;&lt;/li&gt;
&lt;li&gt;All-in-one dashboard for managing several websites;&lt;/li&gt;
&lt;li&gt;Advanced features like SSH access, WP-CLI, PHP environments.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://github.com/roots/trellis" rel="noopener noreferrer"&gt;Trellis&lt;/a&gt;
&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%2Fktwp7rg6d7oosqeed1pu.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%2Fktwp7rg6d7oosqeed1pu.png" alt="trellis free wordpress website development tool" width="760" height="262"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Trellis is a free, open-source tool for WordPress websites development. This free tool helps build production and development servers for hosting WordPress sites.&lt;/p&gt;

&lt;p&gt;“It enables you to automatically establish and provision a server for hosting a WordPress site by utilising Vagrant to create a self-contained virtual machine that replicates the environment that your site would utilize in production.” – Jamie Opalchuk, &lt;a href="https://www.hostpapa.com/" rel="noopener noreferrer"&gt;HostPapa&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://wordpress.org/plugins/code-snippets/" rel="noopener noreferrer"&gt;Code Snippets&lt;/a&gt;
&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%2F4b47dfxh7pjt0el1yjj3.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%2F4b47dfxh7pjt0el1yjj3.png" alt="code snippets free wp plugin" width="760" height="475"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Code Snippets plugin helps to expand WordPress website functionality using snippets (code). &lt;/p&gt;

&lt;p&gt;Code Snippets features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clean interface;&lt;/li&gt;
&lt;li&gt;Export/import snippets;&lt;/li&gt;
&lt;li&gt;Allows creating plugins/themes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://code.visualstudio.com/" rel="noopener noreferrer"&gt;Visual Studio Code&lt;/a&gt;
&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%2Fenuhl2kn6sjvz7wd8ht3.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%2Fenuhl2kn6sjvz7wd8ht3.png" alt="visual studio code wordpress tool" width="760" height="570"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The next free, open-source handy tool is Visual Studio Code, a text editor created by Microsoft. &lt;/p&gt;

&lt;p&gt;Visual Studio Code features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Code debugging;&lt;/li&gt;
&lt;li&gt;Built-in Github &amp;amp; Git commands;&lt;/li&gt;
&lt;li&gt;Intelligent code writing.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Each website developer chooses the tools regarding their needs. So, it’s essential to have free tools for WordPress website development.&lt;/p&gt;

&lt;p&gt;NOTE:&lt;/p&gt;

&lt;p&gt;There are several &lt;a href="https://crocoblock.com/freemium/free-plugins/" rel="noopener noreferrer"&gt;free WordPress plugins and tools&lt;/a&gt; developed by Crocoblock team.&lt;/p&gt;

&lt;p&gt;What about you? What tools are you using for website building?&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://crocoblock.com/blog/wordpress-development-free-plugins-and-tools/" rel="noopener noreferrer"&gt;14 Best Free Plugins and Tools for WordPress Website Development&lt;/a&gt; appeared first on &lt;a href="https://crocoblock.com" rel="noopener noreferrer"&gt;Crocoblock&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>free</category>
      <category>wordpress</category>
      <category>plugins</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How to Create a WordPress Guest Post Submission Form?</title>
      <dc:creator>Lana Miro</dc:creator>
      <pubDate>Fri, 28 Jan 2022 14:03:19 +0000</pubDate>
      <link>https://dev.to/lana_miro/how-to-create-a-wordpress-guest-post-submission-form-3784</link>
      <guid>https://dev.to/lana_miro/how-to-create-a-wordpress-guest-post-submission-form-3784</guid>
      <description>&lt;p&gt;What if you want to let the user submit the guest posts on your WordPress website? It’s doable, and this full tutorial will help you create a simple guest post submission form with the &lt;a href="https://jetformbuilder.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;JetFormBuilder WordPress plugin&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Before we dive into form creation, let me first cover guest posting meaning, pros, and threats.&lt;/p&gt;

&lt;p&gt;Table of contents:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
What is Guest Posting?

&lt;ul&gt;
&lt;li&gt;Why accept user-submitted content?&lt;/li&gt;
&lt;li&gt;Guest posting threats&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

How to Create Guest Post Submission Form?

&lt;ul&gt;
&lt;li&gt;Customize Posts custom post type&lt;/li&gt;
&lt;li&gt;Add new guest post submission WordPress form&lt;/li&gt;
&lt;li&gt;Set up post submit actions&lt;/li&gt;
&lt;li&gt;Add guest post form to the page&lt;/li&gt;
&lt;li&gt;Testing time&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;TL;DR&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  What Is Guest Posting?
&lt;/h2&gt;

&lt;p&gt;Basically, &lt;strong&gt;guest posting&lt;/strong&gt; is the process of writing content for other blogs. It helps the author (guest-poster) to attract more attention to their website or personality.&lt;/p&gt;

&lt;p&gt;Furthermore, guest authors build awareness across their industry and get a backlink to their website, social media, etc. It’s one of the best ways of improving &lt;strong&gt;personal branding&lt;/strong&gt;. &lt;/p&gt;

&lt;h3&gt;
  
  
  Why accept user-submitted content?
&lt;/h3&gt;

&lt;p&gt;But why your company website or personal blog should accept guest posts? There are a few reasons to allow user-submitted content:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;bring more expertise to your blog; &lt;/li&gt;
&lt;li&gt;generate valuable and relevant content from guest authors;&lt;/li&gt;
&lt;li&gt;check how your audience reacts to user-generated content;&lt;/li&gt;
&lt;li&gt;communicate with professionals;&lt;/li&gt;
&lt;li&gt;diversify the on-site content.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Guest posting threats
&lt;/h3&gt;

&lt;p&gt;Among all guest posting perspectives, there are also a few threats that you can easily avoid.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Spam&lt;/strong&gt;. You’ll constantly face spam/irrelevant content submissions after opening a guest posting opportunity on your website. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No submissions&lt;/strong&gt;. Sometimes it also happens, and you need to attract guest authors to contribute content to your platform.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Not following your guidelines&lt;/strong&gt;. Brrr… Of course, not everyone will strictly follow your blog rules. And you have to edit the article by yourself or decline the post written by a guest author.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;But, no worries, if you know your audience’s interests, have strict article guidelines, carefully read each article before posting, you’ll successfully avoid guest posting threats. Hence, none can be assured in spamming emails or articles, so you need to accept this first. &lt;/p&gt;

&lt;p&gt;Nevertheless, guest posting is a fantastic opportunity for each blog, and only you choose the strategy you want to follow.&lt;/p&gt;

&lt;p&gt;📚&lt;strong&gt;Read also:&lt;/strong&gt; &lt;a href="https://crocoblock.com/blog/why-you-should-use-wordpress/" rel="noopener noreferrer"&gt;Why you should use WordPress?&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At this cheerful point, let’s create our &lt;strong&gt;guest-posting WordPress form&lt;/strong&gt; using the JetFormBuilder plugin. If you prefer video instead of written instructions, we have the one on our YouTube channel:&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Create a Guest Post Submission Form?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Customize the Posts custom post type
&lt;/h3&gt;

&lt;p&gt;Before we start creating the form, let’s sum up what information we need from the user:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;author name&lt;/li&gt;
&lt;li&gt;author email&lt;/li&gt;
&lt;li&gt;article title&lt;/li&gt;
&lt;li&gt;article content&lt;/li&gt;
&lt;li&gt;article category&lt;/li&gt;
&lt;li&gt;article excerpt &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most fields are already available in WordPress Posts CPT but I want to create some additional fields. For this, I’ll edit my &lt;strong&gt;Posts&lt;/strong&gt; built-in &lt;a href="https://crocoblock.com/plugins/jetengine/custom-post-type/" rel="noopener noreferrer"&gt;custom post type&lt;/a&gt;. Thus, go to &lt;a href="https://crocoblock.com/plugins/jetengine/custom-post-type/" rel="noopener noreferrer"&gt;&lt;strong&gt;&lt;em&gt;JetEngine&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt; &lt;strong&gt;&lt;em&gt;&amp;gt; Post Types&lt;/em&gt;&lt;/strong&gt; , toggle built-in post types, find the &lt;strong&gt;Posts&lt;/strong&gt; type, and press the Edit action.&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%2F178hk1ukme9emcp3w4sl.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%2F178hk1ukme9emcp3w4sl.png" alt="wordpress custom post types list" width="760" height="291"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I want to add &lt;strong&gt;two additional meta fields&lt;/strong&gt; to create the author account for them manually after submitting the form. So, I’ll scroll to the meta fields section in the Posts CPT, and add Author &amp;amp; Email (field type: Text).&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%2Fec5tlecucu619ut29mlv.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%2Fec5tlecucu619ut29mlv.png" alt="wordpress meta fields" width="760" height="165"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;NOTE:&lt;/p&gt;

&lt;p&gt;You can use &lt;a href="https://crocoblock.com/knowledge-base/articles/jetengine-user-profile-builder-overview/" rel="noopener noreferrer"&gt;Profile Builder&lt;/a&gt; to create an author account automatically.&lt;/p&gt;

&lt;h3&gt;
  
  
  Add a new guest post submission WordPress form
&lt;/h3&gt;

&lt;p&gt;Now we are ready to create our guest post submission form. Navigate to &lt;strong&gt;JetFormBuilder&lt;/strong&gt; and press the “ &lt;strong&gt;Add New&lt;/strong&gt; ” button. I’ll name my form &lt;strong&gt;Submit Guest Post&lt;/strong&gt; and add the form fields.&lt;/p&gt;

&lt;p&gt;The first form section will be author details:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;First &amp;amp; Last name (Text field)&lt;/li&gt;
&lt;li&gt;Email (Text field)&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%2F4gxjw9929bqhtanu5lb4.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%2F4gxjw9929bqhtanu5lb4.png" alt="submit guest post wordpress form" width="760" height="357"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The second form section will be about article details, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Article Title (Text field);&lt;/li&gt;
&lt;li&gt;Article Excerpt (Textarea field);&lt;/li&gt;
&lt;li&gt;Article Body (WYSIWYG field);&lt;/li&gt;
&lt;li&gt;Article Category (Select field, I’ve set it to pre-fill options from the &lt;strong&gt;Terms&lt;/strong&gt; – taxonomy as &lt;strong&gt;Category&lt;/strong&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%2Feoiuymka56tl3f0n77g3.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%2Feoiuymka56tl3f0n77g3.png" alt="free wordpress form" width="760" height="587"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Set up Post-Submit Actions
&lt;/h3&gt;

&lt;p&gt;After creating the form fields, we need to let our form understand what to do after submission. &lt;/p&gt;

&lt;p&gt;For this, post-submit actions exist. A few actions are available (send an email, insert/update post, redirect to a page, etc.), but we need only &lt;a href="https://jetformbuilder.com/features/insert-update-post/" rel="noopener noreferrer"&gt;Insert/Update action&lt;/a&gt; to make our guest post submissions go directly to our &lt;strong&gt;Posts&lt;/strong&gt; custom post type. &lt;/p&gt;

&lt;p&gt;Therefore, navigate to JetForm post-submit actions, choose &lt;strong&gt;Insert/Update Post&lt;/strong&gt; , and press the “ &lt;strong&gt;Edit&lt;/strong&gt; ” button:&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%2F8yslrbhqvuop0pn4libm.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%2F8yslrbhqvuop0pn4libm.png" alt="set up post submit actions" width="760" height="409"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Firstly, we need to choose the relevant post type to store guest posts. In my case, it’s an in-built &lt;strong&gt;Posts&lt;/strong&gt; post type. Secondly, select the post status:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Draft (save the article as a draft);&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pending Review&lt;/strong&gt; (set pending review status; I’ll go with this option);&lt;/li&gt;
&lt;li&gt;Private (publish the article privately);&lt;/li&gt;
&lt;li&gt;Published (instantly publish the guest post on your blog).&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%2Fh0cvh3hsj9jq57lihdar.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%2Fh0cvh3hsj9jq57lihdar.png" alt="edit post submit action" width="760" height="151"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thirdly, the most crucial part (my favorite one) is matching the form fields with custom post type fields: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;First &amp;amp; Last Name is my newly created meta field &lt;strong&gt;author&lt;/strong&gt; ;&lt;/li&gt;
&lt;li&gt;Email is also one of created meta fields &lt;strong&gt;email&lt;/strong&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%2F9tj2qs1qq79pjld27f52.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%2F9tj2qs1qq79pjld27f52.png" alt="edit insert update action" width="760" height="320"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Article Title is the in-built meta field &lt;strong&gt;Post Title&lt;/strong&gt; ;&lt;/li&gt;
&lt;li&gt;Article Excerpt maps with &lt;strong&gt;Post Excerpt&lt;/strong&gt; ;&lt;/li&gt;
&lt;li&gt;Article Body is our &lt;strong&gt;Post Content&lt;/strong&gt; ;&lt;/li&gt;
&lt;li&gt;Article Category is in-built post term &lt;strong&gt;Categories&lt;/strong&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%2F48yx9ujcbim65qy797dx.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%2F48yx9ujcbim65qy797dx.png" alt="map wp form fields with meta fields" width="760" height="387"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After mapping form fields with meta fields, press the “ &lt;strong&gt;Update&lt;/strong&gt; ” button. You can also add more post-submit actions like &lt;a href="https://jetformbuilder.com/features/send-email/" rel="noopener noreferrer"&gt;Send email&lt;/a&gt;, &lt;a href="https://jetformbuilder.com/features/redirect-to-page/" rel="noopener noreferrer"&gt;Redirect to a page&lt;/a&gt;, etc. I’m okay with just Insert Post action.&lt;/p&gt;

&lt;p&gt;Besides, we are done with creating the WordPress guest submission form, and now let’s add the form to a page.&lt;/p&gt;

&lt;h3&gt;
  
  
  Add guest post form to the page
&lt;/h3&gt;

&lt;p&gt;However, I’m using Gutenberg editor; there are two ways to add the form to the page:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;via the JetForm block;&lt;/li&gt;
&lt;li&gt;via a Shortcode (copy the form shortcode, and add it to the needed page).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’m using the JetForm block. So, I go to the WordPress page, where I want to add my form, press &lt;strong&gt;Plus&lt;/strong&gt; icon, and choose the JetForm block. After this, you are asked to select the form; I’ll go with my &lt;strong&gt;Submit Guest Post&lt;/strong&gt; form and press “ &lt;strong&gt;Publish&lt;/strong&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%2Fuefz75bd26kpx4slf1ec.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%2Fuefz75bd26kpx4slf1ec.png" alt="add wordpress form to page" width="760" height="301"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hence, we’ve created the guest post WordPress form and successfully added it to the page.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8krrbwmr9rlc3ytr2odf.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%2F8krrbwmr9rlc3ytr2odf.png" alt="wordpress guest post form example" width="760" height="804"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Testing time
&lt;/h3&gt;

&lt;p&gt;Let’s check how our guest post submission form works. I’ve submitted the article text from our &lt;a href="https://crocoblock.com/blog/the-future-with-gutenberg-the-brand-new-content-editor-or-a-website-builder/" rel="noopener noreferrer"&gt;Gutenberg Editor: Threats, Missing Features and Future&lt;/a&gt;, and it’s immediately appeared in my WordPress dashboard:&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%2Flpvnxoox66250nyh4m81.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%2Flpvnxoox66250nyh4m81.png" alt="back end wordpress form submission" width="760" height="144"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, I can review/edit the article.  &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%2Feu3z10xeacbapbf7bipr.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%2Feu3z10xeacbapbf7bipr.png" alt="post submit article example" width="760" height="329"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Additional information (author and email) is displayed right after the article. So, I can use the details for creating an author account in WordPress (if appropriate).&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%2Fgazrlp34lqz6jy5glsng.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%2Fgazrlp34lqz6jy5glsng.png" alt="meta fields example" width="760" height="128"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It works amazing, doesn’t it? &lt;/p&gt;

&lt;p&gt;NOTE:&lt;/p&gt;

&lt;p&gt;Oh, boy! I had forgotten about form styling. I like my minimalistic style, but would you like to style each form block? &lt;a href="https://crocoblock.com/plugins/jetstylemanager/" rel="noopener noreferrer"&gt;JetStyleManager free WordPress plugin&lt;/a&gt; is here for you. Check out the &lt;a href="https://jetformbuilder.com/features/style-overview/" rel="noopener noreferrer"&gt;styling documentation&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;The guest post submission form helps you to make the guest posting easier. The article is sent directly to your WordPress posts, which allows you to review, edit, and publish the articles faster.&lt;/p&gt;

&lt;p&gt;Few insights I’ve come up with while preparing this WordPress guest post creation guide:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Think about where you want to &lt;strong&gt;store your article submissions&lt;/strong&gt; : in a new custom post type or in-built CPT (like Posts).&lt;/li&gt;
&lt;li&gt;Add/edit additional &lt;strong&gt;meta fields&lt;/strong&gt; to your custom posts (if needed).&lt;/li&gt;
&lt;li&gt;Create a &lt;strong&gt;WordPress form&lt;/strong&gt; with all necessary fields.&lt;/li&gt;
&lt;li&gt;Set up &lt;strong&gt;post-submit actions&lt;/strong&gt; (what the form needs to do after the user submits it).&lt;/li&gt;
&lt;li&gt;Be attentive to &lt;strong&gt;mapping form fields&lt;/strong&gt; with post meta (ID/Name must be the same).&lt;/li&gt;
&lt;li&gt;Make special &lt;strong&gt;requirements&lt;/strong&gt; for your guest writers to follow. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You’re welcome to submit your questions or share your guest forms created with JetFormBuilder below.&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://crocoblock.com/blog/wordpress-guest-post-submission-form/" rel="noopener noreferrer"&gt;How to Create a WordPress Guest Post Submission Form?&lt;/a&gt; appeared first on &lt;a href="https://crocoblock.com" rel="noopener noreferrer"&gt;Crocoblock&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>freeform</category>
      <category>jetformbuilder</category>
      <category>plugin</category>
    </item>
    <item>
      <title>Creating Survey Form with free JetFormBuilder Plugin (Step-by-step)</title>
      <dc:creator>Lana Miro</dc:creator>
      <pubDate>Fri, 21 Jan 2022 10:57:46 +0000</pubDate>
      <link>https://dev.to/lana_miro/creating-survey-form-with-free-jetformbuilder-plugin-step-by-step-484l</link>
      <guid>https://dev.to/lana_miro/creating-survey-form-with-free-jetformbuilder-plugin-step-by-step-484l</guid>
      <description>&lt;p&gt;In this tutorial, I would like to make a simple WordPress survey form using the &lt;a href="https://jetformbuilder.com/" rel="noopener noreferrer"&gt;free JetFormBuilder plugin&lt;/a&gt;. JetFormBuilder was released in January 2021, and it has become a handy friend for WordPress developers.&lt;/p&gt;

&lt;p&gt;Thus, I’ve decided to continue my how-to WordPress form series; here are the previous ones.👇&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://lanamiro.medium.com/creating-subscription-wordpress-form-with-free-jetformbuilder-step-by-step-307428134807" rel="noopener noreferrer"&gt;Creating Subscription WordPress Form with free JetFormBuilder (Step-by-step)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://lanamiro.medium.com/how-to-build-free-wordpress-contact-us-form-with-jetformbuilder-step-by-step-bf72ab6f07e2" rel="noopener noreferrer"&gt;How to Build Free WordPress Contact Us Form with JetFormBuilder? (Step-by-step)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You’ll need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;WordPress&lt;/li&gt;
&lt;li&gt;Custom post plugin (I’ll use &lt;a href="https://crocoblock.com/plugins/jetengine/custom-post-type/" rel="noopener noreferrer"&gt;JetEngine&lt;/a&gt;, feel free to check out &lt;a href="https://hackernoon.com/top-custom-post-types-plugins-for-wordpress" rel="noopener noreferrer"&gt;other CPT plugins&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://jetformbuilder.com/" rel="noopener noreferrer"&gt;free JetFormBuilder plugin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://wordpress.org/plugins/jet-style-manager/" rel="noopener noreferrer"&gt;free JetStyleManager&lt;/a&gt; (if you want to style form in Gutenberg)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  How to Build WordPress Survey Form Step-by-Step?
&lt;/h3&gt;

&lt;p&gt;Step 1. Download and Activate WordPress Plugins&lt;/p&gt;

&lt;p&gt;Step 2. Create Custom Post Type for Storing Survey Form Replies&lt;/p&gt;

&lt;p&gt;Step 3. Create New WordPress Form&lt;/p&gt;

&lt;p&gt;Step 4. Set up Post Submit Actions&lt;/p&gt;

&lt;p&gt;Step 5. Add the WordPress form to the page&lt;/p&gt;

&lt;p&gt;Step 6. Check Survey Form Results&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 1. Download and Activate WordPress Plugins
&lt;/h4&gt;

&lt;p&gt;To start with, follow one of 3 ways to download the JetFormBuilder free WordPress form plugin: &lt;a href="https://wordpress.org/plugins/jetformbuilder/" rel="noopener noreferrer"&gt;WordPress directory&lt;/a&gt;, WordPress plugins tab in the dashboard, via the official &lt;a href="https://jetformbuilder.com/" rel="noopener noreferrer"&gt;jetformbuilder.com&lt;/a&gt; website.&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%2F5lbi7xb1p0ac1530ra2l.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%2F5lbi7xb1p0ac1530ra2l.png" alt="jetformbuilder official website" width="800" height="492"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We also need a &lt;strong&gt;custom post type plugin&lt;/strong&gt; , so feel free to install your favored tool. I have the &lt;a href="https://crocoblock.com/plugins/jetengine/" rel="noopener noreferrer"&gt;JetEngine WordPress plugin&lt;/a&gt; installed.&lt;/p&gt;

&lt;p&gt;The JetStyleManager is needed only for styling WordPress forms in Gutenberg, but I’m okay with my global styling settings so that I won’t be using it.&lt;/p&gt;

&lt;p&gt;After installation and activation, you’ll find the plugins section in &lt;strong&gt;the left menu&lt;/strong&gt; (JetFormBuilder and JetEngine) and &lt;strong&gt;the Installed Plugins&lt;/strong&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AMii-e_MXk7wFxzYZr1aOMQ.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AMii-e_MXk7wFxzYZr1aOMQ.png" alt="install custom post type plugin" width="800" height="362"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We need a custom post type post plugin for showing WordPress form responses (store our responses).&lt;/p&gt;

&lt;p&gt;Recently, I’ve come up with 2 CPT creation options (free &amp;amp; paid) in this tutorial.👇&lt;/p&gt;

&lt;p&gt;&lt;a href="https://lanamiro.medium.com/how-to-display-wordpress-form-submission-with-jetformbuilder-ce7ec1fe1e7d" rel="noopener noreferrer"&gt;How to Display WordPress Form Submissions with JetFormBuilder?&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 2. Create Custom Post Type for Storing Survey Form Replies
&lt;/h4&gt;

&lt;p&gt;To create a custom post type (CPT), select &lt;strong&gt;JetEngine -&amp;gt; Post Types -&amp;gt; Add New&lt;/strong&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%2Fcdn-images-1.medium.com%2Fmax%2F490%2F1%2AfFHGF3dMz7P7HN9ZhpBOsg.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%2Fcdn-images-1.medium.com%2Fmax%2F490%2F1%2AfFHGF3dMz7P7HN9ZhpBOsg.png" alt="Create Custom Post Type for Storing Survey Form Replies" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Name your post type accordingly, and press Add Post Type:&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2ACpYL4CPZB-tOPaI3RnsaDg.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2ACpYL4CPZB-tOPaI3RnsaDg.png" alt="name CPT" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thus, you will see the &lt;strong&gt;Survey Replies&lt;/strong&gt; tab on the left of your WordPress dashboard and in the JetEngine custom post types list:&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2A4dhuRbx0vfGBLMWv8KhUMg.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2A4dhuRbx0vfGBLMWv8KhUMg.png" alt="custom post types list in wordpress" width="800" height="244"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We need to add Meta Fields named just as our future WordPress form fields.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;💡&lt;/em&gt; &lt;strong&gt;Quick tip:&lt;/strong&gt; &lt;em&gt;before creating my WP survey form, I make a list of questions I want to include. So, it helps me to copy=paste survey questions to my meta fields, form fields, etc. Here is an example of my draft:&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&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%2Fcdn-images-1.medium.com%2Fmax%2F844%2F1%2AMJC9PJhhWubKkZIOZUM7gQ.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%2Fcdn-images-1.medium.com%2Fmax%2F844%2F1%2AMJC9PJhhWubKkZIOZUM7gQ.png" alt="draft of wordpress form fields" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, I’d like to cover &lt;strong&gt;detailed instructions for creating meta fields&lt;/strong&gt; for each question from my survey form.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Name is the simple Text field type, so I need to use only Label (my field name), ID, and &lt;strong&gt;Field Type — Text.&lt;/strong&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AMi955uYnH3XSUWLt58W2EA.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AMi955uYnH3XSUWLt58W2EA.png" alt="create name field" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What is your professional experience? — is the Radio Field, so I need to set Label, Field Type, and add Field Options:&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AD1q-WiQZEAiyR5qaKfEDfA.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AD1q-WiQZEAiyR5qaKfEDfA.png" alt="create radio form field" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Field option is just the choices we’ll have in these questions; I have 4:&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AalRoSNTsUKekv8KTEzewTg.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AalRoSNTsUKekv8KTEzewTg.png" alt="field options" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How have you found my blog? — is also the Radio form field, so the configuration is the same as above:&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AdEP1cA3KXU7wtchUGJSbPg.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AdEP1cA3KXU7wtchUGJSbPg.png" alt="radio field" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;When you’ve started to read my blog? — is the Text field, so nothing special:&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AWSTd5HYXNT8fzlTa6PfUaw.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AWSTd5HYXNT8fzlTa6PfUaw.png" alt="text field in meta field" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which type of content do you prefer? — is the Checkbox field. Hence, I should fill out Label &amp;amp; ID fields, choose &lt;strong&gt;Field Type&lt;/strong&gt; as  &lt;strong&gt;Checkbox&lt;/strong&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2An01lYAY1ixpzZ5LDgQ-YGw.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2An01lYAY1ixpzZ5LDgQ-YGw.png" alt="checkbox field in meta field" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then, add field options and toggle &lt;strong&gt;Save as an array&lt;/strong&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AnkUxoJvavO50hQEJQuUEOg.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AnkUxoJvavO50hQEJQuUEOg.png" alt="toggle save as array" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What would you like to see more in my blog? — is text field too:&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AyqwJgo3WfrNW9RVJcIsiOQ.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AyqwJgo3WfrNW9RVJcIsiOQ.png" alt="text field" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What is your favorite blog post from my blog? — this will be the Select field in my form. To let the user choose the favorite published post from the existing ones. So, in my CPT meta field, I need to select &lt;strong&gt;Field Type — Posts:&lt;/strong&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2A5d-yhFqz_qhfKdwAWveDfA.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2A5d-yhFqz_qhfKdwAWveDfA.png" alt="field type posts" width="800" height="509"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Any comments? — is also the simple Text field:&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AIFDcZ0xQLiIVZW_PK0qvJA.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AIFDcZ0xQLiIVZW_PK0qvJA.png" alt="text field in meta field" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Finally, my Survey Replies custom post type will have 8 meta fields which will be correlated with my Survey form fields:&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AQ1I33EZtGsYhjNWd_IkV6g.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AQ1I33EZtGsYhjNWd_IkV6g.png" alt="wordpress meta fields examples" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 3. Create New WordPress Form
&lt;/h4&gt;

&lt;p&gt;Now, we are ready to create our Survey WordPress form. Press &lt;strong&gt;Add New&lt;/strong&gt; in the JetFormBuilder dashboard:&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%2Fcdn-images-1.medium.com%2Fmax%2F946%2F1%2AYHsFv45fCgy4YkUkrfGSrQ.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%2Fcdn-images-1.medium.com%2Fmax%2F946%2F1%2AYHsFv45fCgy4YkUkrfGSrQ.png" alt="create wordpress survey form" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’ll name it Survey Form 😅; the goal of my survey form will be to gather feedback about my blog.&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2A1ZoycX5JWXv2VmLYds3Gsw.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2A1ZoycX5JWXv2VmLYds3Gsw.png" alt="name your wordpress form" width="800" height="247"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then, I’ll add simple form fields to gather information for my survey.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;⚡Quick tip:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I’ve added text area field type:&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2A1SKX01DmVYU_uY3T4TdurQ.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2A1SKX01DmVYU_uY3T4TdurQ.png" alt="form field types" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;But then I decided that my question (What is your professional experience?) is better for the&lt;/em&gt; &lt;strong&gt;&lt;em&gt;radio field&lt;/em&gt;&lt;/strong&gt; &lt;em&gt;, so there is no need to delete and create again; use the&lt;/em&gt; &lt;a href="https://jetformbuilder.com/features/wordpress-blocks-transformation/" rel="noopener noreferrer"&gt;&lt;em&gt;block transformation feature&lt;/em&gt;&lt;/a&gt;&lt;em&gt;. Press the text icon, and transform to the field you need to:&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%2Fcdn-images-1.medium.com%2Fmax%2F836%2F1%2ALzYiZeaNuYCOivQEPKAgZA.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%2Fcdn-images-1.medium.com%2Fmax%2F836%2F1%2ALzYiZeaNuYCOivQEPKAgZA.png" alt="wordpress block transformation" width="800" height="743"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So, I’ve transformed my text field to radio field, and now I need to add a few items (answers):&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%2Fcdn-images-1.medium.com%2Fmax%2F752%2F1%2Ac-OY9-8U1sEx5JiiZjBesg.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%2Fcdn-images-1.medium.com%2Fmax%2F752%2F1%2Ac-OY9-8U1sEx5JiiZjBesg.png" alt="transform gutenberg form field block" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Also, if you need the field to be required, just use the toggle. I’ve added items to the question so that the user can choose among 4 options:&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2Am_ts16WjR0lD5CY9ymDuWA.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2Am_ts16WjR0lD5CY9ymDuWA.png" alt="radio field type" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So, I’ve added Name, Experience, How you found my blog fields:&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%2Fcdn-images-1.medium.com%2Fmax%2F744%2F1%2A1RW2n0ZIBnI5Zez_qIRrnw.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%2Fcdn-images-1.medium.com%2Fmax%2F744%2F1%2A1RW2n0ZIBnI5Zez_qIRrnw.png" alt="wordpress radio field" width="744" height="555"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let’s add a few more questions/form fields about user experience with my blog. So, I’ve added:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Text field (to ask when my reader becomes my subscriber)&lt;/li&gt;
&lt;li&gt;Checkbox field (to let the user choose the favored content type)&lt;/li&gt;
&lt;li&gt;Text field (to share suggestions for future content)&lt;/li&gt;
&lt;li&gt;Select field (to choose among my existing articles the best one)&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2Atn22VMin8wy6v29hgCJo-Q.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2Atn22VMin8wy6v29hgCJo-Q.png" alt="wordpress form fields" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 4. Set up Post Submit Actions
&lt;/h4&gt;

&lt;p&gt;Post submit actions are the way to say what your form needs to do with responses after submission.&lt;/p&gt;

&lt;p&gt;So, I want my WordPress form to send the survey reply to my Survey Replies CPT.&lt;/p&gt;

&lt;p&gt;Choose the Insert/Update post submit action -&amp;gt; Edit action button in the right side:&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%2Fcdn-images-1.medium.com%2Fmax%2F318%2F1%2AUkz5YpybDocaE9jDjWwjCA.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%2Fcdn-images-1.medium.com%2Fmax%2F318%2F1%2AUkz5YpybDocaE9jDjWwjCA.png" alt="set up wordpress form post submit actions" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then, select the Post Type (in my case, Survey Replies) and Post Status (I won’t publish the Survey reply, so I’ve chosen Pending review). And next step is to map Meta Fields (we’ve created earlier) and Form Fields.&lt;/p&gt;

&lt;p&gt;💡Important: t &lt;strong&gt;he title of Meta should be the same as your Meta Field ID:&lt;/strong&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2A4gt-eXKCRHy7NQQcBeaJHg.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2A4gt-eXKCRHy7NQQcBeaJHg.png" alt="edit Insert update post submit actions" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After mapping all form fields, press the update button.&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 5. Add the WordPress form to the page
&lt;/h4&gt;

&lt;p&gt;There are 2 ways to add the created WordPress form, go to your page (where you want to add the form), and:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Press the “plus” button to search &lt;strong&gt;JetForm block:&lt;/strong&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2Afb2dS53iV8rCcQzPdXs3oQ.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2Afb2dS53iV8rCcQzPdXs3oQ.png" alt="add wordpress form to the page" width="800" height="353"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then choose the form you want to add:&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2A67VdNKkJfbQQRwjLE4Q-Ew.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2A67VdNKkJfbQQRwjLE4Q-Ew.png" alt="Choose Jetform block" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Via shortcode&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It means, go to JetFormBuilder forms dashboard copy the shortcode:&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2A0-rNYsgHsAqIMOcVrUCOvw.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2A0-rNYsgHsAqIMOcVrUCOvw.png" alt="add wordpress form with shortcode" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And pass the shortcode to your Gutenberg page:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F955%2F1%2AwRlHEveI5Y_My0X1aJaBfg.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%2Fcdn-images-1.medium.com%2Fmax%2F955%2F1%2AwRlHEveI5Y_My0X1aJaBfg.png" alt="add the form via shortcode" width="800" height="274"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We are done, the WordPress form has been successfully added:&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2ARvo_Pquu-yKdztqqDszhhQ.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2ARvo_Pquu-yKdztqqDszhhQ.png" alt="free wordpress survey form" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Step 6. Check Survey Form Results&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Now, let’s test how it works. 😊&lt;/p&gt;

&lt;p&gt;I’ve submitted the form with these data:&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2A5653PtFIjuMtKWmzX8_tHQ.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2A5653PtFIjuMtKWmzX8_tHQ.png" alt="check survey results" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And Survey reply immediately appears in my CPT:&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%2Fcdn-images-1.medium.com%2Fmax%2F748%2F1%2A5zwNrmqs_N8M7WYeDQYLOQ.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%2Fcdn-images-1.medium.com%2Fmax%2F748%2F1%2A5zwNrmqs_N8M7WYeDQYLOQ.png" alt="check custom post types form replies" width="748" height="653"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And data from the survey reply looks like this:&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AWWp-277ebNvy6PdQWjdKYA.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AWWp-277ebNvy6PdQWjdKYA.png" alt="display wordpress form results in custom post type" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Everything works flawlessly. 👌&lt;/p&gt;

&lt;h3&gt;
  
  
  Sum Up
&lt;/h3&gt;

&lt;p&gt;The tutorial may seem too long or complicated, but this is only because I’ve tried to be as detailed, as I can to make it helpful.&lt;/p&gt;

&lt;p&gt;What WordPress form builder do you use for surveys? Please share your thoughts and questions in the comments below. I’ll be happy to get your feedback about my form creation series.&lt;/p&gt;

</description>
      <category>createsurveyform</category>
      <category>wordpressplugins</category>
      <category>surveyform</category>
      <category>wordpress</category>
    </item>
    <item>
      <title>How to Display WordPress Form Submissions via CPT?</title>
      <dc:creator>Lana Miro</dc:creator>
      <pubDate>Tue, 18 Jan 2022 07:48:53 +0000</pubDate>
      <link>https://dev.to/lana_miro/how-to-display-wordpress-form-submissions-via-cpt-1f45</link>
      <guid>https://dev.to/lana_miro/how-to-display-wordpress-form-submissions-via-cpt-1f45</guid>
      <description>&lt;p&gt;Have you wondered how to showcase form submission from the WordPress form created in the free JetFormBuilder plugin? Then, this tutorial is definitely for you.&lt;/p&gt;

&lt;p&gt;I’ll show you how to display form submissions via CPT, using plugins:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Show Form Submissions Using Custom Post Types (JetEngine Plugin)&lt;/li&gt;
&lt;li&gt;Creating CPT with free Pods plugin&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After the user submits &lt;a href="https://lanamiro.medium.com/how-to-build-free-wordpress-contact-us-form-with-jetformbuilder-step-by-step-bf72ab6f07e2" rel="noopener noreferrer"&gt;&lt;strong&gt;my contact form&lt;/strong&gt;&lt;/a&gt;, there are several options to store responses:&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%2Fqdynceemffekwr6s8bte.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%2Fqdynceemffekwr6s8bte.png" alt="submit contact form" width="800" height="445"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;send email to my inbox&lt;/li&gt;
&lt;li&gt;send the request to MailChimp&lt;/li&gt;
&lt;li&gt;Insert post&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I would like to create a &lt;strong&gt;custom post type&lt;/strong&gt; to store my form responses and show form submissions on the front end of my website with the &lt;a href="https://jetformbuilder.com/features/insert-update-post/" rel="noopener noreferrer"&gt;&lt;strong&gt;Insert/Update Post&lt;/strong&gt;&lt;/a&gt; submit action.&lt;/p&gt;

&lt;h3&gt;
  
  
  Show Form Submissions Using Custom Post Types (JetEngine Plugin)
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://crocoblock.com/plugins/jetengine/" rel="noopener noreferrer"&gt;&lt;strong&gt;JetEngine&lt;/strong&gt;&lt;/a&gt; is the premium WordPress plugin for dynamic content that will help me create a new &lt;strong&gt;custom post type, “Form Submissions”&lt;/strong&gt;. The steps to follow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a new CPT&lt;/li&gt;
&lt;li&gt;Create WordPress form with JetFormBuilder&lt;/li&gt;
&lt;li&gt;Set up post submit action&lt;/li&gt;
&lt;li&gt;Testing Time&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  #1 Create a new CPT
&lt;/h4&gt;

&lt;p&gt;After installation and activation of JetEngine WordPress plugin, go to &lt;strong&gt;JetEngine -&amp;gt; Post Types -&amp;gt; Add New&lt;/strong&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%2Fwujs5qqy35ao28bjhboo.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%2Fwujs5qqy35ao28bjhboo.png" alt="Create a new wordpress CPT" width="800" height="373"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As I have several WordPress forms on my website, I need to create a memorable custom post type for my Contact form, let’s call it “ &lt;strong&gt;Contact Us Responses&lt;/strong&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%2Fexvvwjsafmlih2qdh57c.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%2Fexvvwjsafmlih2qdh57c.png" alt="Contact Us Responses custom post type" width="800" height="392"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then, I need to add meta fields according to my form:&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%2Frg4hk6ja9ebvv8931eeb.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%2Frg4hk6ja9ebvv8931eeb.png" alt="add meta fields according to my form" width="800" height="464"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You just &lt;strong&gt;copy the labels&lt;/strong&gt; from your form fields. For example, the first field is Name, I’ve put Label — Name, and ID — name, chose Field type as text.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;But what if we have another field type?&lt;/em&gt; For instance, the Radio field:&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%2Fcdn-images-1.medium.com%2Fmax%2F545%2F1%2AYS7RfLrJxGz0kN618JuqXg.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%2Fcdn-images-1.medium.com%2Fmax%2F545%2F1%2AYS7RfLrJxGz0kN618JuqXg.png" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No worries, we need to set the &lt;strong&gt;correct Field type&lt;/strong&gt; and &lt;strong&gt;add Field options&lt;/strong&gt; (in my case, it’s email, phone, and messenger):&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2A6ZsvV9JTst1AV6jyTXobzA.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2A6ZsvV9JTst1AV6jyTXobzA.png" alt="add Field options to meta field" width="800" height="550"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In results, I have &lt;strong&gt;4 meta fields&lt;/strong&gt; created in my CPT:&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2A3vJksHpbQvIOSvz1KQYoZA.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2A3vJksHpbQvIOSvz1KQYoZA.png" alt="meta fields in custom post type" width="800" height="281"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💡 &lt;strong&gt;&lt;em&gt;Please note:&lt;/em&gt;&lt;/strong&gt; Labels &amp;amp; ID should be the same as in your WordPress form (in other words, the fields must match each other 😅).&lt;/p&gt;

&lt;p&gt;Now my CPT is ready to store responses:&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%2Fcdn-images-1.medium.com%2Fmax%2F627%2F1%2A7wVn4NUx5_FdwK19Ls1FgA.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%2Fcdn-images-1.medium.com%2Fmax%2F627%2F1%2A7wVn4NUx5_FdwK19Ls1FgA.png" alt="store wordpress form responses in custom post types" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  #2 Create WordPress form with JetFormBuilder
&lt;/h4&gt;

&lt;p&gt;After creating CPT for storing your form submissions, feel free to create your WordPress form. I’ll proceed with the Contact me form.&lt;/p&gt;

&lt;p&gt;💡&lt;a href="https://lanamiro.medium.com/how-to-build-free-wordpress-contact-us-form-with-jetformbuilder-step-by-step-bf72ab6f07e2" rel="noopener noreferrer"&gt;&lt;em&gt;The tutorial for creating the contact us form with JetFormBuilder is here.&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My form is ready to go:&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2ACt1DxZbPsso463htN9PlXA.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2ACt1DxZbPsso463htN9PlXA.png" alt="free wordpress contact form" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  #3 Set up post submit action
&lt;/h4&gt;

&lt;p&gt;The contact WordPress form is ready to set up post-submit action. Choose the Insert/Update Post and press the edit icon:&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%2Fcdn-images-1.medium.com%2Fmax%2F286%2F1%2ASR6nYF-O54vcV3HxaCGHqg.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%2Fcdn-images-1.medium.com%2Fmax%2F286%2F1%2ASR6nYF-O54vcV3HxaCGHqg.png" alt="Set up post submit action" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And the edit action window appears. We need to &lt;strong&gt;map our Form with Custom Post Type and Fields&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;So, I’ve set:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;my &lt;strong&gt;Post Type&lt;/strong&gt; , as &lt;strong&gt;Contact Us Responses&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Post status&lt;/strong&gt; as &lt;strong&gt;Pending Review&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Fields map should be the same as your Post Type meta field&lt;/strong&gt; (created before). For example, here are my meta fields created in Contact Us Responses CPT:&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AWf8HeSNAilXciiCXG_VXwA.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AWf8HeSNAilXciiCXG_VXwA.png" alt="meta fields created in Contact Us Responses CPT" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;P.S.&lt;/em&gt;&lt;/strong&gt; &lt;em&gt;I simply copied ID and passed in my&lt;/em&gt; &lt;strong&gt;&lt;em&gt;edit action window&lt;/em&gt;&lt;/strong&gt; &lt;em&gt;among&lt;/em&gt; &lt;strong&gt;&lt;em&gt;Post Meta&lt;/em&gt;&lt;/strong&gt; &lt;em&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Name as name&lt;/li&gt;
&lt;li&gt;Email as email&lt;/li&gt;
&lt;li&gt;Phone as phone&lt;/li&gt;
&lt;li&gt;Preferred method of communication as preferred-method-pf-communication&lt;/li&gt;
&lt;li&gt;Message as Post Content (it’s not a meta field, I want it to be shown in my post content section).&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AXTss3dt5ubHkmJwMnGbHIg.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AXTss3dt5ubHkmJwMnGbHIg.png" alt="wordpress form post meta" width="800" height="583"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And press &lt;strong&gt;Update button&lt;/strong&gt;. Now you can publish the form and add it to the page (with Gutenberg block, or via any other &lt;a href="https://crocoblock.com/blog/free-premium-wordpress-page-builders/" rel="noopener noreferrer"&gt;WordPress page builders plugins&lt;/a&gt;).&lt;/p&gt;

&lt;h4&gt;
  
  
  #4 Testing Time
&lt;/h4&gt;

&lt;p&gt;Now it’s my favorite time — Testing! I’ve submitted my WordPress contact form:&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2Ak5ESeFTa0vwK4PC8AY5T9Q.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2Ak5ESeFTa0vwK4PC8AY5T9Q.png" alt="test wordpress contact form" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And went to my CPT ( &lt;strong&gt;Contact Us Responses&lt;/strong&gt; ), where we could see new submissions:&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%2Fcdn-images-1.medium.com%2Fmax%2F892%2F1%2Ayx6JX-mwexlZk9mfV1Sktg.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%2Fcdn-images-1.medium.com%2Fmax%2F892%2F1%2Ayx6JX-mwexlZk9mfV1Sktg.png" alt="wordpress form submissions in cpt" width="800" height="490"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So, let’s open the post created automatically:&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2Ax_1EhjGeM1b0pmwqEcsyHw.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2Ax_1EhjGeM1b0pmwqEcsyHw.png" alt="form replies in custom post type" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see, the message goes immediately after the title, and contact details (like name, communication method, phone, email) show in settings.&lt;/p&gt;

&lt;p&gt;Now, &lt;em&gt;you can store all your contact form responses in custom post type using JetEngine &amp;amp; JetFormBuilder&lt;/em&gt;.😊&lt;/p&gt;

&lt;h3&gt;
  
  
  Creating CPT with free Pods plugin
&lt;/h3&gt;

&lt;p&gt;Another way to create CPT is using the &lt;a href="https://wordpress.org/plugins/pods/" rel="noopener noreferrer"&gt;free Pods plugin&lt;/a&gt;, here are steps to follow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Download and activate Pods plugin&lt;/li&gt;
&lt;li&gt;Create CPT and custom fields for storing form responses&lt;/li&gt;
&lt;li&gt;Create WordPress form&lt;/li&gt;
&lt;li&gt;Set Up post submit action&lt;/li&gt;
&lt;li&gt;Results&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  #1 Download and activate Pods plugin:
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AmVh1XpECkNap_dQXstj22g.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AmVh1XpECkNap_dQXstj22g.png" alt="Download and activate Pods plugin" width="800" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  #2 Create CPT and custom fields for storing form responses
&lt;/h4&gt;

&lt;p&gt;Go to &lt;strong&gt;Pods Admin -&amp;gt; Add New&lt;/strong&gt; , and let’s create another CPT, called &lt;strong&gt;“Form Submissions”&lt;/strong&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AWzg72PxMaVPyTbCDlwB3qQ.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AWzg72PxMaVPyTbCDlwB3qQ.png" alt="Create CPT and custom fields for storing form responses" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To add a new Pod, follow the steps:&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%2Fcdn-images-1.medium.com%2Fmax%2F939%2F1%2Af5Tah1H1EvHSGKXatbZgew.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%2Fcdn-images-1.medium.com%2Fmax%2F939%2F1%2Af5Tah1H1EvHSGKXatbZgew.png" alt="add a new Pod, follow the steps" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Singular Label: Form Submission&lt;/li&gt;
&lt;li&gt;Plural Label: Form Submissions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Press Next Step, where we can &lt;strong&gt;add new fields similarly to our form fields&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;💡This is important &lt;em&gt;to have fields the same as in your form.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Add Fields (similar to JetEngine Meta Fields). Your name, email, and phone are simple text field types:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;as the name is reserved for internal WordPress usage, I’ll go with the Your Name label&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2A9LpAEPKH_oipt9NO9Rvx1w.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2A9LpAEPKH_oipt9NO9Rvx1w.png" alt="Add Fields in pods cpt" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And Radio field will look like, where you input choices too:&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%2Fcdn-images-1.medium.com%2Fmax%2F948%2F1%2Aobu5YYXGo96YQH41LXjH6Q.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%2Fcdn-images-1.medium.com%2Fmax%2F948%2F1%2Aobu5YYXGo96YQH41LXjH6Q.png" alt="radio field in pods cpt" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In results, I have 4 form fields created in my CPT with Pods plugin:&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AQwv7SCbvQqDoA6Qczjt7ig.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AQwv7SCbvQqDoA6Qczjt7ig.png" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then, you’ll find Form Submissions CPT at the left side of the WordPress dashboard.&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%2Fcdn-images-1.medium.com%2Fmax%2F637%2F1%2AWs76s288QIG-2zug0-znBA.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%2Fcdn-images-1.medium.com%2Fmax%2F637%2F1%2AWs76s288QIG-2zug0-znBA.png" alt="Form Submissions CPT" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  #3 Create WordPress form
&lt;/h4&gt;

&lt;p&gt;I’ll create a similar WordPress contact form using &lt;a href="https://lanamiro.medium.com/how-to-build-free-wordpress-contact-us-form-with-jetformbuilder-step-by-step-bf72ab6f07e2" rel="noopener noreferrer"&gt;&lt;strong&gt;this tutorial&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AiN1kLZX2xT33_Yy7LBbPBQ.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AiN1kLZX2xT33_Yy7LBbPBQ.png" alt="Create WordPress form" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  #4 Set Up post submit action
&lt;/h4&gt;

&lt;p&gt;When the form is ready, we need to create and edit post submit action (will be the same as above):&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AILEfjuC8xs0EUbKPugCriQ.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AILEfjuC8xs0EUbKPugCriQ.png" alt="Set Up post submit action" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After setting up Insert/Update Post action, I’ve published my contact form:&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AQOtSljJ9KRcn77PViXx6dg.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AQOtSljJ9KRcn77PViXx6dg.png" alt="publish contact us form" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  #5 Results
&lt;/h4&gt;

&lt;p&gt;To finish, let’s test how it works with the Pods WordPress plugin. I’ve filled up my WP form:&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AUwuz-xgJvrhjLGC4HvBpaw.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AUwuz-xgJvrhjLGC4HvBpaw.png" alt="testing pods wordpress plugin" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And my submission immediately appears in Form Submission CPT created with Pods:&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%2Fcdn-images-1.medium.com%2Fmax%2F959%2F1%2AXJ0yxV9vuBCr79aW2Q-DXA.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%2Fcdn-images-1.medium.com%2Fmax%2F959%2F1%2AXJ0yxV9vuBCr79aW2Q-DXA.png" alt="my submission immediately appears in Form Submission CPT created with Pods" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And fields mapped well:&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2A4TMVJG4ATAYBUPg9xhU3Sw.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2A4TMVJG4ATAYBUPg9xhU3Sw.png" alt="form submission example" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Sum Up
&lt;/h3&gt;

&lt;p&gt;Now, you know how to &lt;strong&gt;store your form responses with custom post types&lt;/strong&gt;. To be honest, creating CPT with the JetEngine plugin was more fluent for me (maybe I just used to it), but if you need to stick with the free WordPress custom post types plugin, proceed with Pods or any &lt;a href="https://hackernoon.com/top-custom-post-types-plugins-for-wordpress" rel="noopener noreferrer"&gt;&lt;strong&gt;other CPT plugin&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Feel free to share any questions you may have in the comments below. 👇&lt;/p&gt;

</description>
      <category>cpt</category>
      <category>customposttypes</category>
      <category>wordpress</category>
      <category>wordpressform</category>
    </item>
    <item>
      <title>How to Build Free WordPress Contact Us Form with JetFormBuilder? (Step-by-step)</title>
      <dc:creator>Lana Miro</dc:creator>
      <pubDate>Tue, 18 Jan 2022 07:33:11 +0000</pubDate>
      <link>https://dev.to/lana_miro/how-to-build-free-wordpress-contact-us-form-with-jetformbuilder-step-by-step-5gg4</link>
      <guid>https://dev.to/lana_miro/how-to-build-free-wordpress-contact-us-form-with-jetformbuilder-step-by-step-5gg4</guid>
      <description>&lt;p&gt;To create a free WordPress contact form, you definitely can go with &lt;a href="https://wordpress.org/plugins/contact-form-7/" rel="noopener noreferrer"&gt;Contact Form 7&lt;/a&gt;, but I want more customization, so I’ll proceed with the &lt;a href="https://jetformbuilder.com/" rel="noopener noreferrer"&gt;JetFormBuilder plugin&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;💡Before creating the form, we need to &lt;a href="https://lanamiro.medium.com/how-to-display-wordpress-form-submission-with-jetformbuilder-ce7ec1fe1e7d" rel="noopener noreferrer"&gt;&lt;strong&gt;&lt;em&gt;set up a custom post type&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt; to store form responses. So, don’t hesitate to follow the tutorial to set everything up.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Table of Contents:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;#1 Download JetFormBuilder free form plugin&lt;/p&gt;

&lt;p&gt;#2 Create New WordPress Contact Us Form&lt;/p&gt;

&lt;p&gt;#3 Create the needed form fields&lt;/p&gt;

&lt;p&gt;#4 Configure post submit actions&lt;/p&gt;

&lt;p&gt;#5 Adding WordPress Contact Us form to the page&lt;/p&gt;

&lt;p&gt;#6 What’s next? Form styling&lt;/p&gt;

&lt;h3&gt;
  
  
  #1 Download JetFormBuilder Free Form Plugin
&lt;/h3&gt;

&lt;p&gt;Firstly, we need to download &amp;amp; activate JetFormBuilder free form plugin. You can download directly from &lt;a href="https://jetformbuilder.com/" rel="noopener noreferrer"&gt;jetformbuilder.com&lt;/a&gt;, &lt;a href="https://wordpress.org/plugins/jetformbuilder/" rel="noopener noreferrer"&gt;wordpress.org&lt;/a&gt;, or search for the plugin in your plugins dashboard.&lt;/p&gt;

&lt;p&gt;I’ve already downloaded and activated JetFormBuilder using the official website.&lt;/p&gt;

&lt;p&gt;And now we can start creating my Contact form.&lt;/p&gt;

&lt;h3&gt;
  
  
  #2 Create New WordPress Contact Us Form
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2A4GE0Y2N0b325Z32Cmp-GJQ.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2A4GE0Y2N0b325Z32Cmp-GJQ.png" alt="Create New WordPress Contact Us Form" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To start with, go to &lt;strong&gt;JetFormBuilder -&amp;gt; Add New&lt;/strong&gt; tab. Name your form as you wish:&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2ArLATVZ-cnWLy7suW1l818A.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2ArLATVZ-cnWLy7suW1l818A.png" alt="name wp contact form" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  #3 Create the Needed Form Fields
&lt;/h3&gt;

&lt;p&gt;To simplify the process, I’ll use the Contact us form pattern. For this, press “plus” icons, go to Patterns, and choose JetForm:&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%2Fcdn-images-1.medium.com%2Fmax%2F370%2F1%2A4WNV8fV4qm2obvUNQmqPkg.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%2Fcdn-images-1.medium.com%2Fmax%2F370%2F1%2A4WNV8fV4qm2obvUNQmqPkg.png" alt="choose wordpress form pattern" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then pick the needed form pattern (in my case, the Contact Us Form). After selecting the form pattern, it adds the form to your editing area:&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2Atd4wqDhUGHwSSoUeffdKzw.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2Atd4wqDhUGHwSSoUeffdKzw.png" alt="edit wordpress contact form" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now I need to delete unnecessary fields and duplicated Submit button (just select the block and press delete block). After this, I want to add one more option for the preferred method of communication (messenger).&lt;/p&gt;

&lt;p&gt;Choose the needed block, press &lt;strong&gt;Manage items&lt;/strong&gt; , add the item, and update:&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2A_HYRnVtFMMHOSPZX5ukmIw.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2A_HYRnVtFMMHOSPZX5ukmIw.png" alt="customize wordpress contact form" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I also want to edit the Submit button text, and I’m done with creating my form fields.&lt;/p&gt;

&lt;h3&gt;
  
  
  #4 Configure Post Submit Actions
&lt;/h3&gt;

&lt;p&gt;I want this contact form to send responses to &lt;strong&gt;my custom post type&lt;/strong&gt; , so I chose the Insert/Update post submit action:&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%2Fcdn-images-1.medium.com%2Fmax%2F286%2F1%2ASR6nYF-O54vcV3HxaCGHqg.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%2Fcdn-images-1.medium.com%2Fmax%2F286%2F1%2ASR6nYF-O54vcV3HxaCGHqg.png" alt="Configure post submit actions" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  #5 Adding WordPress Contact Us Form to the Page
&lt;/h3&gt;

&lt;p&gt;When the form is ready, press Publish button and go to the page where you want to add the form. In my case, it’s the Contact Me page.&lt;/p&gt;

&lt;p&gt;To add the form to the Gutenberg editor, just choose the JetForm block, and select your form:&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AQvZ2ZOpg9JEWvZMH01Uqvw.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AQvZ2ZOpg9JEWvZMH01Uqvw.png" alt="Adding WordPress Contact Us form to the page" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’m using Elementor, so I’ll add my form (created in JetFormBuilder) to Elementor with the JetForm widget:&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AbyTOEb4DKYP3D024gfMWyA.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AbyTOEb4DKYP3D024gfMWyA.png" alt="JetForm widget" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Drag and drop the JetForm widget to the page, and choose the Contact me form:&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AOPEIKqV7ih946l4rUi4XNA.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AOPEIKqV7ih946l4rUi4XNA.png" alt="choose contact form in jetform widget" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Update or publish the page, and your form is ready.&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2ALkmFbD6Jp06M8KAzO-O7bg.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2ALkmFbD6Jp06M8KAzO-O7bg.png" alt="publish the wp form to the page" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  #6 What’s Next? Form Styling
&lt;/h3&gt;

&lt;p&gt;Next, let’s have some fun and style our WordPress form via free &lt;a href="https://crocoblock.com/plugins/jetstylemanager/" rel="noopener noreferrer"&gt;JetStyleManager for Gutenberg&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F285%2F1%2AhgRnzFyVEBlWmbcpS6VrRg.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%2Fcdn-images-1.medium.com%2Fmax%2F285%2F1%2AhgRnzFyVEBlWmbcpS6VrRg.png" alt="style wordpress form in gutenberg" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;or with Elementor page builder (style tab):&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AVKBDeyFuuWkq9GA7vgGs7w.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AVKBDeyFuuWkq9GA7vgGs7w.png" alt="add jetform widget to elementor page builder" width="800" height="489"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’ve made some general styling (change button style, checkboxes, and messages):&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AoZ7sLGh0kMtWeQjJhdPyRA.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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AoZ7sLGh0kMtWeQjJhdPyRA.png" alt="wordpress contact form styling" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;That’s it, our form is ready. I have some fun creating the WordPress contact form and hope this tutorial will help you make yours.&lt;/p&gt;

&lt;p&gt;Don’t hesitate to leave comments below.👇&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>contactform</category>
      <category>wordpressform</category>
    </item>
  </channel>
</rss>
