From b0ddaa07d11f98aca1c2ab88579da304aa0d70ac Mon Sep 17 00:00:00 2001 From: Rima1889 Date: Thu, 19 Feb 2026 18:16:36 +0530 Subject: [PATCH 1/2] plugin: Dynamic CPT & Taxonomy Generator --- .../Screenshot.png | Bin 0 -> 61289 bytes .../dynamic-cpt-and-tax-generator/admin.js | 7 + .../blueprint.json | 35 +++ .../dynamic-cpt-and-tax-generator.php | 221 ++++++++++++++++++ 4 files changed, 263 insertions(+) create mode 100644 blueprints/dynamic-cpt-and-tax-generator/Screenshot.png create mode 100644 blueprints/dynamic-cpt-and-tax-generator/admin.js create mode 100644 blueprints/dynamic-cpt-and-tax-generator/blueprint.json create mode 100644 blueprints/dynamic-cpt-and-tax-generator/dynamic-cpt-and-tax-generator.php diff --git a/blueprints/dynamic-cpt-and-tax-generator/Screenshot.png b/blueprints/dynamic-cpt-and-tax-generator/Screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..bf947f5cdcf9427777908fb4da0443dc2e7041ae GIT binary patch literal 61289 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 literal 0 HcmV?d00001 diff --git a/blueprints/dynamic-cpt-and-tax-generator/admin.js b/blueprints/dynamic-cpt-and-tax-generator/admin.js new file mode 100644 index 00000000..844de275 --- /dev/null +++ b/blueprints/dynamic-cpt-and-tax-generator/admin.js @@ -0,0 +1,7 @@ +jQuery(document).ready(function($){ + $('#dcpt_action').change(function(){ + $('#new_cpt_fields, #add_taxonomy_fields').hide(); + if($(this).val()=='new_cpt') $('#new_cpt_fields').show(); + if($(this).val()=='add_taxonomy') $('#add_taxonomy_fields').show(); + }); +}); diff --git a/blueprints/dynamic-cpt-and-tax-generator/blueprint.json b/blueprints/dynamic-cpt-and-tax-generator/blueprint.json new file mode 100644 index 00000000..f9b03ac7 --- /dev/null +++ b/blueprints/dynamic-cpt-and-tax-generator/blueprint.json @@ -0,0 +1,35 @@ +{ + "$schema": "https://playground.wordpress.net/blueprint-schema.json", + "meta": { + "title": "Dynamic CPT & Taxonomy Generator", + "description": "Create new CPTs with optional taxonomy or add taxonomy to existing CPTs. All managed from a single plugin.", + "author": "Rima Prajapati", + "categories": [ + "Content", + "CPT", + "Admin" + ] + }, + "landingPage": "/wp-admin/admin.php?page=dynamic-cpt-generator", + "login": true, + "steps": [ + { + "step": "installPlugin", + "pluginData": { + "resource": "git:directory", + "url": "https://github.com/WordPress/blueprints", + "ref": "trunk", + "refType": "branch", + "path": "blueprints/blueprints/dynamic-cpt-and-tax-generator" + }, + "options": { + "activate": true + } + } + ], + "preferredVersions": { + "php": "8.3", + "wp": "latest" + }, + "features": {} +} diff --git a/blueprints/dynamic-cpt-and-tax-generator/dynamic-cpt-and-tax-generator.php b/blueprints/dynamic-cpt-and-tax-generator/dynamic-cpt-and-tax-generator.php new file mode 100644 index 00000000..2e5aeca7 --- /dev/null +++ b/blueprints/dynamic-cpt-and-tax-generator/dynamic-cpt-and-tax-generator.php @@ -0,0 +1,221 @@ + +
+

Dynamic CPT & Taxonomy Generator

+ + errors as $err) { + echo '

'.esc_html($err).'

'; + } + // Display success messages + foreach($this->success as $msg) { + echo '

'.esc_html($msg).'

'; + } + ?> + +
+ + +

Choose Action

+ + + + + + + +
+
+ handle_form(); + } + } + + private function handle_form() { + $action = sanitize_text_field($_POST['dcpt_action']); + $cpts = get_option('dcpt_saved_cpts', array()); + + if($action == 'new_cpt') { + $cpt_slug = sanitize_text_field($_POST['cpt_slug']); + $cpt_name = sanitize_text_field($_POST['cpt_name']); + $tax_slug = sanitize_text_field($_POST['tax_slug']); + $tax_name = sanitize_text_field($_POST['tax_name']); + $cpt_icon = sanitize_text_field($_POST['cpt_icon']); + + // Validation + if(empty($cpt_slug)) $this->errors[] = "CPT slug is required."; + elseif(!preg_match('/^[a-z0-9_-]+$/', $cpt_slug)) $this->errors[] = "CPT slug can only contain lowercase letters, numbers, dashes, and underscores."; + if(post_type_exists($cpt_slug)) $this->errors[] = "CPT slug '{$cpt_slug}' already exists."; + + if(empty($cpt_name)) $this->errors[] = "CPT name is required."; + + if(empty($this->errors)) { + $cpts[$cpt_slug] = array( + 'name'=>$cpt_name, + 'icon'=>$cpt_icon, + 'taxonomy'=>array( + 'slug'=>$tax_slug, + 'name'=>$tax_name + ) + ); + update_option('dcpt_saved_cpts', $cpts); + $this->success[] = "CPT '{$cpt_name}' saved successfully."; + } + } + + if($action == 'add_taxonomy') { + $existing_cpt = sanitize_text_field($_POST['existing_cpt']); + $existing_tax_slug = sanitize_text_field($_POST['existing_tax_slug']); + $existing_tax_name = sanitize_text_field($_POST['existing_tax_name']); + + if(empty($existing_cpt)) $this->errors[] = "Please select a CPT."; + if(empty($existing_tax_slug)) $this->errors[] = "Taxonomy slug is required."; + elseif(taxonomy_exists($existing_tax_slug)) $this->errors[] = "Taxonomy slug '{$existing_tax_slug}' already exists."; + if(empty($existing_tax_name)) $this->errors[] = "Taxonomy name is required."; + + if(empty($this->errors)) { + if(!isset($cpts[$existing_cpt])) $cpts[$existing_cpt] = array('name'=>$existing_cpt); + $cpts[$existing_cpt]['taxonomy'] = array( + 'slug'=>$existing_tax_slug, + 'name'=>$existing_tax_name + ); + update_option('dcpt_saved_cpts', $cpts); + $this->success[] = "Taxonomy '{$existing_tax_name}' added to CPT '{$existing_cpt}'."; + } + } + } + + public function register_saved_cpts() { + $cpts = get_option('dcpt_saved_cpts', array()); + if(!empty($cpts)) { + foreach($cpts as $slug => $data) { + // Register CPT + if(!post_type_exists($slug)) { + register_post_type($slug, array( + 'labels'=>array('name'=>$data['name'],'singular_name'=>$data['name']), + 'public'=>true, + 'has_archive'=>true, + 'show_in_rest'=>true, + 'menu_icon'=> !empty($data['icon']) ? $data['icon'] : 'dashicons-admin-post', + 'supports'=>array('title','editor','thumbnail') + )); + } + + // Register taxonomy + if(!empty($data['taxonomy']['slug']) && !taxonomy_exists($data['taxonomy']['slug'])) { + register_taxonomy($data['taxonomy']['slug'], $slug, array( + 'labels'=>array('name'=>$data['taxonomy']['name'],'singular_name'=>$data['taxonomy']['name']), + 'public'=>true, + 'hierarchical'=>true, + 'show_in_rest'=>true + )); + } + } + } + } +} + +new Dynamic_CPT_Taxonomy_Generator(); From 839e04ef9b23a1d74c75b9d15379cb59fbd0b328 Mon Sep 17 00:00:00 2001 From: Rima1889 Date: Thu, 19 Feb 2026 18:37:52 +0530 Subject: [PATCH 2/2] chore: update blueprint.json --- blueprints/dynamic-cpt-and-tax-generator/blueprint.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blueprints/dynamic-cpt-and-tax-generator/blueprint.json b/blueprints/dynamic-cpt-and-tax-generator/blueprint.json index f9b03ac7..1ce96f50 100644 --- a/blueprints/dynamic-cpt-and-tax-generator/blueprint.json +++ b/blueprints/dynamic-cpt-and-tax-generator/blueprint.json @@ -20,7 +20,7 @@ "url": "https://github.com/WordPress/blueprints", "ref": "trunk", "refType": "branch", - "path": "blueprints/blueprints/dynamic-cpt-and-tax-generator" + "path": "blueprints/dynamic-cpt-and-tax-generator" }, "options": { "activate": true