WP_AJAX는 WordPress의 내장 AJAX 시스템과 인터페이스하기 위한 클래스입니다. 이 클래스는 개발자를 기존 후크 기반 시스템에서 깔끔한 컨트롤러 스타일 구조로 완전히 추상화하도록 설계되었습니다. 간단히 클래스를 정의하고 url($params = []) 메소드를 사용하여 URL을 에코하고 run() 메소드에서 실행하려는 코드를 작성하십시오.
Class ExampleAction extends WP_AJAX {
protected $ action = ' example-action ' ;
protected function run (){
// Your Code Here!
update_option ( ' name ' , $ this -> get ( ' name ' ));
}
}
ExampleAction:: listen ();
ExampleAction::url() // http://example.com/wp-admin/admin-ajax.php?action=example-action
ExampleAction:: url ([ ' name ' => ' Anthony Budd ' ]) // http://example.com/wp-admin/admin-ajax.php?action=example-action&name=Anthony%20Budd
예제액션.php
< a href =" <?= ExampleAction::url(['name' => 'Anthony Budd']) ?> " > This is a link </ a >
페이지-Template.php
$ ( '.submit-btn' ) . click ( function ( ) {
$ . post ( 'http://example.com/wp-admin/admin-ajax.php' , {
action : 'example-action' ,
name : $ ( '.name-field' ) . val ( ) ,
} , function ( data ) {
console . log ( data )
} , 'JSON' ) ;
} ) ;
script.js
작곡가와 함께 WP_AJAX 필요
$ composer require anthonybudd/wp_ajax
WP_AJAX 클래스를 다운로드하고 function.php 파일 상단에 요구하세요.
require ' src/WP_AJAX.php ' ;
WP_AJAX를 확장하는 새 클래스를 만들어야 합니다. 이 클래스에는 $action이라는 보호된 속성 하나와 run()이라는 보호된 메서드 하나가 있어야 합니다. $action은 AJAX 작업 이름이 됩니다. wp_ajax_(action)을 참조하세요.
Class Example extends WP_AJAX
{
protected $ action = ' example ' ;
protected function run (){
echo " Success! " ;
}
}
다음으로 정적 메서드인 Listen()을 호출해야 합니다. 그러면 WordPress에서 올바른 AJAX 끝점에 도달했을 때 run() 메서드를 호출하는 방법을 알 수 있도록 모든 후크가 생성됩니다. 참고: 각 AJAX 작업에 대해 listening() 메서드를 호출해야 합니다.
ExampleAJAX:: listen ();
로그인한 사용자만 AJAX 엔드포인트에 액세스하도록 허용하려면 수신 메소드에 FALSE 인수를 추가하세요.
ExampleAJAX:: listen ( FALSE );
데이터로 AJAX 요청에 응답하려는 경우 JSONResponse() 메서드는 자동으로 콘텐츠 유형 헤더를 'application/json'으로 설정하고 메서드에 제공된 데이터를 JSON으로 인코딩합니다.
나는 WordPress에 wp_send_json()이라는 기능이 있다는 것을 알고 있지만 이 방법을 포함시킨 것이 WP 개발자를 얼마나 짜증나게 하는지 알고 있기 때문에 제거하지 않을 것입니다.
Class ExampleAJAX extends WP_AJAX {
..
protected function run (){
$ post5 = get_post ( 5 );
$ this -> JSONResponse ( $ post5 );
}
}
Example:: url () // Returns the url of the ajax endpoint. Example http://ajax.local/wp/wp-admin/admin-ajax.php?action=example
$ this -> isLoggedIn (); // Returns TRUE or FALSE if the current visitor is a logged in user.
$ this -> has ( $ key ); // has() will return TRUE or FALSE if an element exists in the $_REQUEST array with a key of $key
$ this -> get ( $ key , [ $ default = NULL ]); // The get() method will return the specified HTTP request variable. If the variable does not exist it will return NULL by default. If you would like to set a custom string as the default, provide it as the second argument.
$ this -> requestType (); // Returns 'PUT', 'POST', 'GET', 'DELETE' depending on HTTP request type
$ this -> requestType ( ' POST ' ); // Returns (bool)
$ this -> requestType ([ ' POST ' , ' PUT ' ]); // Returns (bool)
Class CreatePost extends WP_AJAX
{
protected $ action = ' create_post ' ;
protected function run (){
if ( $ this -> isLoggedIn ()){
$ post = [
' post_status ' => ' publish '
];
if ( $ this -> requestType ([ ' POST ' , ' put ' ]) ){
$ post [ ' post_content ' ] = ' This request was either POST or PUT ' ;
} else if ( $ this -> requestType ( ' get ' ) ){
$ post [ ' post_content ' ] = ' This request was GET ' ;
}
$ post [ ' post_title ' ] = sprintf ( ' This post was created by %s ' , $ this -> user -> data -> user_nicename );
wp_insert_post ( $ post );
$ this -> JSONResponse ( $ post );
}
}
}
CreatePost:: listen ();
// http://example.com/wp-admin/admin-ajax.php?action=create_post