-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");

管理者 ajax セットアップ機能は完全に動作し、2 つの JavaScript ファイルをキューに入れ、javasscript アクセス用に管理者 ajax をローカライズしました。それは素晴らしいことですが、私の jquery ajax 関数は応答 0 を返します。一方、条件ステートメントがなければ、完全な応答が得られます。明らかに、条件を追加すると、functions.php が必要なファイルを処理する方法が変わります。

4

1 に答える 1

1

これが機能しない理由は、ajax admin フックが呼び出されていないためです。

ajax フックが呼び出されない理由は、それらが「edit-userinfo」ページで呼び出されないためです。これらの ajax 呼び出しは別のページで処理されます。あなたのrequireは「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');

管理者にあるかどうかわからないため、エンキュー スクリプト フックをそのまま残しました。

管理者にある場合は、admin_enqueue_script代わりにフックを使用する必要があります。

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