Let me start with a question: What if the user simply refreshes the page after the action is processed? It will resubmit the action.
So the issue is not only with the links for the sortable column header and how WP_List_Table is generating them but with the way you are handling the action requests.
The best practice is to redirect the user back to a URL excluding the action parameter after processing the action, and have the page rendered on the second request instead of rendering it on the action request.
For example:
- User starts here:
admin.php?page=wpml_plugin_log
- User sends a request to
admin.php?page=wpml_plugin_log&action=delete&id=123
- Delete action is handled
- User is redirected back to
admin.php?page=wpml_plugin_log&delete_success=123
As you see above, you may also add some other parameters (delete_success
) to the redirect URL to pass the state of the handled action to the second request.
Related Posts:
- function deactivate_plugins does not exist
- what’s the meaning of the field wp_capabilities in table wp_usermeta
- Change the_title() of a page dynamically
- Adding more options to the instance of an image. (Attachment Display Settings)
- Plugin – create a page without it appearing in the side menu
- What is wrong with using add_option with Multisite instead of add_blog_option in a plugin
- Trouble with Transient API when W3TC is activated [closed]
- Using wp_filesystem in Plugins
- How to write testable classes in WordPress
- WordPress REST API call generates nonce twice on every call
- How to modify post content before writing to database?
- Filters ‘request’ and ‘parse_query’ not firing in sites.php nor link-manager.php
- How to trap “Publish” button to check for meta box validation?
- How to use filter hook ‘post_updated_messages’ in coherence with action hook ‘save_post’
- $wp_filesystem returns NULL. What are the dependencies?
- wp_mail not recognizing cc and bcc headers
- How can I call “preview post” from wp_remote_get with authentication?
- When is it too late to call the action wp_enqueue_scripts?
- Plugin Loading Scripts and Styles on Every Page – Even when not being used
- set_sale_price in WooCommerce [closed]
- Adding extra pages to plugin that shouldn’t appear in the sidebar
- jquery document ready function not being called [closed]
- How do I include background images in my stylesheets in a plugin?
- Custom plugin icon not showing up
- I’m designing a plugin to create database indexes. Suggestions?
- need to get user ID after a user logs in
- Callback is not called in add_settings_field() when passed as part of an array, but recognises that it’s there. It’s passed Class to Class using OOP
- add_rewrite_rule works in themes function php but when moved into plugin it stops working
- $reverse_top_level works the opposite way according to Codex?
- How to serve different thumbnails/images depending on users browser/platform
- Plugin for Android Marketplace downloads?
- How to export post meta with images in wordpress
- Parse form values before sending to options.php
- My WordPress plugin cannot load my JavaScript file
- Password field is empty when using wp_signon();
- Add Minimum Dimensions Text to Featured Image
- Putting a resized image into media library with wp_get_image_editor(
- Using ReactJS in the WordPress admin for plugin development
- Show error message after exception handled
- How to use github to update my plugin
- How to connect my wordpress plugin to a remote database securely?
- How to create a backend for a custom theme?
- admin_post equivalent for guest user?
- WP Cron being triggered but not working as expected
- Plugin Options Array Set to Undefined
- is pre_get_comments not working?
- How do I have now a duplicated user entry if this is not allowed (and I cannot replicate it)?
- Settings API – format container of setting and setting’s description
- Delete option of a Plugin
- Automating the process of shortcode generation in a plugin – how is it done?
- I am trying to make a page in the admin section similar to the appearance of the Profile page for users
- Proper way to include stylesheet for panels
- unregister_setting() vs delete_option() for plugin update
- How to make and save custom form in custom plugin page?
- Get thumbnails with array sizes parameter
- Why would someone use function_exists(‘add_action’) in a plugin?
- WordPress Gutenberg InnerBlocks renderAppender not showing with template
- How to add Plugin functionality in WordPress Frontend Menus
- in_array function Problem
- Best practice for plugin: always detect admin-ajax call?
- Adding another field to user table
- How to hide page links from theme menu
- Brainstorm – Slow Query from Plugin Need to Speed It Up
- How to share user data across multiple WordPress websites?
- How to add text editor in plugin menu?
- How to properly create table in plugin
- Console errors in 6.0-RC1 Widget screen
- Set the payment processor callbacks to a plugin
- Error code when migrate
- How to control ajax calls without effecting memory of server?
- Add two button to page and post admin to redirect to : add new & list of (posts – pages) just after saving post or page
- How to add .ini file type to the plugin editor to read and edit?
- WordPress: I wanted to use Add rewrite rule multiple times for multiple CPT in my plugin
- WordPress Query doesn’t return the correct value
- Uncaught Error: Call to undefined function wp_get_current_user() in
- How do I show how many products are remaining from the bought package
- WordPress Ajax not returning Response
- Group By in a Metaquery
- wp_ajax function return the html page
- Where to store Plugin specific information in the database
- How to load css file after a certain css file
- Shortcode from a plugin not working
- How to get option values without requiring wp-load?
- Problem with baseurl and interaction with plugin
- Why setcookie function redirecting to home page in wordpress?
- Deactivate Other Incompatible Plugin Upon Activation
- Should all roles be allowed CRUD operation on the database?
- Associating special meaning with user id 0
- Filter get_user_by instead of replace function
- Downloading Generated XML File
- Can’t get query string in ajax call
- How to create a custom search form and handler?
- How to use permalink query to go to specific tabs in posts
- Conditional query tags do not work before the query is run. Before then, they always return false
- Method to retrieve category names and IDs only as an array?
- WP Cron registers hook without any action (does not call the function)
- Send Webhook when post-status is publish or trash
- Using “add_image_size” to register custom image sizes inside plugins not working
- How do I access the contents of WordPress Classic editor in admin area with JavaScript?
- Programmatically creating posts based on external JSON feed (asynchronously)