要在WordPress文章中使用Ajax设置密码保护,你需要创建一个自定义的Ajax请求,以便在文章密码验证时加载内容。以下是一种实现方法:
function custom_password_protect_ajax() {
// 验证密码是否正确
if (post_password_required()) {
echo '密码错误';
} else {
// 在这里加载受保护的内容,可以是文章内容或其他内容
the_content();
}
die(); // 终止脚本
}
add_action('wp_ajax_custom_password_protect', 'custom_password_protect_ajax');
add_action('wp_ajax_nopriv_custom_password_protect', 'custom_password_protect_ajax');
在你的主题文件夹中创建一个名为customajax.js
的新JavaScript文件,并将以下代码添加到该文件中:
jQuery(document).ready(function($) {
var passwordForm = $('#passwordprotectform');
var passwordInput = $('#passwordprotectinput');
var contentContainer = $('#contentcontainer');
var errorMessage = $('#passworderrormessage');
passwordForm.on('submit', function(e) {
e.preventDefault();
var password = passwordInput.val();
$.ajax({
type: 'POST',
url: ajax_object.ajax_url,
data: {
action: 'custom_password_protect',
post_password: password
},
success: function(response) {
if (response === '密码错误') {
errorMessage.html('密码错误,请重试。');
} else {
contentContainer.html(response);
}
}
});
});
});
将以下代码添加到functions.php文件中,以确保JavaScript文件在WordPress网站加载时被包含:
function load_custom_scripts() {
wp_enqueue_script('customajax', get_template_directory_uri() . '/customajax.js', array('jquery'), '1.0', true);
// 将Ajax请求的URL传递给JavaScript文件
wp_localize_script('customajax', 'ajax_object', array('ajax_url' => admin_url('adminajax.php')));
}
add_action('wp_enqueue_scripts', 'load_custom_scripts');
在你的文章模板中,添加一个密码表单,用于输入文章密码,并设置一个容器来显示文章内容。这里,我使用了两个示例的HTML元素,你可以根据自己的需要进行修改:
<div id="passwordprotectform">
<input type="password" id="passwordprotectinput" placeholder="输入密码">
<button type="submit">提交</button>
</div>
<div id="passworderrormessage"></div>
<div id="contentcontainer"></div>
现在,当访问包含密码保护的文章页面时,你将看到一个密码输入框和一个提交按钮。当访问者输入正确的密码并提交后,将通过Ajax加载受保护的内容。
请确保你的主题文件夹中包含名为customajax.js
的JavaScript文件,并根据需要自定义HTML元素和样式。