WordPress插件管理页面 - 在链接的php文件中使用WordPress功能

时间:2011-06-24 04:24:26

标签: php wordpress jquery

我一直在开发一个非常简单的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函数(我想),到目前为止我找不到任何东西。

感谢您的阅读......对不起,长期以来我只是想确保上下文全部存在,所以它有意义(我希望!)!

干杯,马特

2 个答案:

答案 0 :(得分:1)

我在Wordpress Answers上问了同样的问题 - https://wordpress.stackexchange.com/questions/20915/wordpress-plugin-admin-page-using-wordpress-function-in-linked-php-file

我认为最好只是链接到帮助我的答案=)谢谢大家。

答案 1 :(得分:0)

您在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);