如何将wp_reDirect放入短码?

时间:2016-07-02 作者:jchwebdev

我有一个典型的短代码,可以在页面上打印一些html。该快捷码仅用于访客登录的页面。

作为一个单独的操作,我一直在使用一个自定义字段来触发一个操作,该操作执行该测试,然后执行重定向。

但我想知道是否有可能将该操作合并到shortcode中并去掉自定义字段。

IOW:我可以在标题中的某个标记中打印短码代码,以测试访问者是否已登录,如果未登录,则将其重定向到主页。

例如:。

function jchForm() { 
  add_action( \'no idea where this would go\', \'my_redirect_function\' );

  $s =\'<div class="clearboth">\';
  $s .=\'<form id="my_form" action="" method="post">\';
  $s .=\'<p><label>Your Name</label><input id="user_name" type="text"     name="user_name" class="text" value="" /></p>\';
  $s .=\'<p><label>Your Email Address</label><input id="user_email" type="text" name="user_email" class="text" value="" /></p>\';
  $s .=\'<p><input type="submit" id="my_submit" name="submit"     value="Register" /></p>\';
  $s .=\'</form>\';
 $s .=\'</div>\';

return $s;
}

更新:根据has\\u shortcode()函数引用,我尝试了这一点,但尽管它激发,$post始终返回NULL。我如何在任何其他html之前,但在查询抓取$post之后,打印这个?

function custom_shortcode_script() {
global $post;
if( is_user_logged_in() && has_shortcode( $post->post_content, \'jchForm\') ) {
  var_dump($post->post_content); // always prints NULL
    wp_redirect( \'/someplace\');
  }
}

 add_action( \'init\', \'custom_shortcode_script\' );  

2 个回复
最合适的回答,由SO网友:Andy Macaulay-Brook 整理而成

只有在处理和显示可视化编辑器的内容时,才会调用短代码函数,因此短代码函数中的任何内容都不会过早运行。

看看has_shortcode 作用如果您早到可以发送标题,晚到可以设置查询,那么您可以检查内容是否包含您的短代码,然后重定向。template\\u重定向钩子非常方便,因为它是主题将输出发送到浏览器之前要调用的最后一个钩子,这会触发PHP发送标题。

SO网友:Caleb

不是一个wp_redirect(), 但您可以执行JavaScript重定向:

window.location="http://www.example.com";
如果用户禁用了JS,则不会执行任何操作,因此请确保为重定向提供链接。

相关推荐

SHORTCODE_ATTS()中的$ATTS参数是什么?

这个WordPress developers reference page for shortcode_atts() 国家:$atts(array)(必选)用户在shortcode标记中定义的属性。但我不理解这个定义。例如,在WP Frontend Profile 插件:$atts = shortcode_atts( [ \'role\' => \'\', ], $atts ); 据我所知,shortcode\