-2

没有条件语句:

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 setup 功能运行完美,它将两个 javascript 文件排入队列并本地化了 admin ajax 以进行 javasscript 访问。很好,但是我的 jquery ajax 函数返回响应 0。而没有条件语句,我得到了完整的响应。显然,添加条件会改变 functions.php 处理所需文件的方式。

4

1 回答 1

1

这不起作用的原因是没有调用您的 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');

我保留了您的 enqueue 脚本挂钩,因为我不确定它是否在管理员中。

如果它在管理员中,您应该使用admin_enqueue_scripthook 代替:

if(  substr($_SERVER["REQUEST_URI"], 18, 13) == "edit-userinfo" )
    add_action( 'admin_enqueue_scripts', 'admin_ajax_setup' );
于 2013-06-21T11:53:58.463 回答