在用户操作后执行重定向

时间:2015-07-03 作者:Goodbytes

是否可以在WP中重定向用户,而头/WP\\u重定向不在头()之前?

我有一个插件,允许用户管理他们在网站上创建的内容。。。例如,他们可以删除它或禁用注释

这是非常基本的,所以我只是使用一个GET请求。。ie。

?action=comments&status=disable

单击此按钮时,会执行操作,但页面上不会发生任何事情,url现在为:www.domain.com/user_data?action=comments&status=disable 我要做的是在成功后将用户重定向回www.domain.com/user_data

我尝试了wp\\u redirect()和header(),但它们给出了“headers已经发送警告”

当这段代码在我的插件中时,我不确定如何将其放在标题之前。

    $query = $this->db->update(
      //do something
    );

    if($query == 0)
    {
      $this->setMessage(\'error\', \'There was an error: \' . $this->db->print_error());
    }
    else
    {
      wp_redirect(site_url(\'/user_data/\'));
    }

2 个回复
最合适的回答,由SO网友:Goodbytes 整理而成

这根本不可能,所以我想到了一个解决办法

  public function redirect($url = false)
  {
    if(headers_sent())
    {
      $destination = ($url == false ? \'location.reload();\' : \'window.location.href="\' . $url . \'";\');
      echo die(\'<script>\' . $destination . \'</script>\');
    }
    else
    {
      $destination = ($url == false ? $_SERVER[\'REQUEST_URI\'] : $url);
      header(\'Location: \' . $destination);
      die();
    }    
  }

SO网友:frank

这可能不是正确的方法,但我发现使用wp\\u-loaded可以做到这一点,并让您回到正确的位置;您必须设置正确的条件,以确保处理的数据正确。然后在重定向之前从条件中删除url。除了条件之外,您还可以应用功能检查。

add_action (\'wp_loaded\', \'clean_admin_referer\');
function clean_admin_referer() {

if ( isset( $_REQUEST[\'condition1\']) && isset($_REQUEST[\'condition2\']) ) {

    if (current_user_can(\'administrator\')) {

        <!-- do your database magic -->

        $_SERVER[\'REQUEST_URI\'] = remove_query_arg( array( \'condition1\', \'condition2\' ));

        wp_redirect($_SERVER[\'REQUEST_URI\']);

    }
}

结束

相关推荐

SSL/HTTPS Redirect Loop

我似乎无法确保某些页面的安全,我想我已经尽了一切可能。。htaccess重定向iTheme安全插件将站点url更改为HTTPS://li>由于某种原因,这两个插件都不能强制SSL。它只是进入一个重定向循环。与更改类似。htaccess。然而,wooCommerce页面是安全的,我还可以通过HTTPS访问wordpress目录根中的页面,以及上传的内容。我应该从哪里开始查找,或者如何开始调试重定向循环?Wordpress是3.8.5版,主题为“BigBang 1.7.3”。插件列表:Advanced