Redirect traffic to plugin

时间:2018-01-04 作者:bluppfisk

我正在开发一个插件,可以在某个时候向用户发送验证电子邮件。当用户单击此链接时,插件将使用验证代码。

目前,我已经使用一个短代码完成了这项工作,但这需要用户(或插件)创建一个包含此短代码的页面。是否不可能以某种方式抓住http://site.tld/?token=x url,执行代码,并显示感谢消息,而不创建执行代码的页面?

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

您可以使用init 钩子检查$_REQUEST$_GET 适用于您的token 值,然后重定向到通过WP Core显示的页面:

  • home_url
  • wp_login_url
如果向这些URL传递其他参数,例如token_valid=true 您可以将其与条件标记一起使用,如is_front 有条件地显示感谢信息。

function wpse290114_init_validate() {
    if(isset($_REQUEST[\'token\']) && !empty($_REQUEST[\'token\'])){
        // validate the token and set $token_valid to \'true\' or \'false\'
        if($token_valid){
            wp_safe_redirect(add_query_arg( \'token_valid\', $token_valid, home_url() ));
        } else{
            wp_safe_redirect(add_query_arg(\'token_valid\', $token_valid, wp_login_url() );
        }

    }
}
add_action("init", "wpse290114_init_validate");
感谢信息的位置和显示取决于主题。

function wpse290114_thankyou(){
    if(isset($_REQUEST[\'token_valid\']) && \'true\' === $_REQUEST[\'token_valid\'])){
      echo \'<p class="message--thankyou">Thank you for validating.</p>\';
    }
}
add_action("your_theme_hook", "wpse290114_thankyou");

结束

相关推荐