没有条件陈述:
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文件中,然后所需文件中的函数不能完全运行。但他们部分工作。如果我只想包含某个页面的文件,为什么我不能保持这个条件?
编辑 - 其他要求的信息:
基本上尝试在所需文件中添加以下操作:
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文件排入队列并将管理员ajax本地化为javasscript访问。这很好,但我的jquery ajax函数返回响应0.而没有条件语句,我得到完整的响应。显然,添加条件会改变functions.php处理所需文件的方式。
答案 0 :(得分:1)
这不起作用的原因是因为没有调用你的ajax管理钩子。
未调用ajax挂钩的原因是因为它们未在“edit-userinfo”页面中调用。那些ajax调用是在不同的页面处理的。您的要求只会加载到“edit-userinfo”页面。
我的最佳解决方案是在init挂钩中包装ajax挂钩并添加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');
我保留了你的enqueue脚本钩子,因为我不确定它是否在管理员中。
如果是在管理员中,则应使用admin_enqueue_script
挂钩:
if( substr($_SERVER["REQUEST_URI"], 18, 13) == "edit-userinfo" )
add_action( 'admin_enqueue_scripts', 'admin_ajax_setup' );