我想你已经看过这些文件了:https://codex.wordpress.org/Shortcode_API
。。。这将向您显示检查短代码的正确代码。假设您的短代码叫做“redirectme”。因此,您将在函数中使用的代码。php类似于:
// redirect for the [redirectme] shortcode
function redirect_me( $atts ){
// do something if the shortcode is found
}
add_shortcode( \'redirectme\', \'redirect_me\' );
如果短代码
[redirectme]
已找到。然后修改该函数以执行所需的重定向。
例如,如果要重定向到http://example.com/the-new-page , 您可以将其放入redirect\\u me函数中
$url = \'http://example.com/the-new-page\';
wp_redirect( $url );
exit;
查看上的文档
wp_redirect
功能:
https://developer.wordpress.org/reference/functions/wp_redirect/ . 请注意
exit
,否则将执行该页的其余代码。
Added
正如对此答案的评论中所述
wp_redirect()
无法工作-这将导致“Headers ready sent”(标头已发送)错误。这是因为在
wp_redirect()
函数是通过内容中出现的短代码来调用的。
因此,您必须在WP开始发送输出之前缓冲输出。您可以使用以下代码执行此操作:
function app_output_buffer() {
ob_start();
}
add_action(\'init\', \'app_output_buffer\');
。。。我从这里得到的
https://tommcfarlin.com/wp_redirect-headers-already-sent/ (更多信息请参见)。可能也有类似的参考文献
ob_start()
在这里由于该功能将在WP输出开始之前“启动”,因此
wp_redirect()
如果由短代码激发,则将工作。
因此,将上述代码添加到函数中。php文件,您将能够wp_redirect()
WP开始输出后。
另一种方法是更改用于帖子/页面的模板,以检查用户是否有效登录,如果用户尚未登录,则重定向。您可能仍然需要ob_start()
函数,具体取决于检查用户登录的位置。