Quantcast
Channel: WordPress › Support » Forum: Hacks - Recent Topics
Viewing all articles
Browse latest Browse all 8245

Abatap on "How to modify header data for admin pages?"

$
0
0

Hello. I need to remove one of the GET parameters from client's browser address bar to prevent duplicate operation. As far as I understand, the only way to do this server-side is to edit the Location header.

Here is a code snippet which is a part of an Order List page in WP Admin panel:

//display the contents of selected order
if (isset($_GET['show_order'])) {

    //see if our user clicked "mark this order processed"
    if (isset($_GET['mark_as_processed'])) {

      //update order status via custom function that uses $wpdb->update
      update_order($_GET['mark_as_processed'], 'Processed');

      //removing the mark_as_processed parameter from client's address bar
      //doesn't do anything
      add_action('send_headers', function() { header('Location: '.$_SERVER['HTTP_REFERER']); });

      //doesn't do anything either, probably because wp_headers isn't called for admin pages
      add_filter('wp_headers', function($headers) { $headers['Location'] = $_SERVER['HTTP_REFERER']; return $headers; });

      //wouldn't work too, obviosuly
      header('Location: '.$_SERVER['HTTP_REFERER']);
    }
}

Could anyone tell me what is wrong with my approach here? Note that the HTTP_REFERER global contains precisely what I need in this situation so it's certainly not an issue here. The problem is that these add_filter or add_action functions don't seem to perform any sort of operation on the headers being sent.


Viewing all articles
Browse latest Browse all 8245

Trending Articles