我一直在开发一个非常简单的WordPress插件,并想对页面上的某些字段进行实时验证,这正是我遇到的问题。我一直在到处寻找有效的东西,但我根本无法让它发挥作用。
我一直在努力让ajax正常工作,但我知道我错过了一些显而易见的东西,我就是想不通。
主函数文件包括这个来注册我的js文件。
function on_screen_validation() {
wp_enqueue_script( "field_validation", path_join(WP_PLUGIN_URL, basename( dirname( __FILE__ ) )."/field-validation.js"), array( 'jquery' ) );
}
add_action( 'admin_print_scripts', 'on_screen_validation' );
js运行此代码来捕获onblur命令,并将值传递给php验证文件。
jQuery(document).ready(function() {
//run field validation on username on blur
jQuery('.valusername').blur(function() {
var usernameID = jQuery(this).attr('id');
var usernameVal = jQuery('#'+usernameID).val();
var thisFunction = 'validateUserName';
jQuery.post("mywebaddress...validation.php",{Function: thisFunction, thevars: usernameVal}, function(data) {
alert(data); //would update validation message here
});
});
});
validation.php脚本如下所示:
if(isset($_POST['Function'])){
call_user_func($_POST['Function'], $_POST['thevars']);
}
function validateUserName($username){
if ( username_exists($username) ) {
echo $username.' does exist';
} else {
echo $username.' doesnt exist';
}
}
显然,我现在只是使用警报来确保数据得到正确检查。
如果我去掉WordPress的username_exists函数,只回显一个字符串,它就可以正常工作。但是对于username_exists,它会创建一个500内部服务器错误。我需要知道如何获得这个外部validation.php文件来重新确认WordPress功能(我认为),但到目前为止我发现的一切都不起作用。
感谢阅读。。。很抱歉解释得太长了,我只是想确保上下文都在那里,所以它有意义(我希望!)!
干杯,马特
我在Wordpress Answers上问了同样的问题-https://wordpress.stackexchange.com/questions/20915/wordpress-plugin-admin-page-using-wordpress-function-in-linked-php-file
我认为最好简单地链接到帮助我的答案=)谢谢大家。
validateUserName
函数中缺少一个右大括号:
function validateUserName($username) {
if ( username_exists($username) ) {
echo $username.' does exist';
} else {
echo $username.' doesn''t exist';
}
}
应该起作用。
然而,作为一个函数,最好返回一个值,并自己响应结果:
function validateUserName($username) {
if ( username_exists($username) ) {
return $username.' does exist';
} else {
return $username.' doesn''t exist';
}
}
echo validateUserName($someUsername);