I think you’re over thinking things. I’d simply create a new Custom Post in the plugin. That will come with it’s own backend automatically.
You can then create the individual pages based on the Template Hierarchy for both the listings and individual pages.
For any additional fields you need, you can either set the meta fields to show on the backend or add them via a plugin such as Advanced Custom Fields
Amend wp-query when searching to do queries on your metadata.
That should be enough to get you going.
I personally don’t like the way WordPress does things, so I’m not sure exactly how much separation you will be able to achieve. But a good rule of thumb I find is to try and use the built in functions as much as possible, rather than building your own solution.
Related Posts:
- How can I configure Docker for developing and deploying a custom theme?
- Custom theme sufficient or custom plugin neccessary for this feature set?
- How to create custom home page via plugin?
- Featured Image not showing in admin
- How Can I setup WP CLI on Windows development machine running AMPPS?
- WP_LOCALIZE_SCRIPT doesn’t work
- Are we allowed to use the Allman (BSD) indent style when coding WordPress plugins and themes?
- Customizer: widget-synced triggers twice
- WordPress not working on localhost
- Why in this archive page that call query_posts() function show only the last 10 posts?
- How to replace settings in WordPress plugin from a theme
- How to remove/replace current page template?
- Setting a post’s category
- Want to know how to reveal a WordPress theme, considering the theme name is hidden?
- Metabox types list
- Rate limiting ajax requests in WordPress
- Determine if the current page, is being edited
- Managing Custom Designed Content
- Best practice: What belongs in theme and what in plugin for large eCommerce website
- Adding class to the parent of current-post-ancestor / current-menu-parent / current-post-parent
- Is Explicit Versioning a better alternative to Semantic Versioning for wordpress?
- Is there any other ways to replicating changes on live from staging without pushing from git
- Objective Best Practices for Plugin Development? [closed]
- How to get the path to the current theme?
- How to create an API for my plugin?
- Plugins in symlinked directories?
- How to use PanelColorSettings in custom Gutenberg block?
- What is an alternative method to the WordPress private _doing_it_wrong() function
- Update exisiting site to 3.5 release candidate
- Get file headers in custom file
- add_filter and remove_filter added before and after wp_query
- What is the difference between strip_tags and wp_filter_nohtml_kses?
- Having Problem On Getting WP Post Gallery Images URL
- When to check if a function exists
- How to: get main plugin/theme file?
- add_theme_support using a plugin
- How to bundle a plugin with a theme, or vice versa
- Nuance in adding CPT and TAX to a submenu
- Modify a Free Plugin available on wordpress.org & include with my Premium Theme? [closed]
- Best choice of options/settings framework for plugin/theme development
- Is there any way to have Featured Text, as opposed to Featured Image?
- Why WordPress architecture is not pure object oriented and it don’t use MVC pattern? [closed]
- Find source of notice / warning / errors efficiently
- Sharing common functionality (functions, template parts) between plugins and themes?
- Display content from custom post without modifying the single template
- Adding functions to hooks from within a class
- Can I change header.php of current theme through a plugin function?
- Applying OO patterns and principles to plugin development
- Is it possible to change a term slug before being saved to the database?
- Tried in different ways but sidebar not working?
- Add code inside specific wordpress standard function
- Short code not working in boostrap modal dont no why?
- Create a free scripts and styles template within a plugin
- Is there a way to list all actions registered by a plugin or theme?
- How to hook a custom user function to a wordpress core ajax action?
- How can I turn a custom wordpress page into a product page?
- Elementor custom Query with ACF fields to show matching woocommerce products custom fields
- WP Gutenberg Blocks – How to limit first/root blocks
- How developed with version control word press site on shared host? [closed]
- How to Bind one post object Type with other postobject Type in Advanced Custom field [closed]
- Following WordPress Markup Is mandatory, got awkward resultyby wordpress standard markup?
- How do I create plugin or theme using MVC pattern?
- Search: how to extend the existing search to include a custom table
- Is there documentation reference for forms in menu and setting pages?
- How to Get Current Custom Post Type Associated Taxonomy Term
- Plugin templates vs Parent Theme
- Enqueue script globally
- Can’t change the style of a submit input type? [closed]
- get_the_tags with separator control?
- 400 Bad Request, in wordpress theme development, wp_ajax
- Add child pages to submenu automatically
- Why would you use esc_attr() on internal functions?
- Converting core modification to a plugin
- Save temporary registration data
- How can the_excerpt (or equivalent) be called on a category description?
- Serial Number from custom table not appear in woocommerce_email_before_order_table action
- Change the behaviour of a button
- WP_Query order posts by category
- Configuring Xdebug with docker compose
- How to access index file in Block Themes?
- How to create a custom post-new.php page for plugin , no wp menu
- Redirection from a specific page for users logged in but not with membership
- Rename a folder via HTML POST request
- Save meta box data from selected dropdown list in bbpress reply form
- Is it possible to develop themes and plugins locally while still allowing content to be updated directly in the admin dashboard?
- Replace “content-area” of themes 404 page with plugin?
- Autoloading & Namespaces in WordPress Plugins & Themes: Can it Work?
- Create Customization panel for Plugins not for theme
- How to destroy or dispose wordpress uploder/manager?
- Font Awesome stopped showing icons, shows &# text instead [closed]
- To remove rendering of menus and header, plugin or theme?
- Generate activation url
- Display Data’s metabox in page
- Client Profiles
- Saving multiple fields as array
- How to add image for custom taxonomy
- Gutenberg text field validation
- how to catch a data from a array in WordPress
- Hook a search form anywhere on the site, using a custom plugin
- Fetch Custom Woocomerce filed data and check the data avialble in Wp-user table as nicname or username using function.php