I would go with transient. The reason I would choose transient it is they are created exactly for your case. I know that you have your own removal functionality but why to repeat yourself? Another advantage would be that transient beneath use cache. If for some reason your will need to install object cache your shortcode would automatically benefit from it.
Related Posts:
- Are transients garbage collected?
- How does object caching work?
- Fallback when Transient API fails
- How to cache posts based on $_GET? Option name is too long? Options / transients
- Transients API conditional
- Are all options loaded to memory on each request?
- How to pass arguments from add_settings_field() to the callback function?
- How to use checkbox and radio button in options page?
- how to update serialized options programatically?
- Will it break my site if I delete all transient records in wp_options table?
- How to pass variable to add_settings_section() callback?
- Performance with autoload and the options table
- What’s the difference between Options & Settings?
- Using widget options ‘outside’ the widget
- How to load WordPress on non WP page?
- Is get_option() faster than accessing get_transient()?
- Options for CDN with WordPress Including Supporting Plugins?
- Option to set static front page disappeared from admin reading settings
- How to set up default values for a plugin?
- Difference between Option_Group and Option_Name in Register_Settings
- Add on the fly tabs to plugin options
- Why does WordPress use serialize rather than json_encode for the options table? [duplicate]
- Plugin options will not save in database
- No option to allow search engines to index my site in WP 4.3
- How to update an ‘array’ option using wp-cli [duplicate]
- Plugin options autoloading
- How to Create a Custom WordPress Install Package?
- Settings API – creating reusable form elements?
- Settings API – changing add_settings_field() output?
- Confirmation before deleting plugin options via uninstall.php
- Efficient way of saving plugin options
- Set WordPress settings programmatically
- Submenu pages delete settings from options array when saved
- get_option() from another wordpress site
- How can I get all user options?
- register_setting() vs add_option()
- Settings API – save an array of options as one setting (array_push?)
- Where to hook register_settings for Settings API when also want to update options outside of Settings API?
- Add_settings_field() parameterizing callback?
- How much string content can I store in an option?
- Set a Default Value for an Option?
- Setting ‘autoload’ to ‘no’ with Settings API
- Why isn’t get_option array contents displaying?
- How to Save Different Settings Options Using Settings API and/or the Theme Optimizer
- Define WordPress image size in img tag
- Serialized settings in rest api
- Save Theme Options (options.php) From The Frontend
- Editor role not saving settings page for custom post type
- get_option() is not working even db contains the corresponding option_name and option_value
- Long option names fail silently?
- Can’t output do_settings_sections . Can’t understand why
- checkbox with get_option not working
- Settings API – how to update multiple options manually?
- Single callback with multiple setting fields
- Proper use of option_page_capability_{$page_name}
- Settings API – how to update options manually?
- How to change the file upload directory on version 3.5?
- Which WordPress option stores the current active theme?
- update_option method with support of utf8
- Any way to partition wp_options?
- How do I add a value to a wp_options option that is an array?
- how can I detect that option value has changed?
- Can I use a space in an option name/key?
- How to save WordPress Options as an array?
- update_option not working in stand-alone PHP script
- How to verify this checkbox is checked?
- How to display some settings for super admin user only using Settings API
- Best practice differences in DB options and wp-config between live, staging and local WordPress environments?
- Logout redirects to a broken page(home URL is omitted)
- Is there a limit to the number of options you can store in one settings field of wp_options?
- wp_user_roles and Advanced Manipulation
- Settings API get_option best practices
- Custom theme options Radio inputs not saving
- Deploy pre-configured database
- Character Encoding for wp_options
- Access general settings trough wordpress files
- get_option & update_option for multiple input fields with same name
- Settings API: Change position of custom setting field
- Tab from Settings API resetting all options with INSERT INTO [closed]
- Clone plugins (and settings) to new installation?
- Getting settings saved two times in settings page with tab
- Can’t save options
- display all posts in wordpress admin crashing after 999 screen option
- Allow spiders to crawl my site (selectable option in wp)
- Putting my site live
- Where is the submitted $_POST array stored after an option page submission?
- update a value in wp_options [closed]
- get_option array value defaults and best practices
- Insufficient permissions to save options
- Can we allow users to choose front page from theme options?
- How to display usermeta on front end of site
- Add an option to a Child theme of Twenty Eleven
- save_post_{CPT} not updating the ‘sticky_posts’ option
- The Settings API – What is the purpose of default value in register_setting?
- settings_fields doesn’t appear to be running
- WordPress options page not saving
- How to store a value on WP_option table
- Storing product price data in the database
- Changing the language in Site Language does nothing
- Settings API – Separating PHP and HTML