워드프레스에서 apply_filters()를 적용하기 전에_filter()를 추가해야 합니까?
워드프레스 플러그인을 이해하려고 합니다.
apply_gettext('gettext', $recations->gettext($text), $text, $domain );
워드프레스의 모든 코드를 찾고 있지만 찾을 수 없습니다.
add_filter( 'gettext', ......);
이 플러그인에 대한 add_filter가 없는 이유는 무엇입니까?아니면 내가 놓친게 있나요?다음과 같습니다.
do_action(wp_loaded');
찾을 수 없습니다.
add_action(wp_loaded), ......;
apply_filters
는 '이 이름을 가진 필터가 있으면 이 매개 변수를 사용하여 첨부된 콜백을 실행하십시오'와 같습니다.만약 없다면,add_filter
그 이름에 대해서는, 그것은 그와 함께 실행될 필터가 없다는 것을 의미합니다.apply_filters
지금 전화를 드립니다.
마찬가지입니다.do_action
그리고.add_action
.
저도 PHP - WordPress 스택 초보자이지만, 제가 이해한 바로는 그렇습니다.
플러그인이 호출합니다.apply_filters
가진 것도 없이add_filter
그들의 코드는 웹사이트 사용자들이 그들의 플러그인에 사용자 정의 로직을 추가할 수 있도록 하는 것입니다.당사 - 사용자는 자체 기능을 추가하여 사용할 수 있습니다.add_filter
우리의 기능을 등록할 수 있습니다.
예를 들어 이 코드 조각은 플러그인에서 가져온 것입니다.보통은 모든 제품을 보여주지만 특정 제품을 보여주지 않는 방법을 제공합니다.
// Plugin's
if (apply_filters( 'plugin_show_products', true, $product->get_id() ) ) {
$this->show_products();
}
따라서, 사용자가 사용자 정의를 원하는 경우,다음과 같이 자체 기능을 추가할 수 있습니다.functions.php
)
// Our custom changes
function my_own_changes($boolean, $product_id) {
if ( $product_id === 5 ) return false;
return true;
}
add_filter( 'plugin_show_products', 'my_own_changes', 10, 2 );
이 뜻은 다음과 같습니다.플러그인은 정상적으로 동작하지만, 제 사이트의 경우 ID가 5인 제품은 표시되지 않습니다!
플러그인이나 테마에서 이런 종류의 코드를 발견했습니다.apply_filter
반드시 존재하지 않고 사용됩니다.filter
아니면add_filter
이 경우에, 어디서apply_filters
필터 없이 사용됩니다. 실행할 위치에서 함수를 다시 호출해야 합니다.예를 들어, 테마의 머리글에 있습니다.
다음은 에서 다시 호출되는 함수에 사용되는 적용 필터의 예입니다.header.php
if ( ! function_exists( 'header_apply_filter_test' ) ) {
function header_apply_filter_test() {
$filter_this_content = "Example of content to filter";
ob_start();
echo $filter_this_content;
$output = ob_get_clean();
echo apply_filters( 'header_apply_filter_test', $output );//used here
}
}
지금은header.php
파일, 어디에도 연결되어 있지 않기 때문에 이 함수를 호출해야 합니다.이 경우 헤더에 출력을 표시하려면 다음과 같이 함수를 호출합니다.
<?php header_apply_filter_test(); ?>
이 코드를 후크로 작성하면 헤더에 출력을 표시하는 것과 같은 작업을 수행할 수 있습니다.
add_filter('wp_head', 'header_apply_filter_test');
if ( ! function_exists( 'header_apply_filter_test' ) ) {
function header_apply_filter_test() {
$filter_this_content = "Example of content to filter";
ob_start();
echo $filter_this_content;
$output = ob_get_clean();
echo $output;
}
}
이 두 번째 옵션의 경우 apply_filters를 사용하여 콜백 함수를 호출할 수 있습니다.header_apply_filter_test()
필터가 존재하기 때문입니다.
따라서 제가 보기에는 어느 쪽이든 효과가 있기 때문에 핵심은 활용 사례입니다!
언급URL : https://stackoverflow.com/questions/5401404/do-i-have-to-add-filter-before-apply-filters-in-wordpress
'itsource' 카테고리의 다른 글
"if" 문을 사용하여 마지막 명령의 종료 코드 확인 (0) | 2023.09.14 |
---|---|
Mariadb 열 저장소에서 텍스트 데이터 형식을 만들 수 없습니다. (0) | 2023.09.14 |
MySQL 구성 파일의 위치(즉, my.cnf)가 지정되지 않았습니다. (0) | 2023.09.14 |
NPM에서 지정된 패키지에 의존하는 설치된 모든 패키지를 어떻게 찾습니까? (0) | 2023.09.14 |
여러 개의 LIKE 값이 있는 SHOW TABLES (0) | 2023.09.14 |