我已经根据帖子类别添加了一个密码表单(shortcode),其目的是隐藏某些HTML代码。
为此,我使用the_content
滤器
密码本身是通过一个数组添加的,这个数组更适合通过WP admin settings页面作为全局设置,但情况不同。
My main problem is this; 提交密码后,无论密码是对是错,用户都会得到;滚动的“;一直到页面顶部。
这不应该发生,这就是为什么我在表单中添加了一个ID。提交正确的密码后,用户应保持在原来的位置,也就是表单所在的位置,也就是HTML代码所在的位置。
有意义吗?部分问题在于此;“没有消息”;“密码成功”;或“或”;密码不正确;。
正如您在代码中看到的,我已经尝试使用以下方法将ID添加到路径:path=/#functioncode
没有成功。
This is the full code:
add_shortcode( \'protected\', \'protected_html\' );
function protected_html( $atts, $content=null ) {
$functionUserPassword = isset( $_REQUEST[\'password\']) ? $_REQUEST[\'password\'] : ( isset( $_COOKIE[\'functionUserPassword\']) ? $_COOKIE[\'functionUserPassword\'] : NULL );
if ( in_array( $functionUserPassword, array(\'password\') ) ) {
$return_html_content = do_shortcode($content);
} else {
$return_html_content =
\'<div id="functioncode" style="margin-top:20px;font-size:15px;">To view the content of this section, submit your password.</div>
<form method="post" onsubmit="functionCookie(this); return false;">
<input required style="display: block; width: 69%; height: 50px; margin-right: 1%; float: left; border: 2px solid #333;" type="text" placeholder=" Password Here" name="password" id="functionUserPassword">
<input style="display: block; margin: 0px; width: 30%; height: 50px; background-color: #333; color: #fff;" type="submit" value="Submit">
</form>
<script>
function functionCookie(form){
document.cookie = "functionUserPassword=" + escape(form.functionUserPassword.value) + "; path=/#functioncode";
</script>\';
}
return $return_html_content;
}
Here\'s the code which I am using with the content filter:
add_filter( \'the_content\', \'wrap_html_in_shortcode\', 9 );
function wrap_html_in_shortcode( $content ) {
if ( ! in_category( \'premium\' ) ) return $content;
$content = preg_replace(\'/(<span[^>]*>\\s*<div[^>]*>)/\',"[protected]$1", $content);
$content = preg_replace(\'/(<\\/div>\\s*<\\/span>)/\', "$1[/protected]", $content);
return $content;
}