{"id":26871,"date":"2022-11-04T21:15:59","date_gmt":"2022-11-04T21:15:59","guid":{"rendered":"https:\/\/crocoblock.com\/knowledge-base\/?post_type=article&#038;p=26871"},"modified":"2023-07-28T11:06:11","modified_gmt":"2023-07-28T11:06:11","slug":"jetengine-how-to-unlock-content-based-on-progress","status":"publish","type":"article","link":"https:\/\/crocoblock.com\/knowledge-base\/jetengine\/jetengine-how-to-unlock-content-based-on-progress\/","title":{"rendered":"How to Unlock Content Based on Progress"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\" id=\"title1\">Unlocking Content Based on Progress in Elementor<\/h2>\n\n\n\n<p>With the <strong>JetEngine <\/strong>plugin, you\u2019re able to create a WordPress <a href=\"https:\/\/crocoblock.com\/plugins\/jetengine\/membership\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>membership<\/strong><\/a> site. From this tutorial, you will know how to unlock the posts with the lessons to the users according to their progress. You will learn how to attach <a href=\"https:\/\/crocoblock.com\/knowledge-base\/articles\/jetengine-dynamic-visibility-module-options-overview\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Dynamic Visibility<\/strong><\/a> to the form so that users can open the next lesson according to the answers in the <strong>JetEngine<\/strong> or <strong>JetFormBuilder<\/strong> form.<\/p>\n\n\n\n<p>For example, we\u2019ve created a Page that shows all lessons on our site. To each image with the closed lock, we\u2019ve attached a pop-up with a form and dynamic visibility connected to the options in the form.<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/page-with-locked-content-and-form-2.png\" alt=\"page with locked content and form\">\n\n\n\n<p>When users select the \u201cYes\u201d option in the form, they unlock the next lesson. With the <a href=\"https:\/\/crocoblock.com\/knowledge-base\/articles\/jetengine-conditional-visibility-rules-for-form-fields-overview\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Conditional Visibility<\/strong><\/a> for the form field, users cannot see the following question unless they don\u2019t correctly answer the previous one.<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/page-with-locked-and-unlocked-content-2.png\" alt=\"page with locked and unlocked content\">\n\n\n\n<h3 class=\"wp-block-heading\" id=\"create-posts-or-a-new-cpt-and-posts\">Create posts, or a new CPT and posts<\/h3>\n\n\n\n<p>First, you need to create posts with the studying content or the dedicated <a href=\"https:\/\/crocoblock.com\/knowledge-base\/articles\/how-to-create-a-custom-post-type-based-on-jetengine-plugin\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Custom Post Type<\/strong><\/a> (CPT) for the lesson posts.<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/posts-with-lessons-2.png\" alt=\"post type for lessons\">\n\n\n\n<h3 class=\"wp-block-heading\" id=\"create-a-meta-field-in-the-meta-box\">Create a meta field in the meta box<\/h3>\n\n\n\n<p>To make the form and the <a href=\"https:\/\/crocoblock.com\/knowledge-base\/articles\/jetengine-dynamic-visibility-module-options-overview\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Dynamic Visibility<\/strong><\/a> work jointly, you need to create a meta field.<\/p>\n\n\n\n<p>Since we want to display the form on the page, we are required to create the <a href=\"https:\/\/crocoblock.com\/knowledge-base\/articles\/how-to-group-the-custom-meta-fields-for-the-certain-post-types-into-meta-boxes\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>meta box<\/strong><\/a><strong> <\/strong>for the <strong>pages<\/strong>.<\/p>\n\n\n\n<p>Proceed to <strong><em>JetEngine &gt; Meta Boxes <\/em><\/strong>and push the <strong>\u201cAdd New\u201d <\/strong>button.<\/p>\n\n\n\n<p>Enter the <strong>Title<\/strong> and select the \u201cPost\u201d option in the <strong>Meta Box for <\/strong>field.<\/p>\n\n\n\n<p>In the <strong>Visibility Conditions <\/strong>tab, choose the \u201cPages\u201d post type in the <strong>Enable For Post Types <\/strong>field.<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/post-type-for-lessons-2.png\" alt=\"meta box for pages\">\n\n\n\n<p>Tick the <strong>\u201cNew Meta Field\u201d <\/strong>button on the bottom of the page. Since we want to attach the <strong>Dynamic Visibility<\/strong> condition to the user\u2019s choice \u201cYes\u201d or \u201cNo\u201d in the form, we will create a <strong>Radio<\/strong> meta field with such options. Feel free to create the same field or other ones according to your needs.<\/p>\n\n\n\n<p>You can create the <strong>Radio<\/strong> options manually by hitting the <strong>\u201cNew Field Option\u201d<\/strong> button or fill it with the <strong><a href=\"https:\/\/crocoblock.com\/knowledge-base\/articles\/jetengine-glossaries-functionality-overview\/\" target=\"_blank\" rel=\"noreferrer noopener\">Glossary<\/a> <\/strong>feature by enabling the <strong>Get options from the glossary <\/strong>toggle.<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/meta-field-in-the-meta-box-1-377x1024-1.png\" alt=\"meta field in the meta box\">\n\n\n\n<p>After finishing, press the <strong>\u201cUpdate Meta Box\u201d <\/strong>button.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"title5\">How to Create a JetEngine Form<\/h2>\n\n\n\n<p>Move to <strong><em>JetEngine &gt; Forms<\/em><\/strong> in the WordPress Dashboard and click on the <strong>\u201cAdd New\u201d <\/strong>button. Give the new form a title.<\/p>\n\n\n\n<p>Leave the <strong>Hidden <\/strong>field settings as they are by default, hit the <strong>\u201cAdd Field\u201d <\/strong>button, and place the new field between the <strong>Hidden <\/strong>field and the <strong>Submit Button<\/strong>.<\/p>\n\n\n\n<p>In the new <strong>Field Settings<\/strong> window, we\u2019ve selected the same <strong>Type<\/strong> as our just created meta field \u2013 \u201cRadio,\u201d entered the field\u2019s <strong>Name<\/strong> and <strong>Label<\/strong>. The <strong>Name <\/strong>will be used in the form settings. The <strong>Label <\/strong>will be shown to users in the form on the front end so that you can enter the question here.<\/p>\n\n\n<div class=\"note-banner d-flex border-bold border-jetsmartfilters rounded overflow-hidden p-20\"><div class=\"mr-12\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M1 21H23L12 2L1 21ZM13 18H11V16H13V18ZM13 14H11V10H13V14Z\" fill=\"#FA5450\"\/><\/svg><\/div><div class=\"d-flex flex-column\"><div class=\"text-900 mb-12\">Warning<\/div><p class=\"m-0\">Be aware that all field names inside one form must be unique, and field names must contain a value with only lowercase Latin letters, no spaces. If you want to split words, this can be done by using the \u201c-\u201d and \u201c_\u201d characters.<\/p><\/div><\/div>\n\n\n\n<p>In the <strong>Fill Options From <\/strong>field, pick the \u201cManual Input\u201d option and add the same options as in your meta field (\u201cYes\u201d and \u201cNo\u201d in our case). If you\u2019ve used the <strong>Glossary <\/strong>for the meta field, you can use it again here by selecting the \u201cGlossary\u201d option in the <strong>Fill Options From <\/strong>field.<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/radio-field-in-the-form-1-729x1024-1.png\" alt=\"radio field in the form\">\n\n\n\n<p>Then, push the <strong>\u201cApply Changes\u201d<\/strong> button.<\/p>\n\n\n\n<p>Tick the \u201cPre-set form field values\u201d checkbox. Choose the \u201cPost\u201d option as a <strong>Source<\/strong> and the \u201cCurrent post\u201d option in the <strong>Get post ID from<\/strong> field.<\/p>\n\n\n\n<p>In the <strong>Fields Map<\/strong>, select the \u201cPost ID\u201d option near the <strong>Hidden<\/strong> field name (<strong>post_id<\/strong> in our case). Near the <strong>Radio<\/strong> or another field for the Dynamic Visibility, pick the \u201cPost Meta\u201d option, and in the nearby field, enter the name of the recently created meta field.<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/pre-set-form-field-values-2.png\" alt=\"pre-set form field values\">\n\n\n\n<p>Go to the <strong>Post-submit Actions \/ Notifications Settings<\/strong> tab and click on the pencil-shaped icon to edit the action.<\/p>\n\n\n\n<p>Pick the \u201cInsert\/Update Post\u201d <strong>Type<\/strong>, select the needed <strong>Post Type <\/strong>(\u201cPages\u201d in our case), and pick the \u201cPublished\u201d <strong>Post Status<\/strong>.<\/p>\n\n\n\n<p>In the <strong>Fields Map<\/strong>, select the \u201cPost ID (will update post)\u201d option near the <strong>Hidden<\/strong> field name (<strong>post_id<\/strong> in our case). Near the <strong>Radio<\/strong> or another field for Dynamic Visibility, pick the \u201cPost Meta\u201d option again, and in the nearby field, enter the name of the recently created meta field.<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/insert-update-post-post-submit-action-2.png\" alt=\"insert update post post-submit action\">\n\n\n\n<p>After finishing, push the <strong>\u201cApply Changes\u201d<\/strong> button.<\/p>\n\n\n\n<p>You can also add several fields with the questions into the form to check your learners&#8217; knowledge and apply <strong>Conditional Rules<\/strong> to them.<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/radio-field-with-the-question-2.png\" alt=\"radio field with the question\">\n\n\n\n<p>We\u2019ve created three question Radio fields for the form (including the field with the \u201cYes\u201d and \u201cNo\u201d options) and applied the <strong>Conditional Rules<\/strong> to the last two of them.<\/p>\n\n\n\n<p>Click on the <strong>\u201cSet up conditional rules\u201d<\/strong> button and then press the <strong>\u201c+ New Rule\u201d <\/strong>button.<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/set-up-conditional-rules-2.png\" alt=\"conditional rules setup\">\n\n\n\n<p>In the <strong>Edit conditional logic for <\/strong>window, select the \u201cShow this field if\u2026\u201d <strong>Type<\/strong>, choose the name of the previous <strong>Field <\/strong>with the question, pick the \u201cEqual\u201d <strong>Operator<\/strong>, and enter the <strong>Value <\/strong>of the right option in the <strong>Value to compare <\/strong>field.&nbsp;<\/p>\n\n\n\n<p>For instance, our previous field contains the <strong>Label <\/strong>with the question \u201cWhat plugin is required for the CPT creation?\u201d and has two <strong>Options<\/strong> entered manually with the \u201cjetengine\u201d and \u201cjetelements\u201d <strong>Values<\/strong>. The correct answer is \u201cJetEngine,\u201d<strong> <\/strong>so we\u2019ve entered the \u201cjetengine\u201d<strong> <\/strong>in the <strong>Value to compare <\/strong>field. Thus, the user will only see the next question if they pick the correct answer.<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/edit-conditional-logic-2.png\" alt=\"edit conditional logic\">\n\n\n\n<p>Press the <strong>\u201cApply Changes\u201d<\/strong> button and set the <strong>Conditional Logic<\/strong> to other fields if you need it.<\/p>\n\n\n\n<p>We don\u2019t want to save the answers results of the newly created Radio field, so we\u2019ve left the <strong>Fields Map <\/strong>options in the <strong>Pre-set<\/strong> and <strong>Post-submit Action <\/strong>unchanged.<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/form-pre-set-and-post-submit-action-2.png\" alt=\"form pre-set and post-submit action\">\n\n\n\n<p>When you are done working with the form, hit the <strong>\u201cPublish\u201d <\/strong>or <strong>\u201cUpdate\u201d <\/strong>button.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"title6\">How to Create a JetFormBuilder Form<\/h2>\n\n\n\n<p>If you prefer to create the form with the <a href=\"https:\/\/jetformbuilder.com\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>JetFormBuilder<\/strong><\/a><strong> <\/strong>plugin, that\u2019s how to do this.<\/p>\n\n\n\n<p>Navigate to <strong><em>JetFormBuilder &gt; Add New <\/em><\/strong>in the WordPress Dashboard. Give the new form a title.<\/p>\n\n\n\n<p>Leave the <strong>Hidden Field<\/strong> settings as they are by default and delete the <strong>Text Field<\/strong> if you don\u2019t need it.<\/p>\n\n\n\n<p>Click on the <strong>Toggle block inserter<\/strong> button and place the <a href=\"https:\/\/jetformbuilder.com\/features\/radio-field\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Radio<\/strong> <strong>Field<\/strong><\/a> between the <strong>Hidden Field<\/strong> and the <strong>Action Button<\/strong>.<\/p>\n\n\n\n<p>In the <strong>Block General <\/strong>settings tab of the <strong>Radio Field, <\/strong>enter the <strong>Field Label<\/strong> and the <strong>Form field name<\/strong>. The <strong>Field Label <\/strong>will be shown to users in the form on the front end so that you can enter the question here, and the <strong>Form field name <\/strong>will be used in the form settings.<\/p>\n\n\n<div class=\"note-banner d-flex border-bold border-jetsmartfilters rounded overflow-hidden p-20\"><div class=\"mr-12\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M1 21H23L12 2L1 21ZM13 18H11V16H13V18ZM13 14H11V10H13V14Z\" fill=\"#FA5450\"\/><\/svg><\/div><div class=\"d-flex flex-column\"><div class=\"text-900 mb-12\">Warning<\/div><p class=\"m-0\">Be aware that all field names inside one form must be unique, and field names must contain a value with only lowercase Latin letters, no spaces. If you want to split words, this can be done by using the \u201c-\u201d and \u201c_\u201d characters.<\/p><\/div><\/div>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/jetformbuilder-radio-field-2.png\" alt=\"jetformbuilder radio field\">\n\n\n\n<p>Pick the \u201cManual Input\u201d option in the <strong>Fill Options From<\/strong> field and then hit the <strong>\u201cManage Items\u201d <\/strong>button.<\/p>\n\n\n\n<p>In the new appeared window, add the same options as in your meta field (\u201cYes\u201d and \u201cNo\u201d in our case). If you\u2019ve used the <strong>Glossary <\/strong>for the meta field, you can use it again here by selecting the \u201cGlossary\u201d option in the <strong>Fill Options From <\/strong>field.<\/p>\n\n\n\n<p>Then, push the <strong>\u201cUpdate\u201d<\/strong> button.<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/edit-manual-options-window-2.png\" alt=\"edit manual options\">\n\n\n\n<p>Proceed to the <strong>JetForm<\/strong> settings tab and go to the <strong>Preset Settings <\/strong>section. <strong>Enable <\/strong>the toggle, select the \u201cPost\u201d as a <strong>Source<\/strong>, and pick the \u201cCurrent post\u201d option in the <strong>Get post ID from<\/strong> field.<\/p>\n\n\n\n<p>Choose the \u201cPost ID\u201d option near the <strong>Hidden<\/strong> field name (<strong>post_id<\/strong> in our case). Near the <strong>Radio<\/strong> or another field for Dynamic Visibility, pick the \u201cPost Meta\u201d option, and in the nearby field, enter the name of the recently created meta field.<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/preset-settings-in-the-jetformbuilder-form-2.png\" alt=\"preset settings in the jetformbuilder form\">\n\n\n\n<p>Move to the <strong>Post Submit Actions <\/strong>tab, select the \u201cInsert\/Update Post\u201d type, and click on the pencil-shaped icon to edit the action.<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/post-submit-action-in-the-jetformbuilder-form-1.png\" alt=\"post submit action in the jetformbuilder form\">\n\n\n\n<p>In the appeared window, select the needed <strong>Post Type <\/strong>(\u201cPages\u201d in our case), and pick the \u201cPublished\u201d <strong>Post Status<\/strong>.<\/p>\n\n\n\n<p>In the <strong>Fields Map<\/strong>, select the \u201cPost ID (will update post)\u201d option near the <strong>Hidden<\/strong> field name (<strong>post_id<\/strong> in our case). Near the <strong>Radio<\/strong> or another field for Dynamic Visibility, pick the \u201cPost Meta\u201d option again, and enter the name of the recently created meta field in the field below.<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/edit-jetformbuilder-action-2.png\" alt=\"edit jetformbuilder action\">\n\n\n\n<p>After finishing, push the <strong>\u201cUpdate\u201d<\/strong> button.<\/p>\n\n\n\n<p>You can also add several fields with questions into the form to check your learners\u2019 knowledge and apply <strong>Conditional Rules<\/strong> to them.<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/radio-field-with-the-question-jetformbuilder-2.png\" alt=\"radio field with the question in a jetformbuilder form\">\n\n\n\n<p>We\u2019ve created three question Radio fields for the form (including the field with the \u201cYes\u201d and \u201cNo\u201d options) and <a href=\"https:\/\/jetformbuilder.com\/features\/wordpress-blocks-transformation\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>transformed<\/strong><\/a> the last two fields into the <strong><a href=\"https:\/\/jetformbuilder.com\/features\/conditional-visibility\/\" target=\"_blank\" rel=\"noreferrer noopener\">Conditional <\/a><\/strong><a href=\"https:\/\/jetformbuilder.com\/features\/conditional-visibility\/\"><strong>Blocks<\/strong><\/a>.<\/p>\n\n\n\n<p>Click on the field block and its icon on the appeared panel. Select the <a href=\"https:\/\/jetformbuilder.com\/features\/conditional-visibility\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Conditional Block<\/strong><\/a> from the transformation list.<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/field-transformation-into-the-conditional-block-2.png\" alt=\"field transformation into the conditional block\">\n\n\n\n<p>To open the <strong>Conditional Block<\/strong> settings window, press the button with the crossed arrows icon placed on the top tool panel to the left of the <strong>\u201cOptions\u201d<\/strong> button.<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/how-to-open-the-conditional-block-settings-1.png\" alt=\"how to open the conditional block settings\">\n\n\n\n<p>In the <strong>Conditional Logic <\/strong>window, select the \u201cShow this field if\u2026\u201d <strong>Type<\/strong>,<strong> <\/strong>choose the name of the previous <strong>Field <\/strong>with the question, pick the \u201cEqual\u201d <strong>Operator<\/strong>, and in the <strong>Value to compare <\/strong>field enter the <strong>Value <\/strong>of the correct option.<\/p>\n\n\n\n<p>For instance, our previous field contains the <strong>Label <\/strong>with the question \u201cWhat plugin is required for the CPT creation?\u201d and has two <strong>Options<\/strong> entered manually with the \u201cjetengine\u201d and \u201cjetelements\u201d <strong>Values<\/strong>. The correct answer is \u201cJetEngine,\u201d<strong> <\/strong>so we\u2019ve entered \u201cjetengine\u201d<strong> <\/strong>in the <strong>Value to compare <\/strong>field. Thus, the user will only see the next question if they pick the correct answer.<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/conditional-logic-jetformbuilder-2.png\" alt=\"conditional logic jetformbuilder\">\n\n\n\n<p>Press the <strong>\u201cUpdate\u201d<\/strong> button in the window and set the <strong>Conditional Logic<\/strong> to other fields if you need it.<\/p>\n\n\n\n<p>We don\u2019t want to save the answers results of the newly created Radio field, so we\u2019ve left the settings in the <strong>Pre-set <\/strong>and <strong>Post-submit Action <\/strong>unchanged.<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/post-submit-action-in-the-jetformbuilder-form-with-new-fields-2.png\" alt=\"post-submit action in the jetformbuilder form with new fields\">\n\n\n\n<p>When you are done working with the form, hit the <strong>\u201cPublish\u201d <\/strong>or <strong>\u201cUpdate\u201d <\/strong>button.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"create-a-popup\">Create a pop-up<\/h3>\n\n\n\n<p>To create a pop-up, you need the installed <a href=\"https:\/\/crocoblock.com\/plugins\/jetpopup\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>JetPopup<\/strong><\/a> plugin. If you don\u2019t want to set the pop-up, you can also place the form on the page instead of putting it in the pop-up, so simply skip this step.<\/p>\n\n\n\n<p>Navigate to <strong><em>JetPopup &gt; Create New Popup <\/em><\/strong>in the WordPress Dashboard. You can also proceed to the <strong>JetPopup Presets Library <\/strong>and install any pop-up template from there and redesign it, but we will create a pop-up from scratch.<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/popup-creating-2.png\" alt=\"pop-up creation window\">\n\n\n\n<p>Give the pop-up a title and hit the <strong>\u201cPublish\u201d <\/strong>and then <strong>\u201cEdit with Elementor\u201d <\/strong>buttons.<\/p>\n\n\n\n<p>Drag-n-drop the <strong>Form <\/strong>widget (for JetEngine and JetFormBuilder<strong> <\/strong>forms) or the <strong>JetForm <\/strong>widget (for the JetFormBuilder forms) into the pop-up.<\/p>\n\n\n\n<p>In the <strong>Form <\/strong>widget\u2019s <strong>Content <\/strong>settings, choose the <strong>Provider <\/strong>plugin which you used to create a form and <strong>Select <\/strong>the <strong>form<\/strong>\u2019s name.<\/p>\n\n\n<div class=\"note-banner d-flex border-bold border-jetsmartfilters rounded overflow-hidden p-20\"><div class=\"mr-12\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M1 21H23L12 2L1 21ZM13 18H11V16H13V18ZM13 14H11V10H13V14Z\" fill=\"#FA5450\"\/><\/svg><\/div><div class=\"d-flex flex-column\"><div class=\"text-900 mb-12\">Warning<\/div><p class=\"m-0\">To make the <strong>Dynamic Visibility<\/strong> work with the form, select the \u201cReload\u201d <strong>Submit type<\/strong> to trigger dynamic visibility after page rendering.<\/p><\/div><\/div>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/form-in-the-popup-2.png\" alt=\"form in the popup\">\n\n\n\n<p>After finishing, click on the <strong>\u201cUpdate\u201d <\/strong>button.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"create-a-page-with-content\">Create a page with content<\/h3>\n\n\n\n<p>Move to <strong><em>Pages &gt; Add New<\/em><\/strong> in the WordPress Dashboard. Give the page a title and press the <strong>\u201cEdit with Elementor\u201d<\/strong> button.<\/p>\n\n\n\n<p>Since there need to be different forms and visibility conditions applied to each post, it\u2019s not possible to use the Listing Grid on the page.<\/p>\n\n\n\n<p>At first, we placed the <strong>Title <\/strong>and <strong>Video <\/strong>widgets manually on the page without applying dynamic visibility to them to provide the first lesson materials to any learners.<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/first-lesson-on-the-page-2.png\" alt=\"the first lesson on the page\">\n\n\n\n<p>For every next lesson, we\u2019ve added the <strong>Title<\/strong>, the <strong>Image <\/strong>with the<strong> <\/strong>closed lock, the <strong>Video<\/strong>,<strong> <\/strong>and the <strong>Button <\/strong>widgets.<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/following-lessons-on-the-page-2.png\" alt=\"following lessons on the page\">\n\n\n\n<p>Click to edit the <strong>Image <\/strong>widget with the closed lock and proceed to the <strong>Advanced <\/strong>section.<\/p>\n\n\n\n<p>Open the <strong>JetPopup<\/strong> tab, select the needed pop-up in the <strong>Attached Popup <\/strong>field, and leave the \u201cClick on Widget\u201d <strong>Trigger Type<\/strong>.<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/attached-popup-2.png\" alt=\"attached popup\">\n\n\n\n<p>Open the <strong>Dynamic Visibility <\/strong>tab and <strong>Enable <\/strong>the toggle.<\/p>\n\n\n\n<p>The lock must disappear when the user selects the \u201cYes\u201d answer to the question \u201cWould you like to move on to Lesson 2?\u201d in the form. So choose the \u201cHide element if condition met\u201d <strong>Visibility condition type<\/strong> and the \u201cEqual\u201d <strong>Condition<\/strong>.<\/p>\n\n\n\n<p>Hit the <strong>\u201cDynamic Tag\u201d<\/strong> button near the <strong>Field <\/strong>and select the \u201cCustom Field\u201d option from the list.<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/dynamic-visibility-condition-for-the-closed-lock-image-1.png\" alt=\"dynamic visibility condition for the closed lock image\">\n\n\n\n<p>In the dynamic tag <strong>Settings<\/strong>, Pick the <strong>Field<\/strong> you\u2019ve created in the <strong>Meta Box <\/strong>for the <strong>Pages.<\/strong><\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/custom-field-dynamic-tag-1.png\" alt=\"custom field dynamic tag\">\n\n\n\n<p>In the <strong>Value <\/strong>field, enter the value &#8220;yes&#8221; of the Radio meta field\u2019s \u201cYes\u201d option.<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/dynamic-visibility-value-1.png\" alt=\"dynamic visibility value\">\n\n\n\n<p>Click to edit the widget that will appear when the user chooses the \u201cYes\u201d option in the form. It could be the featured image of the post, an open lock image, or a video (as in our case).<\/p>\n\n\n\n<p>The settings are similar, but you need to select the \u201cShow element if condition met\u201d <strong>Visibility condition type<\/strong>.<\/p>\n\n\n\n<p>You can also attach the same popup to this widget, so users can change their answers and unlock the lesson by selecting the \u201cNo\u201d option in the form, but that\u2019s optional.<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/show-element-if-condition-met-1.png\" alt=\"show element if condition met\">\n\n\n\n<h3 class=\"wp-block-heading\" id=\"set-redirection-on-the-post\">Set redirection on the post<\/h3>\n\n\n\n<p>If you need users to switch to the post with the lesson after they open the video or image, you can set it in the following ways.<\/p>\n\n\n\n<ul>\n<li>Use the <strong>Button<\/strong> widget.&nbsp;<\/li>\n<\/ul>\n\n\n\n<p>You can drag-n-drop the JetElements <a href=\"https:\/\/crocoblock.com\/widgets\/button\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Button<\/strong><\/a><strong> <\/strong>widget to the page.<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/jetelements-button-2.png\" alt=\"jetelements button\">\n\n\n\n<p>If you don\u2019t have JetElements, the default WordPress Button widget will do.<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/default-wordpress-button-2.png\" alt=\"default wordpress button\">\n\n\n\n<p>In the <strong>Button Link <\/strong>or <strong>Link <\/strong>field, enter the link of the lesson post so that users can click on the button and proceed to the lesson.<\/p>\n\n\n\n<ul>\n<li>Use the<strong> Redirect to Page <\/strong>post-submit action in the form.<\/li>\n<\/ul>\n\n\n\n<p>If you want users to go to the post with the lesson immediately after submitting the form, you can add the dedicated action.<\/p>\n\n\n\n<p>Proceed to the last created form for the dynamic visibility, click to edit it, and hit the <strong>\u201cAdd Notification\u201d <\/strong>button in the <strong>Post-submit Actions \/ Notification Settings<\/strong> block.<\/p>\n\n\n\n<p>Select the \u201cRedirect to Page\u201d <strong>Type<\/strong>, \u201cCustom URL\u201d in the <strong>Redirect to<\/strong> field, and enter the link in the <strong>Redirect URL <\/strong>field.<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/redirect-to-page-post-submit-action-1.png\" alt=\"redirect to page post-submit action\">\n\n\n\n<p>After finishing, press the <strong>\u201cApply Changes\u201d<\/strong> and <strong>\u201cUpdate\u201d<\/strong> buttons.<\/p>\n\n\n\n<p>If you create the <strong>JetFormBuilder <\/strong>form, click on the <strong>\u201c+ New Action\u201d <\/strong>button, select the \u201cRedirect to Page\u201d type, and click on the pencil-shaped icon to edit the action.<\/p>\n\n\n\n<p>Select the \u201cCustom URL\u201d in the <strong>Redirect to<\/strong> field, and enter the link in the <strong>Redirect URL <\/strong>field.<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/redirect-to-page-post-submit-action-jetformbuilder-2.png\" alt=\"redirect to page post-submit action jetformbuilder\">\n\n\n\n<p>When you\u2019re done, press \u201c<strong>Update\u201d <\/strong>to refresh the post-submit action and update the form.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"title10\">Unlocking Content Based on Progress in Gutenberg<\/h2>\n\n\n\n<p><em>JetEngine<\/em> plugin got updated, and now it allows <a href=\"https:\/\/crocoblock.com\/knowledge-base\/articles\/jetengine-dynamic-visibility-module-options-overview\/#title12\" target=\"_blank\" rel=\"noreferrer noopener\">applying <strong>Dynamic Visibility<\/strong> to the blocks<\/a> of the WordPress default editor.<br><br>Before setting the Dynamic Visibility conditions in Gutenberg, make sure you followed the first steps on creating a CPT, posts, and meta field in the meta box from this tutorial.<br><br>Proceed to the page built in the WordPress default editor.<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/gutenberg-page-x2.png\" alt=\"gutenberg page\">\n\n\n\n<p>There will be a short form next to the video built with the <em>JetFormBuilder <\/em>plugin, as described previously in step 3. The needed content will be unlocked after hitting the \u201c<strong>Proceed<\/strong>\u201d button.<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/form-for-lesson.png\" alt=\"jetformbuilder form\">\n\n\n\n<p>Decide what kind of content will be unlocked and add the necessary block. It can be a text, a video, or a whole section.<br><br>In this case, it will be a button with the link to the next video tutorial. Select the block and click on the eye-shaped icon on the toolbar on top of the block.<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/selected-block-x2.png\" alt=\"selected block in gutenberg\">\n\n\n\n<p>Once you click on it, you will see a pop-up window with the <strong>Enable <\/strong>toggle.<br><br>Turn it on, but first, make sure that the <strong>Visibility condition type<\/strong> is set to \u201cShow element if condition met.\u201d<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/enable-dynamic-visibility-1.png\" alt=\"enabling dynamic visibility\">\n\n\n\n<p>Then hit the \u201c<strong>Add new item<\/strong>\u201d button and choose \u201cEqual\u201d<strong> <\/strong>in the <strong>Condition <\/strong>drop-down list.<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/equal-as-condition.png\" alt=\"condition for dynamic visibility\">\n\n\n\n<p>Proceed to the <strong>Field<\/strong> and hit the <a href=\"https:\/\/crocoblock.com\/knowledge-base\/articles\/jetengine-using-the-pre-designed-section-templates-to-display-dynamic-content\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Dynamic Tags<\/strong><\/a> button. Choose \u201cCustom data\u201d as a <strong>Source<\/strong>.<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/data-source-custom-data-x2.png\" alt=\"data source for the field\">\n\n\n\n<p>In the <strong>Select data to show<\/strong> dropdown, choose the \u201cJetEngine meta field\u201d option, and below in the <strong>Field<\/strong>,<strong> <\/strong>select the meta field of the meta box you created before.<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/data-source-field-settings-x2.png\" alt=\"meta field of the condition\">\n\n\n\n<p>Make sure you set the \u201cField value\u201d option under the <strong>Return<\/strong>. Don\u2019t forget to apply the settings.<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/field-value.png\" alt=\"return field value\">\n\n\n\n<p>Proceed to the <strong>Value <\/strong>field and enter \u201c<em>yes<\/em>.\u201d<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/yes-value.png\" alt=\"value to compare\">\n\n\n\n<p>In the <strong>Button <\/strong>block, enter the link of the lesson post so that users can click on the button and proceed to the lesson.<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/link-to-the-next-post.png\" alt=\"link to the next post\">\n\n\n\n<p>Moreover, you can add more elements, apply the same dynamic conditions, or set different ones depending on your needs.<br><br>In our case, we also added an image with the thumbnail of the next lesson with a lock on it. It will also show up along with the button.<\/p>\n\n\n\n<p>When you\u2019re done, update the page and proceed to the front end. The image and the second button are hidden.<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/more-elements-with-visibility.png\" alt=\"dynamic visibility applied to the image\">\n\n\n\n<p>Once a user selects the \u201cYes\u201d option and hits the \u201c<strong>Proceed<\/strong>\u201d button, the hidden elements will become visible.<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/lesson-page-and-button-x2.png\" alt=\"unlocked elements with dynamic visibility\">\n\n\n\n<p>These are steps for the access settings to the second lesson. To access the following lessons, you need to repeat the steps for each of them. For example, to set the availability to the third lesson, you need to create a new meta field in the meta box for pages, form with further questions, pop-up, and attach dynamic visibility to the next image or video and the form options on the page.<\/p>\n\n\n\n<p>According to these steps, you can secure dynamic visibility to each lesson on the page.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This tutorial describes how to set the JetEngine Dynamic Visibility Module in the Elementor editor so that users can unlock the content based on progress, answering questions in the JetEngine or JetFormBuilder form.<\/p>\n","protected":false},"author":1,"featured_media":0,"template":"","format":"standard","builder-category":[],"article-category":[406],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How to Unlock Content Based on Progress \u2014 JetEngine | Crocoblock<\/title>\n<meta name=\"description\" content=\"Discover how to set the JetEngine Dynamic Visibility Module in the Elementor editor so that users can unlock the content based on progress, completing a step-by-step JetEngine or JetFormBuilder form.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/crocoblock.com\/knowledge-base\/jetengine\/jetengine-how-to-unlock-content-based-on-progress\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Unlock Content Based on Progress \u2014 JetEngine | Crocoblock\" \/>\n<meta property=\"og:description\" content=\"Discover how to set the JetEngine Dynamic Visibility Module in the Elementor editor so that users can unlock the content based on progress, completing a step-by-step JetEngine or JetFormBuilder form.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/crocoblock.com\/knowledge-base\/jetengine\/jetengine-how-to-unlock-content-based-on-progress\/\" \/>\n<meta property=\"og:site_name\" content=\"Help Center\" \/>\n<meta property=\"article:modified_time\" content=\"2023-07-28T11:06:11+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/page-with-locked-content-and-form-2.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"22 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/crocoblock.com\/knowledge-base\/jetengine\/jetengine-how-to-unlock-content-based-on-progress\/\",\"url\":\"https:\/\/crocoblock.com\/knowledge-base\/jetengine\/jetengine-how-to-unlock-content-based-on-progress\/\",\"name\":\"How to Unlock Content Based on Progress \u2014 JetEngine | Crocoblock\",\"isPartOf\":{\"@id\":\"https:\/\/crocoblock.com\/knowledge-base\/#website\"},\"datePublished\":\"2022-11-04T21:15:59+00:00\",\"dateModified\":\"2023-07-28T11:06:11+00:00\",\"description\":\"Discover how to set the JetEngine Dynamic Visibility Module in the Elementor editor so that users can unlock the content based on progress, completing a step-by-step JetEngine or JetFormBuilder form.\",\"breadcrumb\":{\"@id\":\"https:\/\/crocoblock.com\/knowledge-base\/jetengine\/jetengine-how-to-unlock-content-based-on-progress\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/crocoblock.com\/knowledge-base\/jetengine\/jetengine-how-to-unlock-content-based-on-progress\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/crocoblock.com\/knowledge-base\/jetengine\/jetengine-how-to-unlock-content-based-on-progress\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/crocoblock.com\/knowledge-base\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Articles\",\"item\":\"https:\/\/crocoblock.com\/knowledge-base\/articles\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"How to Unlock Content Based on Progress\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/crocoblock.com\/knowledge-base\/#website\",\"url\":\"https:\/\/crocoblock.com\/knowledge-base\/\",\"name\":\"Help Center\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/crocoblock.com\/knowledge-base\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/crocoblock.com\/knowledge-base\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/crocoblock.com\/knowledge-base\/#organization\",\"name\":\"Help Center\",\"url\":\"https:\/\/crocoblock.com\/knowledge-base\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/crocoblock.com\/knowledge-base\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2025\/04\/invert-crocoblock-logo.svg\",\"contentUrl\":\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2025\/04\/invert-crocoblock-logo.svg\",\"caption\":\"Help Center\"},\"image\":{\"@id\":\"https:\/\/crocoblock.com\/knowledge-base\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to Unlock Content Based on Progress \u2014 JetEngine | Crocoblock","description":"Discover how to set the JetEngine Dynamic Visibility Module in the Elementor editor so that users can unlock the content based on progress, completing a step-by-step JetEngine or JetFormBuilder form.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/crocoblock.com\/knowledge-base\/jetengine\/jetengine-how-to-unlock-content-based-on-progress\/","og_locale":"en_US","og_type":"article","og_title":"How to Unlock Content Based on Progress \u2014 JetEngine | Crocoblock","og_description":"Discover how to set the JetEngine Dynamic Visibility Module in the Elementor editor so that users can unlock the content based on progress, completing a step-by-step JetEngine or JetFormBuilder form.","og_url":"https:\/\/crocoblock.com\/knowledge-base\/jetengine\/jetengine-how-to-unlock-content-based-on-progress\/","og_site_name":"Help Center","article_modified_time":"2023-07-28T11:06:11+00:00","og_image":[{"url":"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/02\/page-with-locked-content-and-form-2.png"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"22 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/crocoblock.com\/knowledge-base\/jetengine\/jetengine-how-to-unlock-content-based-on-progress\/","url":"https:\/\/crocoblock.com\/knowledge-base\/jetengine\/jetengine-how-to-unlock-content-based-on-progress\/","name":"How to Unlock Content Based on Progress \u2014 JetEngine | Crocoblock","isPartOf":{"@id":"https:\/\/crocoblock.com\/knowledge-base\/#website"},"datePublished":"2022-11-04T21:15:59+00:00","dateModified":"2023-07-28T11:06:11+00:00","description":"Discover how to set the JetEngine Dynamic Visibility Module in the Elementor editor so that users can unlock the content based on progress, completing a step-by-step JetEngine or JetFormBuilder form.","breadcrumb":{"@id":"https:\/\/crocoblock.com\/knowledge-base\/jetengine\/jetengine-how-to-unlock-content-based-on-progress\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/crocoblock.com\/knowledge-base\/jetengine\/jetengine-how-to-unlock-content-based-on-progress\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/crocoblock.com\/knowledge-base\/jetengine\/jetengine-how-to-unlock-content-based-on-progress\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/crocoblock.com\/knowledge-base\/"},{"@type":"ListItem","position":2,"name":"Articles","item":"https:\/\/crocoblock.com\/knowledge-base\/articles\/"},{"@type":"ListItem","position":3,"name":"How to Unlock Content Based on Progress"}]},{"@type":"WebSite","@id":"https:\/\/crocoblock.com\/knowledge-base\/#website","url":"https:\/\/crocoblock.com\/knowledge-base\/","name":"Help Center","description":"","publisher":{"@id":"https:\/\/crocoblock.com\/knowledge-base\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/crocoblock.com\/knowledge-base\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/crocoblock.com\/knowledge-base\/#organization","name":"Help Center","url":"https:\/\/crocoblock.com\/knowledge-base\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/crocoblock.com\/knowledge-base\/#\/schema\/logo\/image\/","url":"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2025\/04\/invert-crocoblock-logo.svg","contentUrl":"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2025\/04\/invert-crocoblock-logo.svg","caption":"Help Center"},"image":{"@id":"https:\/\/crocoblock.com\/knowledge-base\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/crocoblock.com\/knowledge-base\/wp-json\/wp\/v2\/article\/26871"}],"collection":[{"href":"https:\/\/crocoblock.com\/knowledge-base\/wp-json\/wp\/v2\/article"}],"about":[{"href":"https:\/\/crocoblock.com\/knowledge-base\/wp-json\/wp\/v2\/types\/article"}],"author":[{"embeddable":true,"href":"https:\/\/crocoblock.com\/knowledge-base\/wp-json\/wp\/v2\/users\/1"}],"wp:attachment":[{"href":"https:\/\/crocoblock.com\/knowledge-base\/wp-json\/wp\/v2\/media?parent=26871"}],"wp:term":[{"taxonomy":"builder-category","embeddable":true,"href":"https:\/\/crocoblock.com\/knowledge-base\/wp-json\/wp\/v2\/builder-category?post=26871"},{"taxonomy":"article-category","embeddable":true,"href":"https:\/\/crocoblock.com\/knowledge-base\/wp-json\/wp\/v2\/article-category?post=26871"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}