{"id":4440,"date":"2025-05-21T11:28:49","date_gmt":"2025-05-21T17:28:49","guid":{"rendered":"https:\/\/racmanuel.dev\/?page_id=4440"},"modified":"2026-07-27T15:48:53","modified_gmt":"2026-07-27T21:48:53","slug":"wp-framework","status":"publish","type":"page","link":"https:\/\/racmanuel.dev\/en\/wp-framework\/","title":{"rendered":"WordPress Plugin Boilerplate Generator with Frakt WP Framework"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Create production-ready WordPress plugins in seconds \u2014 no need to manually replace text strings or build your folder structure from scratch. This <strong>WordPress Plugin Boilerplate Generator<\/strong>, powered by the <strong>Frakt Framework<\/strong>, automates your plugin setup while following <strong>official WordPress coding standards<\/strong>, giving you a fully functional starting point for development.<\/p>\n\n\n\r\n<!-- Loading Overlay -->\r\n<div id=\"tkt-plugin-generator-overlay\" aria-hidden=\"true\">\r\n\t<div class=\"tkt-generator-loader-card\" role=\"status\" aria-live=\"polite\">\r\n\t\t<div class=\"tkt-generator-loader-content\">\r\n\t\t\t<div id=\"tkt-generator-overlay-text\" class=\"tkt-generator-overlay-text\">\r\n\t\t\t\tGenerating plugin...\t\t\t<\/div>\r\n\t\t\t<div id=\"tkt-generator-overlay-hint\" class=\"tkt-generator-overlay-hint\">\r\n\t\t\t\tThis may take a few seconds. Please do not reload the page.\t\t\t<\/div>\r\n\t\t\t<div class=\"tkt-generator-loader-track\" aria-hidden=\"true\">\r\n\t\t\t\t<span class=\"tkt-generator-loader-bar\"><\/span>\r\n\t\t\t<\/div>\r\n\t\t\t<p class=\"tkt-generator-loader-credit\">\r\n\t\t\t\tMade with Code and\t\t\t\t<svg class=\"tkt-generator-heart-icon\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\">\r\n\t\t\t\t\t<path d=\"M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78L12 21.23l8.84-8.84a5.5 5.5 0 0 0 0-7.78Z\"><\/path>\r\n\t\t\t\t<\/svg>\r\n\t\t\t\tby\t\t\t\t<a href=\"https:\/\/racmanuel.dev\/\" target=\"_blank\" rel=\"noopener noreferrer\">racmanuel.dev<\/a>\r\n\t\t\t<\/p>\r\n\t\t<\/div>\r\n\t<\/div>\r\n<\/div>\r\n\r\n<div class=\"tkt-generator-shell tkt-font-sans\">\r\n\t<header class=\"tkt-generator-intro\">\r\n\t\t<div class=\"tkt-generator-intro-copy\">\r\n\t\t\t<p class=\"tkt-generator-eyebrow\">Frakt WP Generator<\/p>\r\n\t\t\t<h2>Build your WordPress plugin faster<\/h2>\r\n\t\t\t<p>Turn your plugin idea into a clean, ready-to-customize WordPress foundation. This generator assembles the structure, metadata, modules, local CSS assets, and Composer configuration you choose.<\/p>\r\n\t\t<\/div>\r\n\r\n\t\t<article class=\"tkt-generator-plugin-preview\" aria-label=\"Live plugin preview\">\r\n\t\t\t<div class=\"tkt-generator-plugin-preview-header\">\r\n\t\t\t\t<span class=\"tkt-generator-plugin-preview-checkbox\" aria-hidden=\"true\"><\/span>\r\n\t\t\t\t<span>Plugin<\/span>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"tkt-generator-plugin-preview-body\">\r\n\t\t\t\t<div class=\"tkt-generator-plugin-preview-title\">\r\n\t\t\t\t\t<span class=\"tkt-generator-plugin-preview-checkbox\" aria-hidden=\"true\"><\/span>\r\n\t\t\t\t\t<h3 id=\"tkt-generator-preview-name\">WordPress Plugin Boilerplate<\/h3>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"tkt-generator-plugin-preview-actions\" aria-hidden=\"true\">\r\n\t\t\t\t\t<span class=\"tkt-generator-plugin-preview-activate\">Activate<\/span>\r\n\t\t\t\t\t<i aria-hidden=\"true\"><\/i>\r\n\t\t\t\t\t<span class=\"tkt-generator-plugin-preview-delete\">Delete<\/span>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<p id=\"tkt-generator-preview-description\">A short description of what the plugin does. It&#039;s displayed in the WordPress admin area.<\/p>\r\n\t\t\t\t<div class=\"tkt-generator-plugin-preview-meta\">\r\n\t\t\t\t\t<span>Version <strong id=\"tkt-generator-preview-version\">1.0.0<\/strong><\/span>\r\n\t\t\t\t\t<i aria-hidden=\"true\"><\/i>\r\n\t\t\t\t\t<span>By <strong id=\"tkt-generator-preview-author\">Your Name or Your Company<\/strong><\/span>\r\n\t\t\t\t\t<i aria-hidden=\"true\"><\/i>\r\n\t\t\t\t\t<span class=\"tkt-generator-plugin-preview-details\">View Details<\/span>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<span class=\"tkt-generator-plugin-preview-updates\" aria-hidden=\"true\">Enable auto-updates<\/span>\r\n\t\t\t<\/div>\r\n\t\t<\/article>\r\n\t<\/header>\r\n\r\n\t<nav id=\"tkt-plugin-generator-steps\" class=\"tkt-generator-steps\" aria-label=\"Generation progress\"><\/nav>\r\n\r\n\t<form id=\"tkt-plugin-generator-generator\" method=\"post\" data-wizard-form>\r\n\t<div class=\"form-input-container tkt-generator-welcome\" data-wizard-step=\"1\">\r\n\t\t<div class=\"tkt-generator-welcome-intro\">\r\n\t\t\t<p class=\"tkt-generator-welcome-eyebrow\">Start here<\/p>\r\n\t\t\t<h3>How the generator works<\/h3>\r\n\t\t\t<p>Use this wizard to create a personalized WordPress plugin scaffold without starting from an empty folder.<\/p>\r\n\t\t<\/div>\r\n\t\t<ol class=\"tkt-generator-welcome-list\">\r\n\t\t\t<li>\r\n\t\t\t\t<svg class=\"tkt-generator-ui-icon tkt-generator-welcome-icon\" data-icon=\"pencil\" aria-hidden=\"true\"><use href=\"\"><\/use><\/svg>\r\n\t\t\t\t<strong>Define your plugin<\/strong>\r\n\t\t\t\t<span>Enter the name and core metadata. Related values such as the slug, prefix, and description are completed automatically when possible.<\/span>\r\n\t\t\t<\/li>\r\n\t\t\t<li>\r\n\t\t\t\t<svg class=\"tkt-generator-ui-icon tkt-generator-welcome-icon\" data-icon=\"package\" aria-hidden=\"true\"><use href=\"\"><\/use><\/svg>\r\n\t\t\t\t<strong>Choose your foundation<\/strong>\r\n\t\t\t\t<span>Select the administration, public, translation, lifecycle, CSS, and other modules your plugin needs.<\/span>\r\n\t\t\t<\/li>\r\n\t\t\t<li>\r\n\t\t\t\t<svg class=\"tkt-generator-ui-icon tkt-generator-welcome-icon\" data-icon=\"wand-sparkles\" aria-hidden=\"true\"><use href=\"\"><\/use><\/svg>\r\n\t\t\t\t<strong>Add dependencies and build<\/strong>\r\n\t\t\t\t<span>Choose bundled Composer dependencies, review the generated file tree, and download your ZIP when everything looks right.<\/span>\r\n\t\t\t<\/li>\r\n\t\t<\/ol>\r\n\t\t<p class=\"tkt-generator-welcome-note\"><strong>Important:<\/strong> Composer dependencies are listed in composer.json, but the vendor folder is never included. Run Composer after extracting the ZIP.<\/p>\r\n\t<\/div>\r\n\t<div class=\"form-input-container\" data-wizard-step=\"1\">\r\n\t\t<label for=\"plugin_human\"> \r\n\t\t\tPlugin Human Name \r\n\t\t\t<svg xmlns=\"https:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-question-circle\" viewBox=\"0 0 16 16\"><path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"\/><path d=\"M5.255 5.786a.237.237 0 0 0 .241.247h.825c.138 0 .248-.113.266-.25.09-.656.54-1.134 1.342-1.134.686 0 1.314.343 1.314 1.168 0 .635-.374.927-.965 1.371-.673.489-1.206 1.06-1.168 1.987l.003.217a.25.25 0 0 0 .25.246h.811a.25.25 0 0 0 .25-.25v-.105c0-.718.273-.927 1.01-1.486.609-.463 1.244-.977 1.244-2.056 0-1.511-1.276-2.241-2.673-2.241-1.267 0-2.655.59-2.75 2.286zm1.557 5.763c0 .533.425.927 1.01.927.609 0 1.028-.394 1.028-.927 0-.552-.42-.94-1.029-.94-.584 0-1.009.388-1.009.94z\"\/>\r\n\t\t\t\t<title>The Human Readable plugin name (Used in Readme. Used only by WP Repo AND the codebase variable for $human_name, which is useful in menus and such. Different from Plugin Header Name, which MUST match the Text Domain).<\/title>\r\n\t\t\t<\/svg>\r\n\t\t<\/label>\r\n\t\t<input type=\"text\" id=\"plugin_human\" name=\"plugin_human\" placeholder=\"Plugin Human Name\" required>\r\n\t\t<small class=\"tkt-generator-autofill-hint\">\r\n\t\t\tThe name, slug, prefix, and related metadata will be completed automatically as you type.\t\t<\/small>\r\n\t<\/div>\r\n\t<div class=\"form-input-container\" data-wizard-step=\"1\">\r\n\t\t<label for=\"plugin_name\"> \r\n\t\t\tPlugin Name \r\n\t\t\t<svg xmlns=\"https:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-question-circle\" viewBox=\"0 0 16 16\"><path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"\/><path d=\"M5.255 5.786a.237.237 0 0 0 .241.247h.825c.138 0 .248-.113.266-.25.09-.656.54-1.134 1.342-1.134.686 0 1.314.343 1.314 1.168 0 .635-.374.927-.965 1.371-.673.489-1.206 1.06-1.168 1.987l.003.217a.25.25 0 0 0 .25.246h.811a.25.25 0 0 0 .25-.25v-.105c0-.718.273-.927 1.01-1.486.609-.463 1.244-.977 1.244-2.056 0-1.511-1.276-2.241-2.673-2.241-1.267 0-2.655.59-2.75 2.286zm1.557 5.763c0 .533.425.927 1.01.927.609 0 1.028-.394 1.028-.927 0-.552-.42-.94-1.029-.94-.584 0-1.009.388-1.009.94z\"\/>\r\n\t\t\t\t<title>The plugin name. This has to match with your Text Domain. For WP repo and codebase variable $human_name, use the &quot;Plugin Human Name&quot; field above.<\/title>\r\n\t\t\t<\/svg>\r\n\t\t<\/label>\r\n\t\t<input type=\"text\" id=\"plugin_name\" name=\"plugin_name\" placeholder=\"My Awesome Plugin\" required >\r\n\t\t<small class=\"tkt-generator-field-hint\">The official plugin name used in the main file header and text domain.<\/small>\r\n\t<\/div>\r\n\t<div class=\"form-input-container\" data-wizard-step=\"1\">\r\n\t\t<label for=\"plugin_slug\"> Plugin Slug\t\t\t<svg xmlns=\"https:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-question-circle\" viewBox=\"0 0 16 16\"><path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"\/><path d=\"M5.255 5.786a.237.237 0 0 0 .241.247h.825c.138 0 .248-.113.266-.25.09-.656.54-1.134 1.342-1.134.686 0 1.314.343 1.314 1.168 0 .635-.374.927-.965 1.371-.673.489-1.206 1.06-1.168 1.987l.003.217a.25.25 0 0 0 .25.246h.811a.25.25 0 0 0 .25-.25v-.105c0-.718.273-.927 1.01-1.486.609-.463 1.244-.977 1.244-2.056 0-1.511-1.276-2.241-2.673-2.241-1.267 0-2.655.59-2.75 2.286zm1.557 5.763c0 .533.425.927 1.01.927.609 0 1.028-.394 1.028-.927 0-.552-.42-.94-1.029-.94-.584 0-1.009.388-1.009.94z\"\/>\r\n\t\t\t\t<title>The plugin slug. Used for main folder, main file. Must be all lower case, latin letters. Use hyphens between words. No spaces. Eg &quot;plugin-slug&quot;. MUST match &quot;Plugin Name&quot; above (but spaces replaced by hyphens).<\/title>\r\n\t\t\t<\/svg>\r\n\t\t<\/label>\r\n\t\t<input type=\"text\" id=\"plugin_slug\" name=\"plugin_slug\" placeholder=\"my-awesome-plugin\" required>\r\n\t\t<small class=\"tkt-generator-field-hint\">Use lowercase letters and hyphens. This becomes the plugin folder, file prefix, and text domain.<\/small>\r\n\t<\/div>\r\n\t<div class=\"form-input-container\" data-wizard-step=\"1\">\r\n\t\t<label for=\"plugin_prefix\"> \r\n\t\t\tPlugin Prefix\t\t\t<svg xmlns=\"https:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-question-circle\" viewBox=\"0 0 16 16\"><path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"\/><path d=\"M5.255 5.786a.237.237 0 0 0 .241.247h.825c.138 0 .248-.113.266-.25.09-.656.54-1.134 1.342-1.134.686 0 1.314.343 1.314 1.168 0 .635-.374.927-.965 1.371-.673.489-1.206 1.06-1.168 1.987l.003.217a.25.25 0 0 0 .25.246h.811a.25.25 0 0 0 .25-.25v-.105c0-.718.273-.927 1.01-1.486.609-.463 1.244-.977 1.244-2.056 0-1.511-1.276-2.241-2.673-2.241-1.267 0-2.655.59-2.75 2.286zm1.557 5.763c0 .533.425.927 1.01.927.609 0 1.028-.394 1.028-.927 0-.552-.42-.94-1.029-.94-.584 0-1.009.388-1.009.94z\"\/>\r\n\t\t\t\t<title>The plugin Prefix. This will automatically receive an underscore(_) as suffix (end of value), so you do NOT need to add this. Example: &quot;m_prfx&quot; will become &quot;m_prfx_&quot;. Usually, use Plugin slug minus vocals, and change hyphens for underscores.<\/title>\r\n\t\t\t<\/svg>\r\n\t\t<\/label>\r\n\t\t<input type=\"text\" id=\"plugin_prefix\" name=\"plugin_prefix\" placeholder=\"my_wsm_plgn\" required>\r\n\t\t<small class=\"tkt-generator-field-hint\">A unique lowercase prefix for functions, hooks, classes, and constants. The generator adds the final underscore.<\/small>\r\n\t<\/div>\r\n\t<div class=\"form-input-container\" data-wizard-step=\"1\">\r\n\t\t<label for=\"plugin_version\"> \r\n\t\t\tPlugin Version \r\n\t\t\t<svg xmlns=\"https:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-question-circle\" viewBox=\"0 0 16 16\"><path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"\/><path d=\"M5.255 5.786a.237.237 0 0 0 .241.247h.825c.138 0 .248-.113.266-.25.09-.656.54-1.134 1.342-1.134.686 0 1.314.343 1.314 1.168 0 .635-.374.927-.965 1.371-.673.489-1.206 1.06-1.168 1.987l.003.217a.25.25 0 0 0 .25.246h.811a.25.25 0 0 0 .25-.25v-.105c0-.718.273-.927 1.01-1.486.609-.463 1.244-.977 1.244-2.056 0-1.511-1.276-2.241-2.673-2.241-1.267 0-2.655.59-2.75 2.286zm1.557 5.763c0 .533.425.927 1.01.927.609 0 1.028-.394 1.028-.927 0-.552-.42-.94-1.029-.94-.584 0-1.009.388-1.009.94z\"\/>\r\n\t\t\t\t<title>Plugin Vesrsion. Usually starts at 1.0.0. Use SemVer.<\/title>\r\n\t\t\t<\/svg>\r\n\t\t<\/label>\r\n\t\t<input type=\"text\" id=\"plugin_version\" name=\"plugin_version\" pattern=\"^[a-zA-Z0-9\\.]*$\" placeholder=\"1.0.0\" required >\r\n\t\t<small class=\"tkt-generator-field-hint\">The current release version of your plugin, following Semantic Versioning such as 1.0.0.<\/small>\r\n\t<\/div>\r\n\t<div class=\"form-input-container\" data-wizard-step=\"1\">\r\n\t\t<label for=\"plugin_stable\"> \r\n\t\t\tStable tag \r\n\t\t\t<svg xmlns=\"https:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-question-circle\" viewBox=\"0 0 16 16\"><path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"\/><path d=\"M5.255 5.786a.237.237 0 0 0 .241.247h.825c.138 0 .248-.113.266-.25.09-.656.54-1.134 1.342-1.134.686 0 1.314.343 1.314 1.168 0 .635-.374.927-.965 1.371-.673.489-1.206 1.06-1.168 1.987l.003.217a.25.25 0 0 0 .25.246h.811a.25.25 0 0 0 .25-.25v-.105c0-.718.273-.927 1.01-1.486.609-.463 1.244-.977 1.244-2.056 0-1.511-1.276-2.241-2.673-2.241-1.267 0-2.655.59-2.75 2.286zm1.557 5.763c0 .533.425.927 1.01.927.609 0 1.028-.394 1.028-.927 0-.552-.42-.94-1.029-.94-.584 0-1.009.388-1.009.94z\"\/>\r\n\t\t\t\t<title>The stable tag version of this plugin. Usually equal to version above.<\/title>\r\n\t\t\t<\/svg>\r\n\t\t<\/label>\r\n\t\t<input type=\"text\" id=\"plugin_stable\" name=\"plugin_stable\" placeholder=\"1.0.0\" required >\r\n\t\t<small class=\"tkt-generator-field-hint\">The stable release tag shown to WordPress.org users. Usually, it matches the plugin version.<\/small>\r\n\t<\/div>\r\n\t<div class=\"form-input-container\" data-wizard-step=\"2\">\r\n\t\t<label for=\"plugin_requires\"> \r\n\t\t\tRequires at least \r\n\t\t\t<svg xmlns=\"https:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-question-circle\" viewBox=\"0 0 16 16\"><path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"\/><path d=\"M5.255 5.786a.237.237 0 0 0 .241.247h.825c.138 0 .248-.113.266-.25.09-.656.54-1.134 1.342-1.134.686 0 1.314.343 1.314 1.168 0 .635-.374.927-.965 1.371-.673.489-1.206 1.06-1.168 1.987l.003.217a.25.25 0 0 0 .25.246h.811a.25.25 0 0 0 .25-.25v-.105c0-.718.273-.927 1.01-1.486.609-.463 1.244-.977 1.244-2.056 0-1.511-1.276-2.241-2.673-2.241-1.267 0-2.655.59-2.75 2.286zm1.557 5.763c0 .533.425.927 1.01.927.609 0 1.028-.394 1.028-.927 0-.552-.42-.94-1.029-.94-.584 0-1.009.388-1.009.94z\"\/>\r\n\t\t\t\t<title>What CP or WP version this plugin requires at least.<\/title>\r\n\t\t\t<\/svg>\r\n\t\t<\/label>\r\n\t\t<input type=\"text\" id=\"plugin_requires\" name=\"plugin_requires\" placeholder=\"1.0.0\" required >\r\n\t\t<small class=\"tkt-generator-field-hint\">The minimum WordPress version required for this plugin to work correctly.<\/small>\r\n\t<\/div>\r\n\t<div class=\"form-input-container\" data-wizard-step=\"2\">\r\n\t\t<label for=\"plugin_requires_php\"> \r\n\t\t\tRequires minimum PHP version \r\n\t\t\t<svg xmlns=\"https:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-question-circle\" viewBox=\"0 0 16 16\"><path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"\/><path d=\"M5.255 5.786a.237.237 0 0 0 .241.247h.825c.138 0 .248-.113.266-.25.09-.656.54-1.134 1.342-1.134.686 0 1.314.343 1.314 1.168 0 .635-.374.927-.965 1.371-.673.489-1.206 1.06-1.168 1.987l.003.217a.25.25 0 0 0 .25.246h.811a.25.25 0 0 0 .25-.25v-.105c0-.718.273-.927 1.01-1.486.609-.463 1.244-.977 1.244-2.056 0-1.511-1.276-2.241-2.673-2.241-1.267 0-2.655.59-2.75 2.286zm1.557 5.763c0 .533.425.927 1.01.927.609 0 1.028-.394 1.028-.927 0-.552-.42-.94-1.029-.94-.584 0-1.009.388-1.009.94z\"\/>\r\n\t\t\t\t<title>What PHP version this plugin requires at least.<\/title>\r\n\t\t\t<\/svg>\r\n\t\t<\/label>\r\n\t\t<input type=\"text\" id=\"plugin_requires_php\" name=\"plugin_requires_php\" placeholder=\"7.0.0\" required >\r\n\t\t<small class=\"tkt-generator-field-hint\">The minimum PHP version supported by your plugin code and dependencies.<\/small>\r\n\t<\/div>\r\n\t<div class=\"form-input-container\" data-wizard-step=\"2\">\r\n\t\t<label for=\"plugin_tested\"> \r\n\t\t\tTested up to \r\n\t\t\t<svg xmlns=\"https:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-question-circle\" viewBox=\"0 0 16 16\"><path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"\/><path d=\"M5.255 5.786a.237.237 0 0 0 .241.247h.825c.138 0 .248-.113.266-.25.09-.656.54-1.134 1.342-1.134.686 0 1.314.343 1.314 1.168 0 .635-.374.927-.965 1.371-.673.489-1.206 1.06-1.168 1.987l.003.217a.25.25 0 0 0 .25.246h.811a.25.25 0 0 0 .25-.25v-.105c0-.718.273-.927 1.01-1.486.609-.463 1.244-.977 1.244-2.056 0-1.511-1.276-2.241-2.673-2.241-1.267 0-2.655.59-2.75 2.286zm1.557 5.763c0 .533.425.927 1.01.927.609 0 1.028-.394 1.028-.927 0-.552-.42-.94-1.029-.94-.584 0-1.009.388-1.009.94z\"\/>\r\n\t\t\t\t<title>This Plugin was tested up to CP or WP version ...<\/title>\r\n\t\t\t<\/svg>\r\n\t\t<\/label>\r\n\t\t<input type=\"text\" id=\"plugin_tested\" name=\"plugin_tested\" placeholder=\"4.9.99\" required >\r\n\t\t<small class=\"tkt-generator-field-hint\">The latest WordPress version you have tested the plugin with.<\/small>\r\n\t<\/div>\r\n\t<div class=\"form-input-container\" data-wizard-step=\"1\">\r\n\t\t<label for=\"plugin_tags\"> \r\n\t\t\tPlugin Tags \r\n\t\t\t<svg xmlns=\"https:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-question-circle\" viewBox=\"0 0 16 16\"><path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"\/><path d=\"M5.255 5.786a.237.237 0 0 0 .241.247h.825c.138 0 .248-.113.266-.25.09-.656.54-1.134 1.342-1.134.686 0 1.314.343 1.314 1.168 0 .635-.374.927-.965 1.371-.673.489-1.206 1.06-1.168 1.987l.003.217a.25.25 0 0 0 .25.246h.811a.25.25 0 0 0 .25-.25v-.105c0-.718.273-.927 1.01-1.486.609-.463 1.244-.977 1.244-2.056 0-1.511-1.276-2.241-2.673-2.241-1.267 0-2.655.59-2.75 2.286zm1.557 5.763c0 .533.425.927 1.01.927.609 0 1.028-.394 1.028-.927 0-.552-.42-.94-1.029-.94-.584 0-1.009.388-1.009.94z\"\/>\r\n\t\t\t\t<title>Comma delimited, valid Plugin Tags<\/title>\r\n\t\t\t<\/svg>\r\n\t\t<\/label>\r\n\t\t<input type=\"text\" id=\"plugin_tags\" name=\"plugin_tags\" placeholder=\"comments, spam\" required >\r\n\t\t<small class=\"tkt-generator-field-hint\">Comma-separated keywords that describe your plugin. Use relevant terms only.<\/small>\r\n\t<\/div>\r\n\t<div class=\"form-input-container\" data-wizard-step=\"1\">\r\n\t\t<label for=\"plugin_description\" style=\"min-width: fit-content;\"> \r\n\t\t\tPlugin Description \r\n\t\t\t<svg xmlns=\"https:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-question-circle\" viewBox=\"0 0 16 16\"><path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"\/><path d=\"M5.255 5.786a.237.237 0 0 0 .241.247h.825c.138 0 .248-.113.266-.25.09-.656.54-1.134 1.342-1.134.686 0 1.314.343 1.314 1.168 0 .635-.374.927-.965 1.371-.673.489-1.206 1.06-1.168 1.987l.003.217a.25.25 0 0 0 .25.246h.811a.25.25 0 0 0 .25-.25v-.105c0-.718.273-.927 1.01-1.486.609-.463 1.244-.977 1.244-2.056 0-1.511-1.276-2.241-2.673-2.241-1.267 0-2.655.59-2.75 2.286zm1.557 5.763c0 .533.425.927 1.01.927.609 0 1.028-.394 1.028-.927 0-.552-.42-.94-1.029-.94-.584 0-1.009.388-1.009.94z\"\/>\r\n\t\t\t\t<title>A short Plugin Description (shown in the WP Plugins area).<\/title>\r\n\t\t\t<\/svg>\r\n\t\t<\/label>\r\n\t\t<textarea name=\"plugin_description\" id=\"plugin_description\" rows=\"3\" cols=\"43\" required>A Short Plugin description. Keep it to the point.<\/textarea>\r\n\t\t<small class=\"tkt-generator-field-hint\">A short summary displayed in the WordPress Plugins screen. Explain the main benefit in one or two sentences.<\/small>\r\n\t<\/div>\r\n\t<div class=\"form-input-container\" data-wizard-step=\"1\">\r\n\t\t<label for=\"plugin_uri\"> \r\n\t\t\tPlugin URL \r\n\t\t\t<svg xmlns=\"https:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-question-circle\" viewBox=\"0 0 16 16\"><path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"\/><path d=\"M5.255 5.786a.237.237 0 0 0 .241.247h.825c.138 0 .248-.113.266-.25.09-.656.54-1.134 1.342-1.134.686 0 1.314.343 1.314 1.168 0 .635-.374.927-.965 1.371-.673.489-1.206 1.06-1.168 1.987l.003.217a.25.25 0 0 0 .25.246h.811a.25.25 0 0 0 .25-.25v-.105c0-.718.273-.927 1.01-1.486.609-.463 1.244-.977 1.244-2.056 0-1.511-1.276-2.241-2.673-2.241-1.267 0-2.655.59-2.75 2.286zm1.557 5.763c0 .533.425.927 1.01.927.609 0 1.028-.394 1.028-.927 0-.552-.42-.94-1.029-.94-.584 0-1.009.388-1.009.94z\"\/>\r\n\t\t\t\t<title>The plugin URL, i.g. where the Plugin is hosted, or its author\\s domain.<\/title>\r\n\t\t\t<\/svg>\r\n\t\t<\/label>\r\n\t\t<input type=\"url\" id=\"plugin_uri\" name=\"plugin_uri\" placeholder=\"https:\/\/www.domain.tld\/plugin-name\" required >\r\n\t\t<small class=\"tkt-generator-field-hint\">The public URL for this plugin, such as its documentation, homepage, or repository.<\/small>\r\n\t<\/div>\r\n\t<div class=\"form-input-container\" data-wizard-step=\"2\">\r\n\t\t<label for=\"author\"> \r\n\t\t\tAuthor Name\t\t\t<svg xmlns=\"https:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-question-circle\" viewBox=\"0 0 16 16\"><path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"\/><path d=\"M5.255 5.786a.237.237 0 0 0 .241.247h.825c.138 0 .248-.113.266-.25.09-.656.54-1.134 1.342-1.134.686 0 1.314.343 1.314 1.168 0 .635-.374.927-.965 1.371-.673.489-1.206 1.06-1.168 1.987l.003.217a.25.25 0 0 0 .25.246h.811a.25.25 0 0 0 .25-.25v-.105c0-.718.273-.927 1.01-1.486.609-.463 1.244-.977 1.244-2.056 0-1.511-1.276-2.241-2.673-2.241-1.267 0-2.655.59-2.75 2.286zm1.557 5.763c0 .533.425.927 1.01.927.609 0 1.028-.394 1.028-.927 0-.552-.42-.94-1.029-.94-.584 0-1.009.388-1.009.94z\"\/>\r\n\t\t\t\t<title>The author or company name, example &quot;wp_username&quot;<\/title>\r\n\t\t\t<\/svg>\r\n\t\t<\/label>\r\n\t\t<input type=\"text\" id=\"author\" name=\"author\" placeholder=\"wp-or-cp-username\" required>\r\n\t\t<small class=\"tkt-generator-field-hint\">The person, team, or company credited as the plugin author.<\/small>\r\n\t<\/div>\r\n\t<div class=\"form-input-container\" data-wizard-step=\"2\">\r\n\t\t<label for=\"author_uri\"> \r\n\t\t\tAuthor URL \r\n\t\t\t<svg xmlns=\"https:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-question-circle\" viewBox=\"0 0 16 16\"><path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"\/><path d=\"M5.255 5.786a.237.237 0 0 0 .241.247h.825c.138 0 .248-.113.266-.25.09-.656.54-1.134 1.342-1.134.686 0 1.314.343 1.314 1.168 0 .635-.374.927-.965 1.371-.673.489-1.206 1.06-1.168 1.987l.003.217a.25.25 0 0 0 .25.246h.811a.25.25 0 0 0 .25-.25v-.105c0-.718.273-.927 1.01-1.486.609-.463 1.244-.977 1.244-2.056 0-1.511-1.276-2.241-2.673-2.241-1.267 0-2.655.59-2.75 2.286zm1.557 5.763c0 .533.425.927 1.01.927.609 0 1.028-.394 1.028-.927 0-.552-.42-.94-1.029-.94-.584 0-1.009.388-1.009.94z\"\/>\r\n\t\t\t\t<title>The author URL, i.g. where the Plugin is hosted, or its author\\s domain.<\/title>\r\n\t\t\t<\/svg>\r\n\t\t<\/label>\r\n\t\t<input type=\"url\" id=\"author_uri\" name=\"author_uri\" placeholder=\"https:\/\/www.domain.tld\/\" required >\r\n\t\t<small class=\"tkt-generator-field-hint\">The author or company website shown in the plugin metadata.<\/small>\r\n\t<\/div>\r\n\t<div class=\"form-input-container\" data-wizard-step=\"2\">\r\n\t\t<label for=\"author_email\"> \r\n\t\t\tAuthor Email\t\t\t<svg xmlns=\"https:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-question-circle\" viewBox=\"0 0 16 16\"><path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"\/><path d=\"M5.255 5.786a.237.237 0 0 0 .241.247h.825c.138 0 .248-.113.266-.25.09-.656.54-1.134 1.342-1.134.686 0 1.314.343 1.314 1.168 0 .635-.374.927-.965 1.371-.673.489-1.206 1.06-1.168 1.987l.003.217a.25.25 0 0 0 .25.246h.811a.25.25 0 0 0 .25-.25v-.105c0-.718.273-.927 1.01-1.486.609-.463 1.244-.977 1.244-2.056 0-1.511-1.276-2.241-2.673-2.241-1.267 0-2.655.59-2.75 2.286zm1.557 5.763c0 .533.425.927 1.01.927.609 0 1.028-.394 1.028-.927 0-.552-.42-.94-1.029-.94-.584 0-1.009.388-1.009.94z\"\/>\r\n\t\t\t\t<title>The author or company email.<\/title>\r\n\t\t\t<\/svg>\r\n\t\t<\/label>\r\n\t\t<input type=\"email\" id=\"author_email\" name=\"author_email\" placeholder=\"name@domain.tld\" required>\r\n\t\t<small class=\"tkt-generator-field-hint\">A valid contact email for the plugin author or support team.<\/small>\r\n\t<\/div>\r\n\t<div class=\"form-input-container\" data-wizard-step=\"2\">\r\n\t\t<label for=\"donate_link\"> \r\n\t\t\tDonate Link \r\n\t\t\t<svg xmlns=\"https:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-question-circle\" viewBox=\"0 0 16 16\"><path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"\/><path d=\"M5.255 5.786a.237.237 0 0 0 .241.247h.825c.138 0 .248-.113.266-.25.09-.656.54-1.134 1.342-1.134.686 0 1.314.343 1.314 1.168 0 .635-.374.927-.965 1.371-.673.489-1.206 1.06-1.168 1.987l.003.217a.25.25 0 0 0 .25.246h.811a.25.25 0 0 0 .25-.25v-.105c0-.718.273-.927 1.01-1.486.609-.463 1.244-.977 1.244-2.056 0-1.511-1.276-2.241-2.673-2.241-1.267 0-2.655.59-2.75 2.286zm1.557 5.763c0 .533.425.927 1.01.927.609 0 1.028-.394 1.028-.927 0-.552-.42-.94-1.029-.94-.584 0-1.009.388-1.009.94z\"\/>\r\n\t\t\t\t<title>The Donate link of this plugin if any<\/title>\r\n\t\t\t<\/svg>\r\n\t\t<\/label>\r\n\t\t<input type=\"url\" id=\"donate_link\" name=\"donate_link\" placeholder=\"https:\/\/domain.tld\/donate\">\r\n\t\t<small class=\"tkt-generator-field-hint\">Optional: a URL where users can support the plugin financially.<\/small>\r\n\t<\/div>\r\n\r\n\t<div class=\"form-input-container tkt-generator-architecture\" data-wizard-step=\"3\">\r\n\t\t<label for=\"architecture_type\">Base structure<\/label>\r\n\t\t<select id=\"architecture_type\" name=\"architecture_type\">\r\n\t\t\t<option value=\"classic\">Frakt classic<\/option>\r\n\t\t<\/select>\r\n\t\t<small class=\"tkt-generator-field-hint\">Select the folder and class organization used by the generated plugin. More architectures may be added later.<\/small>\r\n\t\t<p class=\"tkt-generator-field-hint\">\r\n\t\t\tThe classic structure is the stable option currently available.\t\t<\/p>\r\n\r\n\t\t<label for=\"include_admin\">\r\n\t\t\t<input type=\"checkbox\" id=\"include_admin\" name=\"include_admin\" value=\"1\" checked>\r\n\t\t\t<span class=\"tkt-generator-module-copy\">\r\n\t\t\t\t<strong>Administration module<\/strong>\r\n\t\t\t\t<small>Adds the WordPress admin class, styles, scripts, and screen integration.<\/small>\r\n\t\t\t<\/span>\r\n\t\t<\/label>\r\n\r\n\t\t<label for=\"include_public\">\r\n\t\t\t<input type=\"checkbox\" id=\"include_public\" name=\"include_public\" value=\"1\" checked>\r\n\t\t\t<span class=\"tkt-generator-module-copy\">\r\n\t\t\t\t<strong>Public module<\/strong>\r\n\t\t\t\t<small>Adds frontend hooks, styles, scripts, and public-facing functionality.<\/small>\r\n\t\t\t<\/span>\r\n\t\t<\/label>\r\n\r\n\t\t<label for=\"include_shortcode\">\r\n\t\t\t<input type=\"checkbox\" id=\"include_shortcode\" name=\"include_shortcode\" value=\"1\" checked>\r\n\t\t\t<span class=\"tkt-generator-module-copy\">\r\n\t\t\t\t<strong>Example shortcode<\/strong>\r\n\t\t\t\t<small>Adds a sample shortcode and its public display template.<\/small>\r\n\t\t\t<\/span>\r\n\t\t<\/label>\r\n\r\n\t\t<label for=\"include_i18n\">\r\n\t\t\t<input type=\"checkbox\" id=\"include_i18n\" name=\"include_i18n\" value=\"1\" checked>\r\n\t\t\t<span class=\"tkt-generator-module-copy\">\r\n\t\t\t\t<strong>Internationalization loader<\/strong>\r\n\t\t\t\t<small>Adds translation support and the plugin language file.<\/small>\r\n\t\t\t<\/span>\r\n\t\t<\/label>\r\n\r\n\t\t<label for=\"include_lifecycle\">\r\n\t\t\t<input type=\"checkbox\" id=\"include_lifecycle\" name=\"include_lifecycle\" value=\"1\" checked>\r\n\t\t\t<span class=\"tkt-generator-module-copy\">\r\n\t\t\t\t<strong>Activation and deactivation hooks<\/strong>\r\n\t\t\t\t<small>Adds lifecycle callbacks for plugin setup and cleanup.<\/small>\r\n\t\t\t<\/span>\r\n\t\t<\/label>\r\n\r\n\t\t<label for=\"include_uninstall\">\r\n\t\t\t<input type=\"checkbox\" id=\"include_uninstall\" name=\"include_uninstall\" value=\"1\" checked>\r\n\t\t\t<span class=\"tkt-generator-module-copy\">\r\n\t\t\t\t<strong>Uninstall file<\/strong>\r\n\t\t\t\t<small>Adds a secure uninstall routine for removing plugin data.<\/small>\r\n\t\t\t<\/span>\r\n\t\t<\/label>\r\n\r\n\t\t<hr class=\"tkt-generator-divider\">\r\n\r\n\t\t<p><strong>CSS framework<\/strong><\/p>\r\n\t\t<p class=\"tkt-generator-field-hint\">\r\n\t\t\tChoose the CSS toolkit for the generated plugin. Assets are kept local and only loaded in the context you select.\t\t<\/p>\r\n\t\t<div class=\"tkt-generator-choice-grid\" role=\"radiogroup\" aria-label=\"CSS framework\">\r\n\t\t\t<label class=\"tkt-generator-choice-card\" for=\"css_framework_vanilla\">\r\n\t\t\t\t<input type=\"radio\" id=\"css_framework_vanilla\" name=\"css_framework\" value=\"vanilla\" checked>\r\n\t\t\t\t<span><strong>Only CSS<\/strong><small>Use your own CSS only. No framework asset is added.<\/small><\/span>\r\n\t\t\t<\/label>\r\n\t\t\t<label class=\"tkt-generator-choice-card\" for=\"css_framework_tailwind\">\r\n\t\t\t\t<input type=\"radio\" id=\"css_framework_tailwind\" name=\"css_framework\" value=\"tailwind\">\r\n\t\t\t\t<span><strong>Tailwind CSS<\/strong><small>Prefixed utility classes, compiled locally.<\/small><\/span>\r\n\t\t\t<\/label>\r\n\t\t\t<label class=\"tkt-generator-choice-card\" for=\"css_framework_bootstrap\">\r\n\t\t\t\t<input type=\"radio\" id=\"css_framework_bootstrap\" name=\"css_framework\" value=\"bootstrap\">\r\n\t\t\t\t<span><strong>Bootstrap 5 CSS<\/strong><small>CSS components only; no Bootstrap JavaScript.<\/small><\/span>\r\n\t\t\t<\/label>\r\n\t\t\t<label class=\"tkt-generator-choice-card\" for=\"css_framework_bulma\">\r\n\t\t\t\t<input type=\"radio\" id=\"css_framework_bulma\" name=\"css_framework\" value=\"bulma\">\r\n\t\t\t\t<span><strong>Bulma<\/strong><small>Responsive CSS components without JavaScript.<\/small><\/span>\r\n\t\t\t<\/label>\r\n\t\t<\/div>\r\n\r\n\t\t<div class=\"tkt-generator-css-location\" hidden>\r\n\t\t\t<p><strong>Load CSS in<\/strong><\/p>\r\n\t\t\t<div class=\"tkt-generator-choice-grid tkt-generator-choice-grid--compact\" role=\"radiogroup\" aria-label=\"CSS loading location\">\r\n\t\t\t<label class=\"tkt-generator-choice-card\" for=\"css_enqueue_location_frontend\">\r\n\t\t\t\t<input type=\"radio\" id=\"css_enqueue_location_frontend\" name=\"css_enqueue_location\" value=\"frontend\">\r\n\t\t\t\t<span><strong>Frontend<\/strong><small>Public-facing pages only.<\/small><\/span>\r\n\t\t\t<\/label>\r\n\t\t\t<label class=\"tkt-generator-choice-card\" for=\"css_enqueue_location_admin\">\r\n\t\t\t\t<input type=\"radio\" id=\"css_enqueue_location_admin\" name=\"css_enqueue_location\" value=\"admin\">\r\n\t\t\t\t<span><strong>Administration<\/strong><small>Only the plugin admin screens.<\/small><\/span>\r\n\t\t\t<\/label>\r\n\t\t\t<label class=\"tkt-generator-choice-card\" for=\"css_enqueue_location_both\">\r\n\t\t\t\t<input type=\"radio\" id=\"css_enqueue_location_both\" name=\"css_enqueue_location\" value=\"both\" checked>\r\n\t\t\t\t<span><strong>Both<\/strong><small>Frontend and plugin administration.<\/small><\/span>\r\n\t\t\t<\/label>\r\n\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t<\/div>\r\n\r\n\t<div class=\"form-input-container tkt-generator-dependencies\" data-wizard-step=\"4\">\r\n        <p><strong>Include Plugins<\/strong><\/p>\r\n        <p class=\"tkt-generator-composer-notice\">\r\n            Selected dependencies will be added to composer.json, but will not be included in the ZIP. You must run Composer before activating the plugin.        <\/p>\r\n        \r\n        <label for=\"include_acf\">\r\n            <input type=\"checkbox\" id=\"include_acf\" name=\"include_acf\" value=\"1\" checked>\r\n\t\t\t<span class=\"tkt-generator-module-copy\">\r\n\t\t\t\t<strong>Secure Custom Fields (ACF)<\/strong>\r\n\t\t\t\t<small>Provides custom fields and field group management for WordPress content.<\/small>\r\n\t\t\t<\/span>\r\n\t\t<\/label>\r\n\r\n        <label for=\"include_qm\">\r\n            <input type=\"checkbox\" id=\"include_qm\" name=\"include_qm\" value=\"1\" checked>\r\n\t\t\t<span class=\"tkt-generator-module-copy\">\r\n\t\t\t\t<strong>Query Monitor<\/strong>\r\n\t\t\t\t<small>Adds developer tools for inspecting queries, hooks, HTTP requests, and performance.<\/small>\r\n\t\t\t<\/span>\r\n\t\t<\/label>\r\n\r\n        <label for=\"include_wpc\">\r\n            <input type=\"checkbox\" id=\"include_wpc\" name=\"include_wpc\" value=\"1\" checked>\r\n\t\t\t<span class=\"tkt-generator-module-copy\">\r\n\t\t\t\t<strong>WP Crontrol<\/strong>\r\n\t\t\t\t<small>Lets you inspect, run, and manage scheduled WordPress cron events.<\/small>\r\n\t\t\t<\/span>\r\n\t\t<\/label>\r\n\r\n        <label for=\"include_us\">\r\n            <input type=\"checkbox\" id=\"include_us\" name=\"include_us\" value=\"1\" checked>\r\n\t\t\t<span class=\"tkt-generator-module-copy\">\r\n\t\t\t\t<strong>User Switching<\/strong>\r\n\t\t\t\t<small>Allows administrators to switch user sessions for testing permissions and workflows.<\/small>\r\n\t\t\t<\/span>\r\n\t\t<\/label>\r\n\r\n        <label for=\"include_pc\">\r\n            <input type=\"checkbox\" id=\"include_pc\" name=\"include_pc\" value=\"1\" checked>\r\n\t\t\t<span class=\"tkt-generator-module-copy\">\r\n\t\t\t\t<strong>Plugin Check<\/strong>\r\n\t\t\t\t<small>Checks plugin code for WordPress coding standards and compatibility issues.<\/small>\r\n\t\t\t<\/span>\r\n\t\t<\/label>\r\n\r\n        <label for=\"include_tm\">\r\n            <input type=\"checkbox\" id=\"include_tm\" name=\"include_tm\" value=\"1\" checked>\r\n\t\t\t<span class=\"tkt-generator-module-copy\">\r\n\t\t\t\t<strong>Transients Manager<\/strong>\r\n\t\t\t\t<small>Provides tools for viewing and deleting temporary WordPress transients.<\/small>\r\n\t\t\t<\/span>\r\n\t\t<\/label>\r\n\r\n        <label for=\"include_jwt\">\r\n            <input type=\"checkbox\" id=\"include_jwt\" name=\"include_jwt\" value=\"1\" checked>\r\n\t\t\t<span class=\"tkt-generator-module-copy\">\r\n\t\t\t\t<strong>JWT Authentication for WP REST API<\/strong>\r\n\t\t\t\t<small>Adds JSON Web Token authentication for decoupled WordPress REST API clients.<\/small>\r\n\t\t\t<\/span>\r\n        <\/label>\r\n\r\n        <hr class=\"tkt-generator-divider\">\r\n\r\n        <p><strong>Search &amp; Add More Plugins<\/strong><\/p>\r\n        <p class=\"tkt-generator-composer-notice\">\r\n            Search any plugin from WordPress.org and add it as a Composer dependency via WP Packages. Added plugins will appear in the generated composer.json.        <\/p>\r\n\r\n        <div class=\"tkt-package-search-wrapper\">\r\n\t\t\t<svg class=\"tkt-generator-ui-icon tkt-package-search-icon\" data-icon=\"search\" aria-hidden=\"true\"><use href=\"\"><\/use><\/svg>\r\n            <input\r\n                type=\"search\"\r\n                id=\"tkt-package-search\"\r\n                class=\"tkt-package-search-input\"\r\n                placeholder=\"Search WordPress plugins...\"\r\n                autocomplete=\"off\"\r\n            >\r\n            <span id=\"tkt-package-search-spinner\" class=\"tkt-package-search-spinner\" hidden><\/span>\r\n        <\/div>\r\n\t\t<small class=\"tkt-generator-field-hint\">Search the official WordPress.org directory and add a plugin as a WP Packages Composer dependency.<\/small>\r\n\r\n        <p id=\"tkt-package-search-status\" class=\"tkt-package-search-status\" hidden><\/p>\r\n\r\n        <div id=\"tkt-package-search-results\" class=\"tkt-package-grid\"><\/div>\r\n\r\n        <div id=\"tkt-package-selected\" class=\"tkt-package-chips\"><\/div>\r\n\r\n        <input type=\"hidden\" name=\"custom_dependencies\" id=\"tkt-custom-deps\" value=\"[]\">\r\n    <\/div>\r\n\t<div class=\"form-input-container tkt-generator-review\" data-wizard-step=\"5\">\r\n\t\t<div id=\"tkt-plugin-generator-review\" aria-live=\"polite\"><\/div>\r\n\t\t<section class=\"tkt-generator-preview\" aria-labelledby=\"tkt-generator-preview-title\">\r\n\t\t\t<div class=\"tkt-generator-preview-heading\">\r\n\t\t\t\t<div>\r\n\t\t\t\t\t<p class=\"tkt-generator-preview-eyebrow\">Before you build<\/p>\r\n\t\t\t\t\t<h3 id=\"tkt-generator-preview-title\">Generated plugin preview<\/h3>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<span id=\"tkt-generator-preview-count\" class=\"tkt-generator-preview-count\"><\/span>\r\n\t\t\t<\/div>\r\n\t\t\t<div id=\"tkt-generator-preview-tree\" class=\"tkt-generator-preview-tree\" aria-live=\"polite\"><\/div>\r\n\t\t\t<p id=\"tkt-generator-preview-note\" class=\"tkt-generator-preview-note\">\r\n\t\t\t\tThis is an estimate based on your selections. The vendor directory is never included in the generated ZIP.\t\t\t<\/p>\r\n\t\t<\/section>\r\n\t<\/div>\r\n\t<div class=\"form-input-container\" data-wizard-step=\"5\">\r\n\t\t<button id=\"tkt-plugin-generator-generator-submit\" data-icon=\"wand-sparkles\" type=\"submit\" value=\"tkt_plugin_generator_submit\" name=\"tkt_plugin_generator_submit\"> Generate <\/button>\r\n\t<\/div>\r\n\t<input type=\"hidden\" id=\"generate_plugin_nonce\" name=\"generate_plugin_nonce\" value=\"aecdaf9b50\" \/><input type=\"hidden\" name=\"_wp_http_referer\" value=\"\/en\/wp-json\/wp\/v2\/pages\/4440\" \/>\t<\/form>\r\n\r\n\t<div id=\"tkt-plugin-generator-result\" class=\"tkt-generator-result\" hidden aria-live=\"polite\"><\/div>\r\n\r\n\t<p class=\"tkt-generator-signature\">\r\n\t\tMade with Code and\t\t<svg class=\"tkt-generator-heart-icon\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\">\r\n\t\t\t<path d=\"M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78L12 21.23l8.84-8.84a5.5 5.5 0 0 0 0-7.78Z\"><\/path>\r\n\t\t<\/svg>\r\n\t\tby\t\t<a href=\"https:\/\/racmanuel.dev\/\" target=\"_blank\" rel=\"noopener noreferrer\">racmanuel.dev<\/a>\r\n\t<\/p>\r\n<\/div>\r\n\r\n\n","protected":false},"excerpt":{"rendered":"<p>Create production-ready WordPress plugins in seconds \u2014 no need to manually replace text strings or build your folder structure from scratch. This WordPress Plugin Boilerplate Generator, powered by the Frakt Framework, automates your plugin setup while following official WordPress coding standards, giving you a fully functional starting point for development.<\/p>","protected":false},"author":1,"featured_media":4451,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_gspb_post_css":"","_glsr_average":0,"_glsr_ranking":0,"_glsr_reviews":0,"footnotes":""},"class_list":["post-4440","page","type-page","status-publish","has-post-thumbnail","hentry"],"blocksy_meta":{"has_hero_section":"disabled","styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":8}},"acf":[],"_links":{"self":[{"href":"https:\/\/racmanuel.dev\/en\/wp-json\/wp\/v2\/pages\/4440","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/racmanuel.dev\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/racmanuel.dev\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/racmanuel.dev\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/racmanuel.dev\/en\/wp-json\/wp\/v2\/comments?post=4440"}],"version-history":[{"count":8,"href":"https:\/\/racmanuel.dev\/en\/wp-json\/wp\/v2\/pages\/4440\/revisions"}],"predecessor-version":[{"id":5221,"href":"https:\/\/racmanuel.dev\/en\/wp-json\/wp\/v2\/pages\/4440\/revisions\/5221"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/racmanuel.dev\/en\/wp-json\/wp\/v2\/media\/4451"}],"wp:attachment":[{"href":"https:\/\/racmanuel.dev\/en\/wp-json\/wp\/v2\/media?parent=4440"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}