不带条件语句:
require_once( dirname( __FILE__ ) . "/edit_info_check_password.php" );
工作好。但是只要加上:
if( substr($_SERVER["REQUEST_URI"], 18, 13) == "edit-userinfo" )
require_once( dirname( __FILE__ ) . "/edit_info_check_password.php" );
在functions.php文件中,则所需文件中的函数不能完全工作。但它们部分起作用。如果我只想包含某个页面的文件,为什么不能保留条件?
EDIT -附加信息:
基本上尝试在所需的文件中添加以下操作:
add_action( 'wp_enqueue_scripts', 'admin_ajax_setup' );
add_action( 'wp_ajax_ajax-checkpasswords', 'check_info_passwords' );
add_action("wp_ajax_nopriv_ajax-checkpasswords", "check_info_passwords");
admin ajax设置函数运行完美,它将两个javascript文件排队,并将admin ajax本地化以供javascript访问。这很好,但我的jquery ajax函数返回响应0。而没有条件语句,我得到了完整的响应。显然,添加条件会改变functions.php处理所需文件的方式。
这不起作用的原因是ajax管理钩子没有被调用。
ajax钩子没有被调用的原因是因为它们没有在"edit-userinfo"页面被调用。这些ajax调用在不同的页面上处理。你的需求只会在"edit-userinfo"页面加载。
我的最佳解决方案是将ajax钩子包装在init钩子中,并添加is_admin
条件检查。
这意味着您需要包含没有条件的文件。如果每次都包含这个文件,我不认为性能应该是一个问题。
你这样设置你的文件:
if( substr($_SERVER["REQUEST_URI"], 18, 13) == "edit-userinfo" )
add_action( 'wp_enqueue_scripts', 'admin_ajax_setup' );
function init_admin_ajax_hooks()
{
if (is_admin()) {
add_action( 'wp_ajax_ajax-checkpasswords', 'check_info_passwords' );
add_action("wp_ajax_nopriv_ajax-checkpasswords", "check_info_passwords");
}
}
add_action('init', 'init_admin_ajax_hooks');
我离开你的队列脚本挂钩,因为我不确定它是否在管理或不。
如果它在admin中,你应该使用admin_enqueue_script
钩子代替:
if( substr($_SERVER["REQUEST_URI"], 18, 13) == "edit-userinfo" )
add_action( 'admin_enqueue_scripts', 'admin_ajax_setup' );