我有一个典型的短代码,可以在页面上打印一些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\' );
最合适的回答,由SO网友:Andy Macaulay-Brook 整理而成
只有在处理和显示可视化编辑器的内容时,才会调用短代码函数,因此短代码函数中的任何内容都不会过早运行。
看看has_shortcode
作用如果您早到可以发送标题,晚到可以设置查询,那么您可以检查内容是否包含您的短代码,然后重定向。template\\u重定向钩子非常方便,因为它是主题将输出发送到浏览器之前要调用的最后一个钩子,这会触发PHP发送标题。