apply_filters ()에서
apply_filters( $tag, $value, $var ... );
$value
와에 머리를 감는 데 문제가 $var
있습니다. 코덱을 읽었으며 $value
수정 할 수 $var
없는 것처럼 들리지만 야생에서 이것에 대한 예를 찾지 못했습니다. 변수를 전달하는 방법으로 사용되는 것 같습니다. 어떤 경우에, 그것과 $var
? 의 차이점은 무엇 입니까?
apply_filters ()에서
apply_filters( $tag, $value, $var ... );
$value
와에 머리를 감는 데 문제가 $var
있습니다. 코덱을 읽었으며 $value
수정 할 수 $var
없는 것처럼 들리지만 야생에서 이것에 대한 예를 찾지 못했습니다. 변수를 전달하는 방법으로 사용되는 것 같습니다. 어떤 경우에, 그것과 $var
? 의 차이점은 무엇 입니까?
답변:
더 나은 이름으로 함수를 확인하십시오.
apply_filters(
$filter_name, // used for add_filter( $filter_name, 'callback' );
$value_to_change, // the only variable whose value you can change
$context_1, // context
$context_2 // more context
);
따라서 해당 함수가 다음과 같이 호출되면
// wp-login.php line 94
apply_filters( 'login_body_class', $classes, $action );
당신이 사용할 수있는 …
add_filter( 'login_body_class', 'function_to_change_login_body_class', 10, 2 );
… 그리고 그 함수에 전달 된 두 개의 변수를 얻습니다. 첫 번째를 반환하면 두 번째는 더 많은 컨텍스트를 제공합니다.
function function_to_change_login_body_class( $classes, $action )
{
if ( 'login' === $action )
$classes[] = 'foo';
if ( 'postpass' === $action )
$classes[] = 'bar';
return $classes;
}
추가 변수는 의사 결정을 쉽게하고 변경하지 않도록하기위한 것입니다.
필터 는 데이터에 대한 작업을 수행하기 직전에 (예 : 데이터베이스에 추가하거나 브라우저 화면에 보내는 등) 특정 시점에 WordPress에서 데이터를 전달하는 기능입니다. 필터는 데이터베이스와 브라우저 사이 (WordPress가 페이지를 생성 할 때)와 브라우저와 데이터베이스 사이에 있습니다 (WordPress가 새 게시물과 주석을 데이터베이스에 추가 할 때). WordPress의 대부분의 입력 및 출력은 하나 이상의 필터를 통과합니다. WordPress는 기본적으로 일부 필터링을 수행하며 플러그인은 자체 필터링을 추가 할 수 있습니다.
사용자가 일부 특정 데이터 (값, 함수의 출력 등)를 변경할 수 있도록 필터 후크는 apply_filters
기능을 통해 제공됩니다 .
이러한 필터 후크에는 필터의 이름 (또는 태그 )과 데이터 를 필터링 (즉, 어떤 방식 으로든 변경)하는 데 사용되는 기능 이름이 포함됩니다 .
게시물 제목을 변경하려면 the_title
다음과 같이 정의 된 필터 후크를 사용할 수 있습니다 .
apply_filters( 'the_title', $title, $id );
즉, 필터에 tag / name the_title
이 있고 첫 번째 매개 변수 $title
는 변경 될 데이터 (예 : 게시물 제목)이고 두 번째 매개 변수 $id
는 추가 정보 (이 경우 게시물 ID)입니다.
예를 들어 대문자 로 모든 게시물 의 제목 을 표시하려면 다음 줄을 사용할 수 있습니다.
add_filter('the_title', 'strtoupper');
우리는 한 번 봐 걸릴 경우 add_filter
기능을, 우리는 다음과 같이 정의된다 참조 :
add_filter( $tag, $function_to_add, $priority, $accepted_args );
첫 번째 및 두 번째 (필수) 매개 변수 만 지정했지만 세 번째 및 네 번째 매개 변수는 각각의 기본값 (예 : 10
및 1
)으로 설정되었습니다.
당신이 원하는 경우 에만 특정 게시물을 필터링 , 당신은 (다음 ID이 필터의 경우) 추가 정보를 사용할 수 있습니다. 이렇게하려면 매개 변수 수 (이 경우 2)를 지정해야하며,이를 다시 수행하려면 우선 순위 매개 변수 (인수 수 앞에 오는)를 지정해야합니다.
ID가 42 인 게시물의 제목에만 영향을 주려고한다고 가정하면 다음과 같습니다.
add_filter('the_title', 'my_strtoupper', 10, 2);
function my_strtoupper($title, $id) {
if (42 === $id) return strtoupper($title);
return $title;
} // function my_strtoupper
이 경우 사용 가능한 4 개의 매개 변수를 모두 지정해야합니다.
특정 필터의 사용 가능한 매개 변수 수를 식별하려면 정의 된 위치 (이 경우 : here ) 를 찾아야합니다 .
참고 문헌 :