I'm integrating a separate ecommerce CMS into a wordpress theme, using page templates for some pages such as the basket, search and checkout pages.
This is working out pretty well so far. However, there are a couple of dynamic pages that I'd normally make a single-posttype.php template for, but can't as in this case I can't because Wordpress doesn't 'know' about them, as the data is coming from the ecommerce CMS. For example, the product details page or a product category search page.
My solution was to create a template called product-details and make a page for it. In this template, the actual wordpress page data is ignored and the data is instead read from the ecommerce CMS.
My gut feeling is that this is not best practice however short of writing a full wordpress plugin integration of the ecommerce system, it's the best I could come up with.
The problem this leaves me is that if an admin were to delete that page, or unassign the template, the shop would break. So, I'd like to hide these pages to help prevent accidental deletion or editing (page content doesn't matter for them).
Is there a way to hide some pages from the 'All Pages' menu in wp-admin, unless a custom filter (e.g 'System Pages') is clicked?