답변:
상수를 확인하십시오 DOING_AJAX
. 정의는의 첫 번째 작업 코드입니다 wp-admin/admin-ajax.php
. Jetpack과 같은 매우 이상한 플러그인 은 예기치 않은 위치에 상수를 정의 하므로 검사도 포함 할 수 is_admin()
있습니다.
예:
if ( is_admin() && defined( 'DOING_AJAX' ) && DOING_AJAX )
{
// do something
}
나는 한 이를 확인하는 간단한 방법을 요구 오래 전에,이 마지막으로 4.7.0에서 구현되었다.
따라서 WP 4.7 이상의 경우 다음을 사용할 수 있습니다.
if ( wp_doing_ajax() )
{
// do something
}
FALSE
.
false
대신 설정하지 않을 수 있다고 생각하지 않습니다 . 당신을위한 +1입니다!
좋은 소식입니다. 기능이 지금 있습니다.
File: /wp-includes/load.php
1037: /**
1038: * Determines whether the current request is a WordPress Ajax request.
1039: *
1040: * @since 4.7.0
1041: *
1042: * @return bool True if it's a WordPress Ajax request, false otherwise.
1043: */
1044: function wp_doing_ajax() {
1045: /**
1046: * Filters whether the current request is a WordPress Ajax request.
1047: *
1048: * @since 4.7.0
1049: *
1050: * @param bool $wp_doing_ajax Whether the current request is a WordPress Ajax request.
1051: */
1052: return apply_filters( 'wp_doing_ajax', defined( 'DOING_AJAX' ) && DOING_AJAX );
1053: }
간단히 말하자면, admin-ajax.php
정의는 이와 같은 것을 정의합니다.
File: /wp-admin/admin-ajax.php
11: /**
12: * Executing Ajax process.
13: *
14: * @since 2.1.0
15: */
16: define( 'DOING_AJAX', true );
17: if ( ! defined( 'WP_ADMIN' ) ) {
18: define( 'WP_ADMIN', true );
19: }
Fuxias 솔루션은 false
관리자 패널에서 작성된 아약스 요청에도 반환 됩니다. 그러나 true
요청한 데이터가 관리자보기에 제공되므로 이러한 요청은을 (를) 반환해야 합니다. 이 문제를 해결하려면 다음 기능을 사용할 수 있습니다.
function saveIsAdmin() {
//Ajax request are always identified as administrative interface page
//so let's check if we are calling the data for the frontend or backend
if (wp_doing_ajax()) {
$adminUrl = get_admin_url();
//If the referer is an admin url we are requesting the data for the backend
return (substr($_SERVER['HTTP_REFERER'], 0, strlen($adminUrl)) === $adminUrl);
}
//No ajax request just use the normal function
return is_admin();
}
DOING_AJAX
당신이 있는지 지속적으로 확인 admin-ajax.php
if ( is_admin() && defined( 'DOING_AJAX' ) && DOING_AJAX )
{
// do something
}
if ( defined( 'DOING_AJAX' ) )
그 자체로 충분합니다. 상수는 설정되어admin-ajax.php
있으므로 값을 확인할 필요가 없습니다.