The canonical solution for this kind of problems is to use a custom post type and “get” with zero effort admin framework and caching when object caching is used. Any attribute that is needed can be stored as a meta.
Depending on what are your specific needs are, you can register such a post type as private and then it will be displayed on the front end only when your shortcode is used.
Related Posts:
- Is get_option() faster than accessing get_transient()?
- Is using custom table to suit business needs instead of transients a big hit to page load speed?
- Custom Plugin Options Won’t Update
- Theme / Divi change visitor css and site logo and all site urls based on REQUEST_URI non logged in wp user
- framework for plugin/theme options panel? [closed]
- How do I add CSS options to my plugin without using inline styles?
- “Error: Options Page Not Found” on Settings Page Submission for an OOP Plugin
- Is it mandatory to use $wpdb->prefix in custom tables
- Is get_option function cached?
- How come `wp_options` table does not have an index on `autoload`?
- PHP error with shortcode handler from a class
- Update Option Stored in Multi-Dimensional Array
- What are the advantages to the Settings API?
- Adding Widget form fields dynamically
- Where to store plugin settings fields
- Add self-closing shortcode button to TinyMCE in WP 4.6
- Best practices for using the transients API
- Optimize shortcode callbacks
- What’s the best method for emptying an option created with the Settings API?
- Releasing new plugin version, how to rename old options keys?
- WordPress updates defined vs add_filter?
- Creating Settings Page with dropdowns for Plugin
- How to properly sanitize strings for update_option()
- How would I create a plugin for my shortcodes?
- How to prevent newline from appearing in shortcode?
- Shortcode adding p and br tags
- Are shortcodes case-sensitive?
- Does using set_transient() function can lead to MySQL problems?
- Enqueue script only when shortcode is used, with WP Plugin Boilerplate
- How to add a new plugin page under desired Options page?
- Why does WordPress create two transients with the same name when I specify timeout value?
- Allowing for multiple template views on the Gallery Settings page when using the Visual Editor
- How to make WordPress use non-greedy shortcode parsing?
- Multiple Parameters for a Shortcode
- How do I make specific plugin functionality apply to different sites in a network?
- Shortcodes, output buffering, and WordPress functions
- Filter on the_content ignores shortcodes
- How do I handle multiple Submit buttons in plugin’s option page?
- stray elements
- Deletion of shared options using uninstall.php
- Pass javascript result to shortcode executer function
- Front-End Form Submission in Shortcode
- Why won’t register_setting() create a setting?
- How to get shortcode to work inside a foreach loop called within a shortcode?
- Get returned variable from a function to add_shortcode function
- Multiple entries in get_option results? or why is _multiwidget set to 1?
- Dropdown list of pages to get page id to store in plugin options
- update_option is not working!
- update_option_{$option} Too Few Arguments
- Save user-specific options in WordPress admin
- How to store accumulate multiple option values in a single array using Options_API
- What is rich_editing?
- Why is my shortcode not working
- Creating option to allow user to select the page my plugin content will display on
- Unified Approach for Placing Option Pages
- Error : “Updating failed: The response is not a valid JSON response” with custom shortcode
- array_map() for sanitizing $_POST
- On plugin deactivation hide its shortcode
- WordPress plugin options and jQuery
- WordPress Plugin Setting’s POST
- Performance of several get_option() calls
- Can’t get JS code to work with shortcode
- add_shortcode is not working [duplicate]
- Extend plugin options page
- Can I use the different settings sections over different pages using the save options group?
- Options API – Validation Callback $input is NULL
- How can I render shortcode so that its not cached by Caching plugins?
- How to edit mySQL wp_posts table from plugin php?
- Best choice of options/settings framework for plugin/theme development
- Correct way check nonce (security) using old Options API
- Is it possible to delay execution of shortcode output callback?
- Processing shortcodes in groups (separated by line breaks)?
- Creating table with plugin is not working
- How to store a medium amount of options?
- Why my database table not created on activation?
- How do I write a shortcode that opens and closes?
- How to add settings subpage from a plugin to a settings page created in theme?
- Plugin options not being saved or created
- Remove Internal Style Sheet if no Value Provided?
- What could cause my plugin’s options/settings page not to load?
- Using a Shortcode to Replace Themes Stylesheet?
- How to set “Site Address (URL)” programmatically on WP multisite?
- WordPress setting with select – where is my mistake?
- Clearing cached plugin data if it is using an external object cache
- How to update an existing table while updating plugin?
- Using wp_parse_args to set up Plugin Default Settings
- Gutenberg Block showing invalid content on edit
- Creating a shortcode, but getting tied up with OOP and Classes?
- Custom delete option button in plugin settings
- What is the best way to embed an JS App in a WordPress Page?
- How To Change Post Author Default?
- What is the proper way to include Bootstrap when executing a shortcode
- WP_Editor – Saving Value into Plugin Option – Stripping HTML
- Auto gallery from folder contents
- Secure Pages Best Practice
- Adding option to Gallery shortcode
- Editing options pages?
- add_shortcode() not working inside of function
- Multiple options pages validation for a plugin
- get_option() not returning expected value from plugin