因为the_content
在成功输入密码之前不进行处理,您可以添加一个重定向页面的短代码,该短代码只能在密码正确的情况下运行。因此,类似于以下内容的操作应该有效:
add_shortcode( \'pdf_redirect\', function ( $atts ) {
$a = shortcode_atts( array(
\'url\' => \'\',
), $atts );
// instructions in case of misuse
if (empty($a[\'url\']))
return "<pre>Please assign a destination for the PDF redirect, [pdf_redirect url=\'https://yourpdfurl...\']</pre>";
return "
<meta http-equiv=\'refresh\' content=\'0; url={$a[\'url\']}\'>
<script>
window.location.href = \'{$a[\'url\']}\';
</script>
<p>If your browser hasn\'t redirected you, please <a href=\'{$a[\'url\']}\'>click here</a>.</p>";
} );
然后在受密码保护的页面上,内容是:
[pdf_redirect url="http://example.com/file.pdf"]
元刷新是一种糟糕的编码标准,但所有浏览器都支持它,而且它可以工作。javascript是回退重定向,html链接是双重回退。现在,您可以通过点击早期钩子,使重定向发生在文档头之前,如
wp_loaded
, 查看用户是否具有一个或两个函数的正确密码,并解释
$post->post_content
短代码,然后使用
wp_redirect()
- 但我懒散的做事方式也很管用。