source

Wordpress에서 액션 우선순위를 변경하려면 어떻게 해야 합니까?

gigabyte 2023. 3. 10. 22:04
반응형

Wordpress에서 액션 우선순위를 변경하려면 어떻게 해야 합니까?

어린이 테마로 주제 틀을 사용하고 있습니다.여러 개의 훅이 있지만 특히 주제_header()를 보고 있습니다.주제_header() 후크는 (add_action을 통해) 다음 액션을 추가합니다.

<?php
  add_action('thematic_header', 'thematic_brandingopen', 1);
  add_action('thematic_header', 'thematic_blogtitle', 3);
  add_action('thematic_header', 'thematic_blogdescription', 5);
  add_action('thematic_header', 'thematic_brandingclose', 7);
  add_action('thematic_header', 'thematic_access', 9);
?>

행동의 내용은 무관합니다.

제 질문은 다음과 같습니다.문제의 5가지 액션의 우선순위를 변경하려면 어떻게 해야 합니까?예를 들어 tematic_access()가 tematic_brandingopen()보다 먼저 로드되도록 합니다.제가 알아낸 유일한 방법은 액션을 삭제하고 다시 추가하는 것입니다.

<?php
  function remove_thematic_actions() {
    remove_action('thematic_header', 'thematic_access');
    add_action('thematic_header', 'thematic_access', 0); //puts it above thematic_brandingopen
  } 
  add_action ('init', 'remove_thematic_actions');

그건 아주 간단한 일을 하는 멍청한 방법 같아.WP에 액션을 저장하는 데이터 구조에 접근하여 정렬/재주문할 수 있는 방법이 있는가?

WordPress에서

훅이 기본 10 이외의 priority를 사용하여 등록되어 있는 경우 remove_action 콜에서도 priority를 지정해야 합니다.

그래서 먼저 다음을 사용하여 제거할 수 있을 것 같습니다.

remove_action('thematic_header', 'thematic_brandingopen', 1);
remove_action('thematic_header', 'thematic_access', 9);

다른 방법으로 다시 추가합니다.priority

add_action('thematic_header', 'thematic_access', 1);
add_action('thematic_header', 'thematic_brandingopen', 2);

자체 프로모션을 하는 것은 아니지만 WordPress 플러그인을 통해 코드화되지 않는 솔루션을 제공하기 위해 몇 가지 작업을 수행했습니다.내 플러그인을 사용하면 UI를 통해 다양한 등록된 후크의 우선순위를 설정하고 실행 시 코드가 수정되지 않도록 덮어쓰기를 수행할 수 있습니다.

이것이 누군가에게 도움이 될 경우에 대비하여, 가변 액션은 다음과 같이 저장됩니다.

global $wp_filter;
var_dump( $wp_filter[$hook_name] );

액션이 추가되었을 때 키가 우선순위가 되는 배열입니다.

언급URL : https://stackoverflow.com/questions/12539947/how-can-i-change-action-priority-in-wordpress

반응형