programing

워드프레스 아약스 기법

bestprogram 2023. 10. 14. 10:25

워드프레스 아약스 기법

저는 최근에 AJAX를 워드프레스에 구현하는 게임을 하고 있습니다.플러그인이 많은 건 알지만, 제가 직접 만들고 싶었습니다.

AJAXifified WordPress 관련 기사에서는 대부분의 사람들이 admin-ajax.php를 사용하여 AJAX 요청을 처리할 것을 권장합니다.제가 처음으로 생각한 방법은 사용자 지정 get_header()와 get_footer()를 만드는 것이었습니다.

일길

// Boolean function ?ajax=true
function is_ajax () {
  if($_REQUEST['ajax']) {
    return true;
  } else {
    return false;
  }
}

function ajax_get_header () {
  if(is_ajax()) {
    get_header('ajax'); 
    /* Insert header-ajax.php which
    includes only google analytics tracking code and some minor stuff */
    return true;
  } else {
    get_header();  
    // Standard header
    return true;
  }
}

/* Function ajax_get_footer() pretty much the same */

그러면 페이지 템플릿은 다음과 같습니다.

<?php ajax_get_header(); ?>

<!-- Content -->

<?php ajax_get_footer(); ?>

물론 아약스를 만드는 것이 기본적인 방법입니다.이 방법은 간단하고 깨끗해 보입니다.반면, 많은 사람들은 AJAX 호출을 잡기 위해 후크를 만들어 내장된 기능을 사용할 것을 권장합니다.

제2길

function process_ajax(){
  /* Show the page or whatever */
}
add_action('wp_ajax_nopriv_ajax', 'process_ajax');
add_action('wp_ajax_ajax', 'process_ajax');

그리고 AJAX의 전화를 admin-ajax.php로 가리키고 있습니다.

어떤 걸로 할까요?

저는 이 두 가지 방법을 모두 시도해 보았는데, 첫 번째 방법이 두 번째 방법보다 로딩 속도가 현저히 빠르다는 것을 발견했습니다.같은 조건에서 첫 번째 방법(ajax_get_header)은 페이지를 로드하는 데 약 400ms가 걸렸고 두 번째 방법(admin-ajax.php)은 약 800ms가 걸렸습니다.왜 그런지 모르겠습니다, 두가지 방법 모두 WP 코어를 로드하고 거의 동일한 작업을 수행합니다.

그래서 제가 묻고 싶은 것은, admin-ajax.php를 통해 AJAX에 전화를 거는 심각한 이유가 있나요?꼭 필요한가요?또한 권장 방법을 통해 통화를 처리하는 데 시간이 더 걸리는 이유는 무엇입니까?

admin-ajax.php가 코어 관리 훅과 다른 기능 호출과 같은 많은 것들을 처리하기 때문에 당신의 첫 번째 방법은 항상 워드프레스 자신의 ajax보다 빠를 것입니다. 이것은 결국 전체 ajax 호출을 꽤 크게 만듭니다.

첫 번째 방법으로, 당신은 자신의 기능과 출력 이외에 다른 것을 신경쓰지 않습니다.그러면 성능이 향상됩니다.

무엇을 사용할 것인지에 대한 어렵고 빠른 규칙은 없습니다. 첫 번째 방법은 일을 더 빨리 할 수 있지만 워드프레스의 핵심 관리 기능과 연결할 수 없기 때문에 어떤 목적에서는 불리할 수 있습니다.

admin-ajax.php 참조

$core_actions_get = array(
'fetch-list', 'ajax-tag-search', 'wp-compression-test', 'imgedit-preview', 'oembed-cache',
'autocomplete-user', 'dashboard-widgets', 'logged-in',
);

$core_actions_post = array(
'oembed-cache', 'image-editor', 'delete-comment', 'delete-tag', 'delete-link',
'delete-meta', 'delete-post', 'trash-post', 'untrash-post', 'delete-page', 'dim-comment',
'add-link-category', 'add-tag', 'get-tagcloud', 'get-comments', 'replyto-comment',
'edit-comment', 'add-menu-item', 'add-meta', 'add-user', 'autosave', 'closed-postboxes',
'hidden-columns', 'update-welcome-panel', 'menu-get-metabox', 'wp-link-ajax',
'menu-locations-save', 'menu-quick-search', 'meta-box-order', 'get-permalink',
'sample-permalink', 'inline-save', 'inline-save-tax', 'find_posts', 'widgets-order',
'save-widget', 'set-post-thumbnail', 'date_format', 'time_format', 'wp-fullscreen-save-post',
'wp-remove-post-lock', 'dismiss-wp-pointer', 'upload-attachment',
);

언급URL : https://stackoverflow.com/questions/9947674/wordpress-ajax-techniques