Show me the quickstart video

To include a web page to your page please check the following things:

Most likely you have one of the following setups:

  1. Iframe can be included, and you are on the same domain: All features of the plugin can be used.
  2. iframe can be included, and you are on a different domain: See the feature comparison chart and the features availability overview. To resize the content to the height/width or modify css you need to modify the remote iframe page by adding one line of Javascript to enable the "External workaround".
  3. iframe cannot be included: You cannot include the content because the owner does not allow this.
', 'advanced-iframe'); _e('

To enter a simple iframe please go to the administration and follow the instructions on the basic settings tab. There you can either use a basic shortcode and set the settings in the administration or overwrite the settings directly in the shortcode. Please also read the FAQ and look at the free and pro examples.

', 'advanced-iframe'); _e('

Advanced users that have their own server might also set up a reverse proxy if the iframe page is on a different domain and cannot use the "External workaround". See this blog for details.
', 'advanced-iframe'); _e('If you mix http and https read this blog. Parent https and iframe http is not supported by any browser anymore!

', 'advanced-iframe'); aiPostboxClose(); } function printDonation($devOptions, $evanto, $closedArray) { global $isFreemius, $isFreemiusMigration, $ai_fs, $showFreemiusMigration; $isRegistered = $isFreemiusMigration && $ai_fs->is_registered() && $ai_fs->is_tracking_allowed(); $isOnlyRegistered = $isFreemiusMigration && $ai_fs->is_registered(); if ($evanto) { echo '

'; _e('Advanced iFrame Pro - Quick start guide, plugin options, widget, vote for the plugin on code canyon', 'advanced-iframe'); echo '

'; if (!$isFreemius) { // Registration aiPostboxOpen("id-options-registration", "Registration", $closedArray); echo ''; $status = ''; if (empty($devOptions['purchase_code'])) { $status = __('
Without a purchase code the 10.000 views/month of the free version is active. The iframes are still working but below all iframes a small "powered by" notice with a link to the pro version is shown. If you do not have access to the license anymore please log in to CodeCanyon and contact me here with a proof of purchase, so I can send you a custom license code.
Current status: ', 'advanced-iframe'); $viewsPercent = get_option('default_a_options') / 100; $status .= $viewsPercent . ' % of views for this month used.'; if ($viewsPercent > 100) { $status .= __(' The view li' . 'mit is reached. A sm' . 'all notice is shown ov' . 'er all iframes. Please reg' . 'ister if you like to remove this.', 'advanced-iframe'); } } $freeAdditional = $showFreemiusMigration ? __('

Advanced iframe has migrated to Freemius!
Freemius is a selling platform like CodeCanyon, but better. New updates will only be available in the Freemius version! You can migrate your CodeCanyon license and get all the benefits in a few minutes. If you migrate before the 31.12.2025 you get an extra 10€ coupon for updates!
Here are the reasons to migrate:A lifetime license like beforeAutomatic updates like offered by WordPress!Different plans for new licenses -> monthly, yearly, live timeMulti site support -> 1 (personal), 5 (business), 50 (agencies) site plans are available. Get a big discount for additional sites!You can switch plans or add additional site licenses as needed.Better support rules than CodeCanyon. With a subscription, you\'ll get ongoing support as long as your plan is active.
There\'s also a clear reason why advanced iframe migrated: The fees are significantly lower than on CodeCanyon and CodeCanyon does not offer auto updates or multi-site licenses, which many users have complained about.

Compare Freemius and CodeCanyon: https://freemius.com/wordpress/features-comparison/

Migrate your CodeCanyon license', 'advanced-iframe') : ""; printPurchaseCodeInput($devOptions, __('Purchase code', 'advanced-iframe'), 'purchase_code', __('Enter your purchase code here to finish the registration and unlock all features of advanced iframe pro. Your license key (purchase code) is located inside your digital purchase receipt on your CodeCanyon Downloads page. To retrieve your license key, visit CodeCanyon.net/downloads and click "Download > License Certificate". Your purchase code will be validated and logged together with relevant data to detect fraud. For more information, see the privacy policy here: https://www.advanced-iframe.com/privacy-policy for details. Do not share your purchase code as it will be blocked if misused.', 'advanced-iframe') . $status . $freeAdditional); echo '
'; } else if ($isRegistered) { // Manage Freemius aiPostboxOpen("id-options-manage", "Manage Freemius", $closedArray); _e('

Advanced iFrame Pro licenses are managed through Freemius. Freemius comes with a friendly self-served User Dashboard giving you the freedom to manage subscriptions, payment methods and licenses, view their payments history, update billing information, download invoices, and more.

', 'advanced-iframe'); _e('

Here’s a direct link to your User Dashboard: https://users.freemius.com/store/6172

', 'advanced-iframe'); echo '

'; _e('You can also upgrade or buy a new license in the dashboard. Go to "Websites", select any of the sites and then on the right side you can manage your license and also get a new one.', 'advanced-iframe'); echo '

'; _e('Migrated licenses cannot be upgraded. Please select "Purchase another license" and use the coupon "CodeCanyonMigration" for a discount. The coupon can be used once per user for a 5 or 50 user license till the 31.12.2025!', 'advanced-iframe'); echo '

'; $pricingUrl = $ai_fs->get_upgrade_url(); _e('

'; _e('Upgrade your license', 'advanced-iframe'); echo '   '; $checkoutUrl = 'https://checkout.freemius.com/plugin/13759/plan/22977/currency/eur/'; _e(''; _e('Get a new license', 'advanced-iframe'); echo '

'; } aiPostboxClose(); printQuickstartGuide($closedArray); _e('

Plugin options

', 'advanced-iframe'); // Display aiPostboxOpen("id-options-display", "Display options", $closedArray); echo ''; printTrueFalse(false, $devOptions, __('Show this section as last tab', 'advanced-iframe'), 'donation_bottom', __('You can show this tab as last tab after you have read it. Then the basic tab is shown first.', 'advanced-iframe')); printTrueFalse(false, $devOptions, __('Enable expert mode', 'advanced-iframe'), 'expert_mode', __('If you enable the expert mode the description is only shown if you click on the label of the setting. You see more settings at once but only one description at once. Also the padding between the table rows are reduced a lot. So you see a lot of more settings on one screen. Use this if you are common with the settings.', 'advanced-iframe')); printTextInput(false, $devOptions, __('Editor button', 'advanced-iframe'), 'editorbutton', __('With this setting you can add an "advanced iframe" button to the text editor of Wordpress. The button does add the shortcode with the current security code if set + the settings you define. You can use any setting from the administration. By default src,width,height is used. The securitykey is additionally rendered if you specify one. If you leave this setting empty the button is not shown.', 'advanced-iframe')); echo '
'; aiPostboxClose(); // Debug/validation aiPostboxOpen("id-options-debug", "Validation of iframes/Debug console", $closedArray); echo ''; printTrueFalse(false, $devOptions, __('Check shortcode', 'advanced-iframe'), 'check_shortcode', __('If you enable this the plugin does check if the shortcode attributes are known. You will find typos, wrong quotes and missing spaces. It does not check the values! The only reason this is not enabled by default is to make sure that old shortcodes don\'t show a warning after an update! I strongly recommend to enable this setting! You can also add ?aiEnableCheckShortcode=true to the url to do a check dynamically. By default, this check is done when you do a preview of your page.', 'advanced-iframe'), true); printDebug($devOptions, __('Debug Javascript', 'advanced-iframe'), 'debug_js', __('You can enable that most messages from the Javascript console are shown in a debug div which shown at the bottom of the page. This is very useful if you have problems on Android or IOS because there it is quite hard to get on the infos displayed in the Javascript log. If you enable this you also get additional output from the ai.js and there you see which important methods are called. Important: Since 2021.2 also the external workaround with postMessage set to debug automatically and the ai_external.js also runs in debug mode! The current user agent, the headers and a basic iframe check of the first found iframe are printed into the debug log. Click on the debug area to enlarge and shrink it. You can also append ?aiEnableDebugConsole=true/false or ?aiEDC=true/false to the url to enable/disable the debug console. Shortcode attribute: debug_js="false/bottom" ', 'advanced-iframe')); echo '
'; aiPostboxClose(); // Check/Monitoring aiPostboxOpen("id-options-check-monitoring", "Checking/Monitoring of iframes", $closedArray); echo ''; printTrueFalse(false, $devOptions, __('Check Url on load', 'advanced-iframe'), 'check_iframe_url_when_load', __('By default the url on the basic tab is checked if it can be included into an iframe. Some servers do block this feature and the administration does fail then. If this is the case the plugin does disable this check and "Check iframes on save" automatically. You can enable this feature again if you allow curl calls on your server.', 'advanced-iframe'), true); printAllWarningFalse($devOptions, __('Check iframes on save', 'advanced-iframe'), 'check_iframes_when_save', __('You can define if you show errors only, errors and warnings or if iframes are not checked at all at save of a post/page. The Messages are only shown in the classic editor. The block editor does update the url automatically and you see a not loading page right away. Some servers do block this feature and you get a blank editor page on save once. If this is the case the plugin does disable this check automatically. You can enable this feature again if you allow curl calls on your server.', 'advanced-iframe')); printTrueFalse(true, $devOptions, __('Check all iframes once a day', 'advanced-iframe'), 'check_iframe_cronjob', __('You can automatically check all iframes of your site once a day. IF you upgrade from an older version please deactivate and active the plugin once to get the cronjob setup properly! The same function like on the "Basic" tab -> Url -> "Check all iframes" is triggered here. Be aware that default Wordpress cronjobs are triggered by the user that hits the next execution time and therefore this user has to wait until this check is done! Please go to the administration if you get an e-mail for a full check! If the checks of your iframes takes longer than 5 sec. I recommend to switch to a native cronjob if possible. Google for "Wordpress cronjob replace" and also add your hoster! Because native cronjobs can not be created everywhere and also often depends on your package. To test cronjobs you can e.g. use the plugin "WP Control" where you can simply execute this cronjob.', 'advanced-iframe')); printNumberInput(true, $devOptions, __('i-20-Check batch size', 'advanced-iframe'), 'check_iframe_batch_size', __('This setting defines how many urls are checked in parallel. This is system dependent (number of available file descriptors) and can vary between 10 and over 1000. Some blog entries talk about a default of 256. During testing 20 was the value which worked fine on all systems tested. If you get many "This url cannot be checked..." messages you should reduce this value. A check is normally 3-4 sec. So if you have e.g. 30 iframe URLs to test and use the default of 20 the whole check takes ~ 7 sec.', 'advanced-iframe')); printTextInput(true, $devOptions, __('i-20-Check iframe cronjob email', 'advanced-iframe'), 'check_iframe_cronjob_email', __('You can define an alternative e-mail the iframe status check is sent to. If you leave this field empty the admin e-mail from "Settings -> Email Address" is used. You can define several e-mails separating them by ",".', 'advanced-iframe')); printTrueFalse(true, $devOptions, __('i-20-Send e-mail always', 'advanced-iframe'), 'check_iframe_cronjob_email_always', __('Get a report by e-mail always or only on case of a problem.', 'advanced-iframe'), 'true'); echo '
'; aiPostboxClose(); // Other iframe solutions aiPostboxOpen("id-options-other-iframe", "Support for other iframe solutions", $closedArray); echo ''; printTrueFalse(false, $devOptions, __('Replace iframe tags with advanced iframe shortcode', 'advanced-iframe'), 'replace_iframe_tags', __('When you set this to Yes all existing iframes on your site will be replaced by the advanced iframe shortcode dynamically. So you get all the power of the plugin without exchanging all your old iframes. The iframes are parsed and the main attributes (src, width, height, id, name, class, style) are used in the shortcode + all settings you make in the administration. Be aware that they all get the same additional settings! So only use this if this works for you. You can of course if you need only some iframes to be different replace them manually. If you have several iframes on the same page make sure that if they have an id, the id is unique.', 'advanced-iframe'), false); printTextInput(false, $devOptions, __('Alternative shortcode', 'advanced-iframe'), 'alternative_shortcode', __('You can define an alternative shortcode the plugin should evaluate. By default you can use: advanced_iframe and advanced-iframe. This is e.g. useful if you chance/upgrade from iframe to advanced iframe (pro). Simply insert e.g. "iframe" in the text field. Most if the parameters do already match! Make sure to deactivate the other plugin that used the shortcode. With using iframe also the BBCode [iframe]url[/iframe] is supported. IMPORTANT: If you use this, security codes are NOT checked anymore. So anyone who can e.g. write a post can also insert an iframe!', 'advanced-iframe')); echo '
'; aiPostboxClose(); // Share part of your content aiPostboxOpen("id-options-share", "Share part of your content", $closedArray); echo ''; printTrueFalse(true, $devOptions, __('Enable content filter', 'advanced-iframe'), 'enable_content_filter', __('This feature does not render an iframe. It gives you the option to filter the content of your page by an id. So you can offer parts of your page that then can be included into any iframe. You only need to specify the id of the element you want to show with the parameter ?ai-show-id-only=id. If you only specify this parameter the whole page is loaded and then with Javascript all other elements are hidden. If you add ai-server-side=1 to the url the content is filtered on the server side but this only works for elements which are in the content area because everything else depends on the template. By default, overflow (scrolling) is hidden inside the iframe. If you like that scrollbars are shown if needed add &ai-show-overflow=1 to the url. Also check "Add ai_external.js local" as this actually the even more powerful solution but more complicated to set up. So try what fits best to your needs! Also, the height of the content is sent to the parent by a post message. Please see the demo how you can use this and code you need to include to use this the optimal way.', 'advanced-iframe'), 'false', '//www.advanced-iframe.com/advanced-iframe/advanced-iframe-pro-demo/share-content-from-your-domain-content-filter'); printAiExternalLocal($devOptions, __('Add ai_external.js local', 'advanced-iframe'), 'add_ai_external_local', __('The setting does add the ai_external.js to your own site. This enables you to provide parts of your site into an external iframe or use the "External workaround" for the same domain. This is similar to "enable_content_filter" where you can filter parts of your page. The advantage of this solution is that you can use all css modifications and auto height of this solution. Also resize of element resize does work here. Also, this works on included links if they still stay on the page. The disadvantage is that it is more complicated to set up then "enable_content_filter" and only one configuration is supported automatically. Also, the height of the content is sent to the parent by a post message. If you like to include the script only to a single page use the shortcode [ai_advanced_js_local] to your page. Then the script will be included to your footer. You can even add custom settings like described on the "External workaround" tab by adding a script to the content. You can enable this for the site, the admin pages or both. Please see the demo how you can use this and code you need to include to use this the optimal way.', 'advanced-iframe'), 'false', '//www.advanced-iframe.com/advanced-iframe/advanced-iframe-pro-demo/share-content-from-your-domain-add-ai_external-js-local'); echo '
'; aiPostboxClose(); // Technical aiPostboxOpen("id-options-technical", "Technical options", $closedArray); echo ''; printTrueFalse(false, $devOptions, __('Include ai.min.js in the footer', 'advanced-iframe'), 'include_scripts_in_footer', __('By default, the Javascript file ai.min.js is included in the footer and then jQuery can also be loaded there. This has the advantage that the page is shown quicker to the user but if the iframe loads very fast the needed methods are not available yet. Please check the browser console (F12). If you see errors that advanced iframe methods are not found: Set this to false. The ai.min.js has also to be in the footer if it should only be loaded when the shortcode is on the page. This setting cannot be set as shortcode! There is an additional shortcode attribute called include_scripts_in_content="true". This is only needed in the special case if you use the page with content only (like using the plugin "Show Content Only" with "Content + Styles" mode). Then ai.js is directly rendered before the iframe. See demo wrapped auto height.', 'advanced-iframe')); printTrueFalse(false, $devOptions, __('Load jQuery as dependency', 'advanced-iframe'), 'load_jquery', __('By default jQuery is loaded as dependency. If you have a theme or another plugin that does not stick to the Wordpress way to load the scripts you might have to disable the dependency. This avoids that jQuery is loaded again and other plugins do maybe not work anymore.', 'advanced-iframe'), true); printTrueFalse(false, $devOptions, __('Fix WordPress 5.5 page parameter change', 'advanced-iframe'), 'remove_page_param_from_query', __('In Wordpress 5.5 the page parameter returns with a 301 redirect if not used the WordPress way. Setting this to true does allow to still use the parameter page in the url with non numerical characters. The recommended way is to not use page as parameter in the url at all.', 'advanced-iframe')); printTrueFalse(false, $devOptions, __('Prevent early shortcode execution', 'advanced-iframe'), 'optimize_rendering', __('Some plugins like older version of all-in-one-seo do evaluate shortcodes for internal use. This slows down the page. Advanced iframe was detecting this and prevented this rendering. Till the theme Twenty Twenty-One this worked fine out of the box. Unfortunately in the theme Twenty Twenty-Two the iframe shortcode is evaluated before the HTML outputs starts. And then no iframe is rendered at all. Because of this and as all-in-one-seo also fixed this on their side, this optimization is disabled by default! The iframe is then rendered in all situations. Set this setting to "Yes" and test if the iframe is still shown. You can check if you need this setting:Set this setting to Yes.Enable on the options page "Debug Javascript".Go to a page with an iframe and view the source code.If you see <!-- advanced iframe not rendered --> in the HTML AND your iframe is still shown then you should use the optimization if possible. Otherwise, you can use "No" here without any disadvantage. Enabling the debug will also show the rendering time of advanced iframe like this: <!-- advanced iframe rendered in 0.000563 s -->', 'advanced-iframe')); printTrueFalse(false, $devOptions, __('Enable temporary ai content pages', 'advanced-iframe'), 'enable_ai_content_pages', __('This is an advanced feature where the content of your page is not shown directly but a dynamic pages is created. See the demo Display content in iframe how this is used and configured. Please note that you need to reload your page once after the save because WordPress executes the needed hooks in the wrong order.', 'advanced-iframe'), 'false', '//www.advanced-iframe.com/advanced-iframe/demo-advanced-iframe-2-0/show-content-in-iframe'); echo '
'; aiPostboxClose(); // Security/delete aiPostboxOpen("id-options-delete", "Security/Delete options", $closedArray); echo ''; printTrueFalse(false, $devOptions, __('Allow shortcode attributes', 'advanced-iframe'), 'shortcode_attributes', __('Allow to set attributes in the shortcode. All of the attributes can be overwritten in the shortcode if you set \'Yes\'. Otherwise the settings you specify here are used.', 'advanced-iframe')); printTrueFalse(false, $devOptions, __('Use shortcode attributes only', 'advanced-iframe'), 'use_shortcode_attributes_only', __('All iframes you use in your pages use the administration. With shortcode attributes you can overwrite these settings. When you use several iframes with different settings this can lead to unexpected behavior because you do not see the whole configuration in the shortcode. By setting this option to true only the parameters defined as attributes are used. You can set this for a single iframe as well with the shortcode attribute use_shortcode_attributes_only="true". Shortcode attribute: use_shortcode_attributes_only="true" or use_shortcode_attributes_only="false"', 'advanced-iframe')); $user = wp_get_current_user(); if (in_array('administrator', $user->roles)) { printRoles($devOptions, __('Minimum user role', 'advanced-iframe'), 'roles', __('You can define the minimum user role a user needs to use the advanced iframe plugin. This limits the access to the administration, the editor button and if a user can edit a page with a advanced iframe shortcode. If a page with an advanced iframe is detected and the rights are not sufficient an error message is displayed and the user can not edit the page! A user with insufficient rights still can add the shortcode if he has the security code! This settings only works optimal for the 5 default user roles as it depends on the order of roles! So please check if this settings works for you if you have additional roles! Default restrictions means that the administration is only shown for administrators and the editor button for everyone who can edit a post/page. This setting can only be changed by an administrator!', 'advanced-iframe'), 'contributor'); } printTrueFalse(false, $devOptions, __('Remove data when plugin is deleted', 'advanced-iframe'), 'delete_options_db', __('You can remove also all settings in the database when deleting the plugin. By default this is not enabled because updating the pro version is done by deleting the old version and installing the new version again. So please only set this setting to true if you completely want to remove the plugin. Also delete the "Advanced iFrame custom folder" plugin after you have deleted the main plugin.', 'advanced-iframe'), false); echo '
'; aiPostboxClose(); _e('

Widget, vote

', 'advanced-iframe'); aiPostboxOpen("id-options-widget", "Advanced iFrame Pro Widget", $closedArray); _e('The pro version also does offer a widget where you can include the iframe. The usage is really simple. Go to Appearance -> Widgets and insert the shortcode you would normally put into a page into the text field of the "Advanced iFrame Pro Widget".', 'advanced-iframe'); aiPostboxClose(); aiPostboxOpen("id-options-vote", "Vote for the plugin", $closedArray); _e('Thank you for getting Advanced iFrame Pro at CodeCanyon.
', 'advanced-iframe'); _e('Please feel free to leave an item rating from your items download page if you haven\'t already done so.

', 'advanced-iframe'); _e('

Please get in contact with me if you have problems because most of the issues are easy to solve. But at least tell me what you did not like, so I can improve this. Also make sure that you took a look at the quick start guide to make sure the feature you like can be used!

', 'advanced-iframe'); aiPostboxClose(); } else { echo '

'; _e('Advanced iFrame - Upgrading to Advanced iFrame Pro, quick start guide, plugin options', 'advanced-iframe'); echo '

'; aiPostboxOpen("id-options-pro", "Upgrading to Advanced iFrame Pro", $closedArray); if ($isFreemiusMigration) { _e('

Advanced iframe is free for personal use and the Pro version a bargain for your business.

', 'advanced-iframe'); _e('

Important: if you upgrade to the pro version you need to change the path of ai_external.js because of a different main directory. For more details see here.

', 'advanced-iframe'); } else { _e('

Advanced iframe is free for personal use and the Pro version a bargain for your business. It has a limit of 10.000 views a month without a notice text, which should normally not been hit by a personal website.

', 'advanced-iframe'); } $freemius_css = $isFreemiusMigration ? " signup_account_container_freemius" : ""; $freemius_inner_css = $isFreemiusMigration ? " signup_inner_freemius" : ""; echo ' '; echo ' '; if ($isFreemiusMigration) { echo ' '; } echo '

'; if ($isFreemiusMigration) { _e('

* If you do OPT-IN the support message is automatically removed and you get the additional benefits described. Please note that for exclusive coupons you need to allow marketing offers in your Freemius account!', 'advanced-iframe'); } else { _e('

* After 10.000 views/month the iframe is still working but over all iframes a small "powered by" notice with a link to the pro version is shown. If you hit this limit, and you qualify for the free license please contact the advanced iframe team to get a version with a higher limit.
If you use the Advanced iFrame on a non-personal website please first test the plugin carefully before buying. After that it is quick and painless to get Advanced iFrame Pro. Simply get Advanced iFrame Pro on CodeCanyon and be pro in a few minutes!

', 'advanced-iframe'); } if (!$isFreemiusMigration) { _e('

Current status: ', 'advanced-iframe'); echo get_option('default_a_options') / 100 . ' % of views for this month used.'; } _e('

', 'advanced-iframe'); aiPostboxClose(); printQuickstartGuide($closedArray); _e('

Plugin options

', 'advanced-iframe'); // Display aiPostboxOpen("id-options-display", "Display options", $closedArray); echo ''; printTrueFalse(false, $devOptions, __('Show this section as last tab', 'advanced-iframe'), 'donation_bottom', __('You can show this tab as last tab after you have read it. Then the basic tab is shown first.', 'advanced-iframe')); if (!$isFreemiusMigration) { printTrueFalse(false, $devOptions, __('Show the administration of the pro version and test many features in the preview', 'advanced-iframe'), 'demo', __('You can enable the administration of the pro version to see the available features there. Everything except the additional buttons and additional settings on the options tab are shown. All features which can be configured by a shortcode will work in the preview now! So you can really test most of the features before you buy! The additional features of the external workaround with the ai_extenal.js will NOT work as here because the code is not included and only available in the download from CodeCanyon! All pro features have a blue label or differences are described in the documentation!', 'advanced-iframe')); } printTrueFalse(false, $devOptions, __('Enable expert mode', 'advanced-iframe'), 'expert_mode', __('If you enable the expert mode the description is only shown if you click on the label of the setting. You see more settings at once but only one description at once. Also the padding between the table rows are reduced a lot. So you see a lot of more settings on one screen. Use this if you are common with the settings.', 'advanced-iframe')); printTextInput(false, $devOptions, __('Editor button', 'advanced-iframe'), 'editorbutton', __('With this setting you can add an "advanced iframe" button to the text editor of Wordpress. The button does add the shortcode with the current security code if set + the settings you define. You can use any setting from the administration. By default src,width,height is used. The security key is additionally rendered if you specify one. If you leave this setting empty the button is not shown.', 'advanced-iframe')); printTrueFalse(false, $devOptions, __('Show support message', 'advanced-iframe'), 'show_support_message', __('Show the powered by text to support advanced iframe in the free version. It is automatically hidden when you OPT-IN, register or are on localhost (because OPT-IN is not possible).', 'advanced-iframe')); echo '
'; aiPostboxClose(); // Debug/validation aiPostboxOpen("id-options-debug", "Validation of iframes/Debug console", $closedArray); echo ''; printTrueFalse(false, $devOptions, __('Check shortcode', 'advanced-iframe'), 'check_shortcode', __('If you enable this the plugin does check if the shortcode attributes are known. You will find typos, wrong quotes and missing spaces. It does not check the values! The only reason this is not enabled by default is to make sure that old shortcodes don\'t show a warning after an update! I strongly recommend to enable this setting! You can also add ?aiEnableCheckShortcode=true to the url to do a check dynamically. By default, this check is done when you do a preview of your page.', 'advanced-iframe'), true); printDebug($devOptions, __('Debug Javascript', 'advanced-iframe'), 'debug_js', __('You can enable that most messages from the Javascript console are shown in a debug div which shown at the bottom of the page. This is very useful if you have problems on Android or IOS because there it is quite hard to get on the infos displayed in the Javascript log. If you enable this you also get additional output from the ai.js and there you see which important methods are called. Important: You need to use the external workaround with postMessage set to debug(!) (see the external workaround tab) if you also want to get the messages from the page in the iframe! Also the current user agent, the headers and a basic iframe check of the first found iframe are printed into the debug log. Click on the debug area to enlarge and shrink it. You can also append ?aiEnableDebugConsole=true/false or ?aiEDC=true/false to the url to enable/disable the debug console. Shortcode attribute: debug_js="false/bottom" ', 'advanced-iframe')); echo '
'; aiPostboxClose(); // Check/Monitoring aiPostboxOpen("id-options-check-monitoring", "Checking/Monitoring of iframes", $closedArray); echo ''; printTrueFalse(false, $devOptions, __('Check Url on load', 'advanced-iframe'), 'check_iframe_url_when_load', __('By default the url on the basic tab is checked if it can be included into an iframe. Some servers do block this feature and the administration does fail then. If this is the case the plugin does disable this check and "Check iframes on save" automatically. You can enable this feature again if you allow curl calls on your server.', 'advanced-iframe'), true); printAllWarningFalse($devOptions, __('Check iframes on save', 'advanced-iframe'), 'check_iframes_when_save', __('You can define if you show errors only, errors and warnings or if iframes are not checked at all at save. Some servers do block this feature and you get a blank editor page on save once. If this is the case the plugin does disable this check automatically. You can enable this feature again if you allow curl calls on your server.', 'advanced-iframe')); echo '
'; aiPostboxClose(); // Other iframe solutions aiPostboxOpen("id-options-other-iframe", "Support for other iframe solutions", $closedArray); echo ''; printTrueFalse(false, $devOptions, __('Replace iframe tags with advanced iframe shortcode', 'advanced-iframe'), 'replace_iframe_tags', __('When you set this to Yes all existing iframes on your site will be replaced by the advanced iframe shortcode dynamically. So you get all the power of the plugin without exchanging all your old iframes. The iframes are parsed and the main attributes (src, width, height, id, name, class, style) are used in the shortcode + all settings you make in the administration. Be aware that they all get the same additional settings! So only use this if this works for you. You can of course if you need only some iframes to be different replace them manually. If you have several iframes on the same page make sure that if they have an id, the id is unique.', 'advanced-iframe'), false); echo '
'; aiPostboxClose(); // Technical aiPostboxOpen("id-options-technical", "Technical options", $closedArray); echo ''; printTrueFalse(false, $devOptions, __('Include ai.js in the footer', 'advanced-iframe'), 'include_scripts_in_footer', __('If you include ai.js to the footer you can include jQuery also at the footer. This can cause errors that needed Javascript is not found!!! This can be the case if the iframe loads very fast and the needed callbacks are not available. Please check the browser console (F12). If you see errors that advanced iframe methods are not found: Set this to false. The ai.js has also to be in the footer if it should only be loaded when the shortcode is on the page. This setting cannot be set as shortcode! There is an additional shortcode attribute called include_scripts_in_content="true". This is only needed in the special case if you use the page with content only (like using the plugin "Show Content Only" with "Content + Styles" mode). Then ai.js is directly rendered before the iframe. See demo wrapped auto height.', 'advanced-iframe')); printTrueFalse(false, $devOptions, __('Load jQuery as dependency', 'advanced-iframe'), 'load_jquery', __('By default jQuery is loaded as dependency. If you have a theme or another plugin that does not stick to the Wordpress way to load the scripts you might have to disable the dependency. This avoids that jQuery is loaded again and other plugins do maybe not work anymore.', 'advanced-iframe'), true); printTrueFalse(false, $devOptions, __('Fix WordPress 5.5 page parameter change', 'advanced-iframe'), 'remove_page_param_from_query', __('In Wordpress 5.5 the page parameter returns with a 301 redirect if not used the WordPress way. Setting this to true does allow to still use the parameter page in the url with non numerical characters. The recommended way is to not use page as parameter in the url at all. ', 'advanced-iframe')); printTrueFalse(false, $devOptions, __('Prevent early shortcode execution', 'advanced-iframe'), 'optimize_rendering', __('Some plugins like older version of all-in-one-seo do evaluate shortcodes for internal use. This slows down the page. Advanced iframe was detecting this and prevented this rendering. Till the theme Twenty Twenty-One this worked fine out of the box. Unfortunately in the theme Twenty Twenty-Two the iframe shortcode is evaluated before the HTML outputs starts. And then no iframe is rendered at all. Because of this and as all-in-one-seo also fixed this on their side, this optimization is disabled by default! The iframe is then rendered in all situations. Set this setting to "Yes" and test if the iframe is still shown. You can check if you need this setting:Set this setting to Yes.Enable on the options page "Debug Javascript".Go to a page with an iframe and view the source code.If you see <!-- advanced iframe not rendered --> in the HTML AND your iframe is still shown then you should use the optimization if possible. Otherwise, you can use "No" here without any disadvantage. Enabling the debug will also show the rendering time of advanced iframe like this: <!-- advanced iframe rendered in 0.000563 s -->', 'advanced-iframe')); printTrueFalse(false, $devOptions, __('Enable temporary ai content pages', 'advanced-iframe'), 'enable_ai_content_pages', __('This is an advanced feature where the content of your page is not shown directly but a dynamic pages is created. See the demo Display content in iframe how this is used and configured. Please note that you need to reload your page once after the save because WordPress executes the needed hooks in the wrong order.', 'advanced-iframe'), 'false', '//www.advanced-iframe.com/advanced-iframe/demo-advanced-iframe-2-0/show-content-in-iframe'); echo '
'; aiPostboxClose(); // Security/delete aiPostboxOpen("id-options-delete", "Security/Delete options", $closedArray); echo ''; printTrueFalse(false, $devOptions, __('Allow shortcode attributes', 'advanced-iframe'), 'shortcode_attributes', __('Allow to set attributes in the shortcode. All of the attributes can be overwritten in the shortcode if you set \'Yes\'. Otherwise the settings you specify here are used.', 'advanced-iframe')); printTrueFalse(false, $devOptions, __('Use shortcode attributes only', 'advanced-iframe'), 'use_shortcode_attributes_only', __('All iframes you use in your pages use the administration. With shortcode attributes you can overwrite these settings. When you use several iframes with different settings this can lead to strange unexpected because you do not see the whole configuration in the shortcode. By setting this option to true only the parameters defined as attributes are used. You can set this for a single iframe as well with the shortcode attribute use_shortcode_attributes_only="true". Shortcode attribute: use_shortcode_attributes_only="true" or use_shortcode_attributes_only="false"', 'advanced-iframe')); printTrueFalse(false, $devOptions, __('Remove data when plugin is deleted', 'advanced-iframe'), 'delete_options_db', __('You can remove also all settings in the database when deleting the plugin. By default this is not enabled because updating the pro version is done by deleting the old version and installing the new version again. So please only set this setting to true if you completely want to remove the plugin. Also delete the "Advanced iFrame custom folder" plugin after you have deleted the main plugin.', 'advanced-iframe'), false); echo '
'; aiPostboxClose(); } } ?>