하위 테마에서 작동하지 않는 after_setup_theme의 remove_action


17

자식 테마를 사용하여 우아한 테마 테마에 대한 테마 작업을 제거하려고합니다. 이것은 부모 테마 functions.php의 어디에서나 add_action 코드 후 작업을 제거 할 때 작동합니다. 그러나 자식 테마 functions.php에서 추가하면 작동하지 않습니다.

remove_action ('after_setup_theme', 'et_pb_setup_theme' , 10);

제거 조치는 추가 조치와 우선 순위가 10입니다. 작동하지 않습니까?

add_action( 'after_setup_theme', 'et_pb_setup_theme' ); //parent theme add_action

답변:


25

@cybmeta가 이미 지적했듯이 제거하기에는 너무 이릅니다. 따라서 실제 제거를 연기해야합니다. 예를 들면 다음과 같습니다.

add_action( 'after_setup_theme', 'wpdev_170663_remove_parent_theme_stuff', 0 );

function wpdev_170663_remove_parent_theme_stuff() {

    remove_action( 'after_setup_theme', 'et_pb_setup_theme' );
}

일했다! 나는 비슷한 것을 시도했지만 내 나쁜! 자식 함수 .php 에서 여전히 존재하지 않는 동작 을 확인하기 위해 has_action 을 사용하여 조건을 설정했기 때문에 remove_action 전에 작동하지 않았습니다! 고마워요! function etn(){ if(has_action('after_setup_theme', 'et_pb_setup_theme')){ remove_action ('after_setup_theme', 'et_pb_setup_theme' ); } } add_action ('after_setup_theme', 'etn', 9);
흡연 보안관

3

자식 테마의 functions.php 파일은 부모 테마 functions.php 바로 앞에로드되므로 remove_action자식 테마에서 실행할 때 제거하려는 동작이 나중에 추가되므로 제거되지 않습니다.


1
.. 그러나 우선 순위 10이 아니고 after_setup_theme 후크가 그것을 처리해야합니까? 어쨌든 어떻게해야합니까?
흡연 보안관

아니요, 우선 순위 주장은 아닙니다. 존재하지 않는 것을 제거 할 수 없습니다. 다시 말해, ( codex 에서 가져온 ) 액션이 추가되기 전에 액션을 성공적으로 제거 할 수 없습니다.
cybmeta

1
그렇다면 부모 테마로 설정된 액션을 어떻게 제거 할 수 있습니까?
Aerendir

1

시도하십시오 (이름 만 변경하십시오).

add_action( 'init' , 'myyy_remove' , 15 );
function myyy_remove() {
        remove_action('ACTION_NAME', 'my_function_name_Something'   ,11);
        remove_action('ACTION_NAME', 'my_function_name_Another'     ,11);
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.