PCP Linkflow Engine

Description

PCP Linkflow Engine gives you complete control over every URL on your WordPress site. Whether you need to remove the /product/ prefix from WooCommerce products, add a custom base to a taxonomy, or restructure your page URLs — this plugin handles it all from a clean, modern admin interface.

No code required. Changes take effect immediately with automatic rewrite rule flushing.

🔑 Key Features:

Post Type URL Control
– ✏️ Set a custom slug for any public post type (e.g. /shop/ instead of /product/)
– 🗑️ Remove the slug entirely — serve products, posts, or CPTs at root level (e.g. /jacket/ instead of /product/jacket/)
– 📄 Full support for hierarchical post types like Pages (e.g. /pages/about/team/)
– 🛒 WooCommerce compatible — works correctly with the shop page, product archives, is_product(), and all WooCommerce template hooks

Taxonomy URL Control
– ✏️ Set a custom base for any public taxonomy (e.g. /topics/ instead of /category/)
– 🗑️ Remove the base entirely — serve term archives at root level (e.g. /clothing/ instead of /product-category/clothing/)
– 🌳 Full support for hierarchical taxonomies — sub-terms work correctly (e.g. /clothing/accessories/)
– ✅ Correct is_tax(), admin bar links, and taxonomy templates when base is removed

Developer Friendly
– 🔌 Filter hooks: pcplfe_post_type_slug, pcplfe_taxonomy_slug, pcplfe_permalink_structure, pcplfe_remove_post_type_slug, pcplfe_remove_taxonomy_slug
– 🌐 REST API — read and write settings via /wp-json/pcplfe/v1/
– 📦 Import / Export — back up and restore all settings as JSON
– 🧩 PSR-4 autoloaded OOP architecture under the PCPLFE\ namespace

Modern Admin UI
– 🎨 Clean, Tailwind-inspired design with toggle switches
– 📑 Tabbed settings for Post Types and Taxonomies
– 🔄 POST Redirect GET pattern — no duplicate saves on refresh
– 💾 Active tab preserved across saves and page refreshes

REST API

PCP Linkflow Engine exposes a REST API under the pcplfe/v1 namespace. All endpoints require the manage_options capability.

Authentication

Use WordPress Application Passwords (WordPress 5.6+). Generate one at Users Your Profile Application Passwords, then pass it with every request:

-u "your-username:xxxx xxxx xxxx xxxx xxxx xxxx"

Endpoints

GET /wp-json/pcplfe/v1/settings

Returns all saved post type and taxonomy settings.

curl -u "admin:xxxx xxxx xxxx xxxx xxxx xxxx" \
  https://yoursite.com/wp-json/pcplfe/v1/settings

Example response:

{
  "post_type_settings": {
    "post": { "enabled": true, "custom_slug": "articles", "remove_slug": false }
  },
  "taxonomy_settings": {
    "category": { "enabled": true, "custom_base": "topics", "remove_base": false }
  }
}

POST /wp-json/pcplfe/v1/settings

Save post type and taxonomy settings from a JSON body.

curl -u "admin:xxxx xxxx xxxx xxxx xxxx xxxx" \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "post_type_settings": {
      "post": { "enabled": true, "custom_slug": "articles", "remove_slug": false }
    },
    "taxonomy_settings": {
      "category": { "enabled": true, "custom_base": "topics", "remove_base": false }
    }
  }' \
  https://yoursite.com/wp-json/pcplfe/v1/settings

GET /wp-json/pcplfe/v1/permalink?post_id=X

Returns the custom permalink record for a given post ID.

curl -u "admin:xxxx xxxx xxxx xxxx xxxx xxxx" \
  "https://yoursite.com/wp-json/pcplfe/v1/permalink?post_id=123"

Example response:

{
  "post_id": 123,
  "post_type": "post",
  "default_permalink": "https://yoursite.com/articles/hello-world/",
  "custom_permalink": "https://yoursite.com/my-custom-slug/",
  "record": { "permalink": "my-custom-slug" }
}

POST /wp-json/pcplfe/v1/permalink

Save a custom permalink for a specific post. Send an empty permalink value to remove the override.

curl -u "admin:xxxx xxxx xxxx xxxx xxxx xxxx" \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "post_id": 123,
    "post_type": "post",
    "permalink": "my-custom-slug"
  }' \
  https://yoursite.com/wp-json/pcplfe/v1/permalink

To remove a custom permalink override:

curl -u "admin:xxxx xxxx xxxx xxxx xxxx xxxx" \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "post_id": 123,
    "post_type": "post",
    "permalink": ""
  }' \
  https://yoursite.com/wp-json/pcplfe/v1/permalink

Screenshots

  • Post Types tab — enable post types, set custom slugs, or remove slugs entirely using toggle switches.
  • Taxonomies tab — enable taxonomies, set custom bases, or remove bases with a single toggle.
  • Import / Export page — back up and restore all settings as a JSON file.
  • REST API page — view all available endpoints, parameters, and example curl requests.

Installation

  1. Upload the plugin folder to /wp-content/plugins/, or install it via Plugins Add New in WordPress.
  2. Activate the plugin through the Plugins menu.
  3. Navigate to Linkflow Engine in the WordPress admin sidebar.
  4. Enable the post types or taxonomies you want to customise, enter your desired slugs, and click Save Settings.
  5. That’s it — rewrite rules are flushed automatically on save.

Requirements:
– WordPress 5.8 or higher
– PHP 7.4 or higher
– WooCommerce 5.0+ (optional, for product/taxonomy URL features)

FAQ

Will this break my existing URLs?

No. The plugin only modifies URLs for post types and taxonomies you explicitly enable. All other URLs remain untouched. If you change a slug, existing URLs will still be handled by WordPress’s built-in redirect logic.

Does Remove Slug work with WooCommerce products?

Yes. When Remove Slug is enabled for Products, product detail pages load at /product-name/ and WooCommerce’s is_product(), template hierarchy, cart, and checkout all work correctly.

Does the WooCommerce shop page still work after setting a custom slug for Pages?

Yes. The plugin automatically resolves page IDs so WooCommerce’s pre_get_posts hook correctly detects the shop page and displays the product archive regardless of the page URL prefix.

Do sub-category URLs work with Remove Base?

Yes. Hierarchical taxonomy terms are fully supported. For example, /clothing/accessories/ resolves correctly when Remove Base is enabled for the product_cat taxonomy.

Can I use a multi-segment custom slug?

Yes. You can enter a path like product/test as the Custom Slug for a post type. The plugin sanitises each segment individually, so the slash is preserved and the correct rewrite rules are generated.

Does it work with WordPress default taxonomies (category, post_tag)?

Yes. The plugin correctly uses each taxonomy’s native WordPress query variable (category_name for category, tag for post_tag) so custom base slugs work without any additional configuration.

Can I export my settings to use on another site?

Yes. Use the Import / Export page under the Linkflow Engine menu to download a JSON backup of all settings and custom permalinks, and re-import them on any other site.

Is it translation-ready?

Yes. All strings are wrapped in standard WordPress i18n functions using the pcp-linkflow-engine text domain.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“PCP Linkflow Engine” is open source software. The following people have contributed to this plugin.

Contributors

Translate “PCP Linkflow Engine” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

1.0.0

  • Initial release of PCP Linkflow Engine.
  • Custom slug support for all public post types.
  • Remove Slug support with WooCommerce product template compatibility.
  • Custom base and Remove Base support for all public taxonomies.
  • Hierarchical taxonomy sub-term URL resolution.
  • WooCommerce shop page compatibility (page_id normalization).
  • Multi-segment custom slug support (e.g. product/test).
  • Modern admin UI with toggle switches and tabbed settings.
  • POST Redirect GET for reliable settings saves.
  • Import / Export settings as JSON.
  • REST API endpoints under /wp-json/pcplfe/v1/.
  • Developer filter hooks for all major permalink values.