[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f3hvl-UQuGPDO5MuNFMUw6Ng7z998DL3OuFiSP64-Pc8":3},{"slug":4,"display_name":5,"profile_url":6,"plugin_count":7,"total_installs":8,"avg_security_score":9,"avg_patch_time_days":10,"trust_score":11,"computed_at":12,"plugins":13},"kirkbowers","Kirk Bowers","https:\u002F\u002Fprofiles.wordpress.org\u002Fkirkbowers\u002F",2,20,85,30,84,"2026-04-04T17:31:21.760Z",[14,35],{"slug":15,"name":16,"version":17,"author":5,"author_profile":6,"description":18,"short_description":19,"active_installs":20,"downloaded":21,"rating":22,"num_ratings":22,"last_updated":23,"tested_up_to":24,"requires_at_least":25,"requires_php":26,"tags":27,"homepage":31,"download_link":32,"security_score":9,"vuln_count":22,"unpatched_count":22,"last_vuln_date":33,"fetched_at":34},"content-sectioner","Content Sectioner","1.0.0","\u003Cp>Most modern websites have pages that break the content into multiple sections, with changing background colors and graphics marking the breaks between sections.  In order for a page to be broken into sections, typically there needs to be additional markup within the HTML (ie. \u003Ccode>div\u003C\u002Fcode> tags) that can be targeted in the stylesheet for formatting.  However, most content authors don’t want to think about techie stuff like \u003Ccode>div\u003C\u002Fcode> tags, and prefer to work in the Visual editor which only provides for semantic markup (“Paragraph”, “Heading 1”, etc.).\u003C\u002Fp>\n\u003Cp>Content Sectioner takes advantage of WordPress’s content filtering mechanism and makes it easy for a theme developer to insert the necessary sectioning markup auto-magically while allowing content authors to still work as they prefer.  It looks for specified landmarks within the content (such as \u003Ccode>h3\u003C\u002Fcode> tags) and performs the necessary code insertions or replacements.  It does this using a concise and easy-to-use notation, relieving the theme developer from having to write (often repetitive) regular expressions and string manipulation.\u003C\u002Fp>\n\u003Ch4>A concrete example\u003C\u002Fh4>\n\u003Cp>Suppose you’re working on a site and you want the About page (with slug \u003Ccode>about\u003C\u002Fcode>) to have an inset in the middle of it with a blue background setting it apart.  The inset should contain the first occurence of a “Heading 3” and all the paragraphs up until just before the next “Heading 2”.  The stylesheet will apply the changing background to elements with the selector \u003Ccode>.inset\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Cp>Assuming your \u003Ccode>index.php\u003C\u002Fcode> file contains something like this:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003C?php\n\n  $current_slug = get_queried_object()->post_name;\n\n  get_template_part('content', $current_slug);\n\n?>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Then in the file \u003Ccode>content-about.php\u003C\u002Fcode>, you can set up the Content Sectioner like so:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003C?php\n\n  $sectioner = new ContentSectioner();\n\n  $sectioner->replace_first(\n    array(\n      'open_tag' => 'h3',\n      'open_insert' => '\u003Cdiv class=\"inset\">',\n      'open_policy' => 'before',\n      'close_tag' => 'h2',\n      'close_insert' => '\u003C\u002Fdiv>',\n      'close_policy' => 'before'\n    )\n  );\n\n  \u002F\u002F Do the usual Loop thing here...\n?>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>The About page (and only the About page) will have this inset section inserted.\u003C\u002Fp>\n\u003Cp>You can provide replacement rules that replace\u002Finsert at the first occurrence of a match, the next occurrence, all remaining occurrences, or all occurrences in the entire piece of content.  You can place the inserted HTML before or after a match, or replace the match.  Also, you can match a closing tag by simply providing the preceding slash character (eg. ‘\u002Fh2’).  Tag matches will match against any variant of a tag (upper or lowercase, with or without attributes, as an opening tag or as a self-closing tag like \u003Ccode>\u003Chr \u002F>\u003C\u002Fcode>).  In the rare case that something other than a tag needs to be matched, you can supply a raw regex instead of a tag.\u003C\u002Fp>\n\u003Ch4>Providing instructions\u003C\u002Fh4>\n\u003Cp>As the theme developer, you likely would want to let the content authors know that this magic insertion of sections will occur, and what landmarks need to be present in their content to trigger the sectioning.\u003C\u002Fp>\n\u003Cp>In some file in your theme that gets loaded for every page (most likely \u003Ccode>functions.php\u003C\u002Fcode>), you can provide such instructions along with the slug for the page to which the instructions apply.  The instructions will appear at the top of the Edit Page page in the admin.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>ContentSectioner::provide_instructions('about', \"\n  A blue background will be placed behind everything starting at the first Heading 3\n  through just before the next Heading 2.\");\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Full User Guide\u003C\u002Fh4>\n\u003Cp>For full documentation and more sample use cases, visit \u003Ca href=\"http:\u002F\u002Fwww.kirkbowers.com\u002Fplugins\u002Fcontent-sectioner\" rel=\"nofollow ugc\">the Content Sectioner homepage\u003C\u002Fa>.\u003C\u002Fp>\n","Content Sectioner is a developer plugin that makes it easy to insert formatting markup (div and img tags) into long pieces of content.",10,1641,0,"2016-09-03T21:02:00.000Z","4.6.30","3.1.0","",[28,29,30],"content-filtering","content-formatting","developer","http:\u002F\u002Fkirkbowers.com\u002Fplugins\u002Fcontent-sectioner","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fcontent-sectioner.zip",null,"2026-03-15T15:16:48.613Z",{"slug":36,"name":37,"version":38,"author":5,"author_profile":6,"description":39,"short_description":40,"active_installs":20,"downloaded":41,"rating":22,"num_ratings":22,"last_updated":42,"tested_up_to":43,"requires_at_least":25,"requires_php":26,"tags":44,"homepage":50,"download_link":51,"security_score":9,"vuln_count":22,"unpatched_count":22,"last_vuln_date":33,"fetched_at":34},"natural-contact-form","Natural Contact Form","1.1.0","\u003Cp>Natural Contact Form provides contact forms that are easy to create and use.  Unlike general purpose form generators, it focuses on one thing (contact forms) and does it well.\u003C\u002Fp>\n\u003Cp>Features include:\u003C\u002Fp>\n\u003Ch4>More Natural “Reply To”\u003C\u002Fh4>\n\u003Cp>Most WordPress plugins that generate input forms, especially those that are general purpose (not specialized to strictly “contact me” forms), typically send you an email from yourself (or some address in your domain like \u003Ccode>donotreply\u003C\u002Fcode>) and spew user’s input as key value pairs in the email body.  Something like:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>Name: Arthur Dent\nEmail: dent@example.com\nMessage: I seem to have misplaced my towel...\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>This makes replying to the message awkward.  Natural Contact Form does just one thing, contact forms, and does it in (as the name suggests) a more natural way.  The user’s name and email are set as the \u003Ccode>reply-to\u003C\u002Fcode> field in the email headers, and the email body is just the user’s message.\u003C\u002Fp>\n\u003Cp>This makes replying no different than it normally is when someone emails you directly.\u003C\u002Fp>\n\u003Ch4>Spam protection\u003C\u002Fh4>\n\u003Cp>Natural Contact Form has built in “Honey pot” spam protection.  If a bot fills in the hidden honey pot form field, you don’t receive the mail.\u003C\u002Fp>\n\u003Ch4>Unlimited contact forms for different parts of the site\u003C\u002Fh4>\n\u003Cp>Each contact form is configured separately in the WordPress dashboard.  In order to specify which form should appear on a given page in the site, the form’s ID is given to the plugin’s shortcode:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[natural-contact-form id=\"case-study\"]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Easy styling beyond what your theme may provide\u003C\u002Fh4>\n\u003Cp>Most themes do some degree of styling on text inputs.  However, they rarely put any whitespace between the different form fields, or have a way to highlight a field where an error occurred.  This plugin provides two ways to deal with that.\u003C\u002Fp>\n\u003Cp>One, if you aren’t a developer, there are options to easily size the contact form input fields, the space between them, and change the color to highlight them when a required field is left blank.  No coding necessary.\u003C\u002Fp>\n\u003Cp>Or two, if you are a developer or work with one, the plugin makes it easy to add arbitrary CSS to style each contact form individually.\u003C\u002Fp>\n\u003Ch4>Optional “Page Guard” disallows direct navigation to the “Thank you” page\u003C\u002Fh4>\n\u003Cp>Typically the “thank you” page displayed after a contact form is a regular WordPress “Page” that can be visited simply by typing in it’s URL directly into the browser address bar.  Usually this is harmless, but if you have something on a “thank you” page, like a lead magnet download, that you don’t want visitors to get to without actually providing their contact info, it can be a problem.  Plus, direct navigation to “thank you” pages can skew analytics.\u003C\u002Fp>\n\u003Cp>The “Page Guard” features allows you to require that a particular contact form be filled in successfully before displaying the guarded page.  If direct navigation is attempted, the visitor will either be shown a 404 or be bounced to a different page (likely the home or the contact page), depending on your settings.  Behind the scenes, this is handled with a cookie.  The contact form sets the cookie, and if the “thank you” page doesn’t find the required cookie, the visitor is redirected.\u003C\u002Fp>\n\u003Ch4>Optional integration with popular Email Service Providers\u003C\u002Fh4>\n\u003Cp>If you want to be contacted directly through an opt-in so you can follow up with new subscribers personally, contact forms can be configured to serve as both a “contact me” and an email list sign up.\u003C\u002Fp>\n\u003Cp>Currently MailChimp is supported.  Other email providers coming soon!\u003C\u002Fp>\n\u003Ch4>Best of all, it’s free!\u003C\u002Fh4>\n\u003Cp>General purpose form generators charge a premium for providing functionality you don’t need if all you need is a contact form.\u003C\u002Fp>\n\u003Ch4>Full User Guide\u003C\u002Fh4>\n\u003Cp>For a more detailed user guide, visit \u003Ca href=\"http:\u002F\u002Fwww.kirkbowers.com\u002Fplugins\u002Fnatural-contact-form\" rel=\"nofollow ugc\">the Natural Contact Form homepage\u003C\u002Fa>.\u003C\u002Fp>\n","Natural Contact Form provides contact forms that are easy to create and use.  The email messages you receive from your site's visitors are format &hellip;",1356,"2017-08-01T05:26:00.000Z","4.8.28",[45,46,47,48,49],"contact-form","email","mailchimp","page-guard","spam-protection","http:\u002F\u002Fwww.kirkbowers.com\u002Fplugins\u002Fnatural-contact-form\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fnatural-contact-form.zip"]