{"id":251086,"date":"2025-09-17T23:51:09","date_gmt":"2025-09-17T23:51:09","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/selective-recaptcha-loader-for-cf7\/"},"modified":"2025-09-23T11:49:12","modified_gmt":"2025-09-23T11:49:12","slug":"selective-recaptcha-loader","status":"publish","type":"plugin","link":"https:\/\/az-tr.wordpress.org\/plugins\/selective-recaptcha-loader\/","author":23371466,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"0.2.1","stable_tag":"0.2.1","tested":"6.8.5","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Selective reCAPTCHA Loader for CF7","header_author":"Netservice","header_description":"Load reCAPTCHA only where Contact Form 7 forms are present or on all pages as desired.","assets_banners_color":"748580","last_updated":"2025-09-23 11:49:12","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/netservice.jp\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":280,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.2":{"tag":"0.2","author":"yasuhikofujiwara","date":"2025-09-17 23:57:09"},"0.2.1":{"tag":"0.2.1","author":"yasuo3o3","date":"2025-09-23 11:49:12"}},"upgrade_notice":{"0.2.1":"<p>Automation improvements for build and deployment processes.<\/p>","0.01":"<p>Initial release of Selective reCAPTCHA Loader for CF7.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3366441,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3366441,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3368107,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3368108,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.2","0.2.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3366441,"resolution":"1","location":"assets","locale":""}},"screenshots":{"1":"Main settings page showing the two modes and configuration options"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[1152,601,187,247,595],"plugin_category":[38,42,54],"plugin_contributors":[],"plugin_business_model":[],"class_list":["post-251086","plugin","type-plugin","status-publish","hentry","plugin_tags-contact-form-7","plugin_tags-forms","plugin_tags-optimization","plugin_tags-performance","plugin_tags-recaptcha","plugin_category-authentication","plugin_category-contact-forms","plugin_category-security-and-spam-protection","plugin_committers-yasuo3o3"],"banners":{"banner":"https:\/\/ps.w.org\/selective-recaptcha-loader\/assets\/banner-772x250.png?rev=3368108","banner_2x":"https:\/\/ps.w.org\/selective-recaptcha-loader\/assets\/banner-1544x500.png?rev=3368107","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/selective-recaptcha-loader\/assets\/icon-128x128.png?rev=3366441","icon_2x":"https:\/\/ps.w.org\/selective-recaptcha-loader\/assets\/icon-256x256.png?rev=3366441","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/selective-recaptcha-loader\/assets\/screenshot-1.png?rev=3366441","caption":"Main settings page showing the two modes and configuration options"}],"raw_content":"<!--section=description-->\n<p><strong>Selective reCAPTCHA Loader for CF7<\/strong> is a performance optimization plugin that intelligently controls when and where Google reCAPTCHA assets are loaded for Contact Form 7 forms. Instead of loading reCAPTCHA on every page, this plugin provides two modes to optimize your site's performance.<\/p>\n\n<h4>Key Features<\/h4>\n\n<p><strong>\ud83d\ude80 Two Loading Modes:<\/strong>\n- <strong>Selective Mode (Default)<\/strong>: Only loads reCAPTCHA on pages that contain Contact Form 7 forms\n- <strong>Global Mode<\/strong>: Always loads reCAPTCHA on all front-end pages (traditional behavior)<\/p>\n\n<p><strong>\ud83c\udfaf Smart Detection:<\/strong>\n- Detects CF7 shortcodes in post content\n- Identifies CF7 blocks in Gutenberg editor\n- Whitelist-based override for specific pages<\/p>\n\n<p><strong>\u2699\ufe0f Advanced Configuration:<\/strong>\n- Whitelist specific pages by ID, slug, or regex patterns (pages matching the whitelist will <strong>always<\/strong> load reCAPTCHA)\n- Comprehensive filter system for developers<\/p>\n\n<h4>How It Works<\/h4>\n\n<p>The plugin hooks into WordPress's script enqueuing system with a priority of 120, analyzing each page to determine if Contact Form 7 forms are present. Based on your selected mode and detection results, it either allows or prevents reCAPTCHA assets from loading.<\/p>\n\n<p><strong>Caching Considerations:<\/strong>\n- Per-page detection results are cached per request\n- Cache automatically clears when plugin settings change<\/p>\n\n<h4>Developer Features<\/h4>\n\n<p><strong>Filters:<\/strong>\n- <code>selerelo_is_form_page<\/code> - Modify form page detection\n- <code>selerelo_recaptcha_handles<\/code> - Define which script handles to control<\/p>\n\n<p><strong>Template Functions:<\/strong>\n- <code>selerelo_should_load_recaptcha()<\/code> - Check if reCAPTCHA will load\n- <code>selerelo_is_form_page()<\/code> - Check if page has forms\n- <code>selerelo_get_option()<\/code> - Get plugin options<\/p>\n\n<h3>Technical Details<\/h3>\n\n<p><strong>Minimum Requirements:<\/strong>\n- WordPress 6.0 or higher\n- PHP 7.4 or higher\n- Contact Form 7 5.8 or higher<\/p>\n\n<p><strong>Performance Impact:<\/strong>\n- Minimal overhead: Detection logic is lightweight and cached\n- Reduces script loading on pages without forms\n- Can significantly improve page load times on form-free pages<\/p>\n\n<p><strong>Security:<\/strong>\n- All user inputs are sanitized and escaped\n- Uses WordPress nonces for form submissions\n- Follows WordPress coding standards\n- No external API calls or tracking<\/p>\n\n<h3>\u65e5\u672c\u8a9e\u7248\u8aac\u660e<\/h3>\n\n<p><strong>Selective reCAPTCHA Loader for CF7<\/strong> \u306f\u3001Contact Form 7 \u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u6700\u9069\u5316\u3059\u308b\u30d7\u30e9\u30b0\u30a4\u30f3\u3067\u3059\u3002\u5168\u30da\u30fc\u30b8\u3067reCAPTCHA\u3092\u8aad\u307f\u8fbc\u3080\u4ee3\u308f\u308a\u306b\u3001\u30d5\u30a9\u30fc\u30e0\u304c\u3042\u308b\u30da\u30fc\u30b8\u3067\u306e\u307f\u8aad\u307f\u8fbc\u307f\u307e\u3059\u3002<\/p>\n\n<h4>\u4e3b\u306a\u7279\u5fb4<\/h4>\n\n<p><strong>2\u3064\u306e\u8aad\u307f\u8fbc\u307f\u30e2\u30fc\u30c9:<\/strong>\n- <strong>Selective\u30e2\u30fc\u30c9\uff08\u63a8\u5968\uff09<\/strong>: \u30d5\u30a9\u30fc\u30e0\u304c\u3042\u308b\u30da\u30fc\u30b8\u306e\u307f\u8aad\u307f\u8fbc\u307f\n- <strong>Global\u30e2\u30fc\u30c9<\/strong>: \u5168\u30da\u30fc\u30b8\u3067reCAPTCHA\u8aad\u307f\u8fbc\u307f\uff08\u5f93\u6765\u65b9\u5f0f\uff09<\/p>\n\n<p><strong>\u30b9\u30de\u30fc\u30c8\u691c\u51fa:<\/strong>\n- \u30b7\u30e7\u30fc\u30c8\u30b3\u30fc\u30c9\u3001Gutenberg\u30d6\u30ed\u30c3\u30af\u5185\u306e\u30d5\u30a9\u30fc\u30e0\u3092\u691c\u51fa\n- \u30db\u30ef\u30a4\u30c8\u30ea\u30b9\u30c8\u6a5f\u80fd\uff08\u30da\u30fc\u30b8ID\u3001\u30b9\u30e9\u30c3\u30b0\u3001\u6b63\u898f\u8868\u73fe\u5bfe\u5fdc\u3001\u30db\u30ef\u30a4\u30c8\u30ea\u30b9\u30c8\u306b\u4e00\u81f4\u3057\u305f\u30da\u30fc\u30b8\u306f<strong>\u5fc5\u305a<\/strong>reCAPTCHA\u3092\u8aad\u307f\u8fbc\u307f\u307e\u3059\uff09<\/p>\n\n<h4>\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/h4>\n\n<ol>\n<li>\u30d7\u30e9\u30b0\u30a4\u30f3\u30d5\u30a1\u30a4\u30eb\u3092 <code>\/wp-content\/plugins\/selective-recaptcha-loader\/<\/code> \u306b\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9<\/li>\n<li>\u7ba1\u7406\u753b\u9762\u306e\u300c\u30d7\u30e9\u30b0\u30a4\u30f3\u300d\u3067\u30d7\u30e9\u30b0\u30a4\u30f3\u3092\u6709\u52b9\u5316<\/li>\n<li>\u300c\u8a2d\u5b9a\u300d\u2192\u300cSelective reCAPTCHA\u300d\u3067\u8a2d\u5b9a<\/li>\n<li>Selective\u30e2\u30fc\u30c9\u306e\u307e\u307e\u4f7f\u7528\u3092\u63a8\u5968\uff08\u307b\u3068\u3093\u3069\u306e\u30b5\u30a4\u30c8\u306b\u6700\u9069\uff09<\/li>\n<\/ol>\n\n<h4>\u4f7f\u3044\u65b9<\/h4>\n\n<p><strong>Global\u30e2\u30fc\u30c9<\/strong>: \u5168\u30da\u30fc\u30b8\u3067reCAPTCHA\u3092\u8aad\u307f\u8fbc\u307f\u307e\u3059\u3002\u30b5\u30a4\u30c8\u5168\u4f53\u306b\u30d5\u30a9\u30fc\u30e0\u304c\u3042\u308b\u5834\u5408\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n<p><strong>Selective\u30e2\u30fc\u30c9<\/strong>: \u30d5\u30a9\u30fc\u30e0\u691c\u51fa\u3057\u305f\u30da\u30fc\u30b8\u306e\u307freCAPTCHA\u3092\u8aad\u307f\u8fbc\u307f\u307e\u3059\u3002\u6700\u5927\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u5411\u4e0a\u304c\u671f\u5f85\u3067\u304d\u307e\u3059\u3002<\/p>\n\n<h4>\u6ce8\u610f\u4e8b\u9805<\/h4>\n\n<p><strong>\u30ad\u30e3\u30c3\u30b7\u30e5\u30d7\u30e9\u30b0\u30a4\u30f3<\/strong>: \n\u307b\u3068\u3093\u3069\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u30d7\u30e9\u30b0\u30a4\u30f3\u3068\u4e92\u63db\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u691c\u51fa\u30ed\u30b8\u30c3\u30af\u306f\u30ad\u30e3\u30c3\u30b7\u30e5\u524d\u306b\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to <code>\/wp-content\/plugins\/selective-recaptcha-loader\/<\/code><\/li>\n<li>Activate the plugin through the 'Plugins' screen in WordPress<\/li>\n<li>Go to Settings \u2192 Selective reCAPTCHA to configure the plugin<\/li>\n<li>Choose your preferred mode (Selective is recommended for most sites)<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id='does%20this%20plugin%20work%20without%20contact%20form%207%3F'><h3>Does this plugin work without Contact Form 7?<\/h3><\/dt>\n<dd><p>No, this plugin requires Contact Form 7 to be active. It will gracefully deactivate functionality if CF7 is not detected.<\/p><\/dd>\n<dt id='can%20i%20force%20recaptcha%20to%20load%20on%20specific%20pages%3F'><h3>Can I force reCAPTCHA to load on specific pages?<\/h3><\/dt>\n<dd><p>Yes! Add pages to the whitelist in settings using:\n- Post ID (e.g., 123)\n- Page slug (e.g., contact)\n- Regular expression (e.g., \/^https:\\\/\\\/example&#046;com\\\/custom\/)\nYou can also use the <code>selerelo_is_form_page<\/code> filter for custom logic.<\/p><\/dd>\n<dt id='is%20this%20plugin%20compatible%20with%20caching%20plugins%3F'><h3>Is this plugin compatible with caching plugins?<\/h3><\/dt>\n<dd><p>Yes, the plugin is designed to work with caching plugins. The detection logic runs before caching occurs and uses WordPress transients for performance.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.2.1 - 2025-09-23<\/h4>\n\n<ul>\n<li>Changed: Automation improvements for build and deployment processes<\/li>\n<\/ul>\n\n<h4>0.2 - 2025-09-03<\/h4>\n\n<ul>\n<li>Removed: Auto mode (automatically migrated to Selective mode)<\/li>\n<li>Removed: Per-post metabox functionality<\/li>\n<li>Removed: reCAPTCHA v3 badge hiding and disclosure features<\/li>\n<li>Simplified: Plugin now offers only Global and Selective modes for easier configuration<\/li>\n<li>Performance: Removed unused transient caching and site-wide detection logic<\/li>\n<\/ul>\n\n<h4>0.01 - 2025-09-02<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>Global\/Selective loading modes<\/li>\n<li>Smart form detection (shortcodes, blocks)<\/li>\n<li>Whitelist and template hint support<\/li>\n<li>Complete internationalization (English\/Japanese)<\/li>\n<li>Developer filter system<\/li>\n<li>WordPress 6.0+ and PHP 7.4+ compatibility<\/li>\n<\/ul>","raw_excerpt":"Load reCAPTCHA only where Contact Form 7 forms are present or on all pages as desired.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/az-tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/251086","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/az-tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/az-tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/az-tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=251086"}],"author":[{"embeddable":true,"href":"https:\/\/az-tr.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/yasuo3o3"}],"wp:attachment":[{"href":"https:\/\/az-tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=251086"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/az-tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=251086"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/az-tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=251086"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/az-tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=251086"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/az-tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=251086"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/az-tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=251086"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}