add_filter 대 add_action의 차이
저는 제 기능을 검토하고 있었습니다.php 그리고 CODE A가 왜 사용하는지 궁금해합니다.add_action
코드 버스가 작동하는 동안add_filter
?
CODE A의 주요 목표는 특정 범주를 포함하거나 제외하는 것입니다.
CODE B의 주요 목표는 특정 범주를 제외하는 것입니다.
사용하는 것이 정확합니까?add_action
CODE A용
그리고.add_filter
코드 B를 위해?
코드 A: "최신 게시물" 대신 홈페이지의 특정 카테고리("특징"이라고 함)를 표시합니다.
function featured_category( $query ) {
if ( $query->is_home() && $query->is_main_query() ) {
$query->set( 'category_name', 'featured' );
$query->set( 'category__not_in', array(60, 61) );
$query->set( 'posts_per_page', 5 );
}
}
add_action( 'pre_get_posts', 'featured_category' );
코드 B: 검색 결과에 대해 "후원 게시물 범주" 제외
function search_filter($query) {
if ( $query->is_search && $query->is_main_query() ) {
$query->set('post_type', 'post');
$query->set( 'category__not_in', array(60, 61) );
$query->set( 'posts_per_page', 20 );
}
return $query;
}
add_filter('pre_get_posts', 'search_filter');
pre_get_posts
작업이며 필터가 아닙니다. $query
참조를 통해 전달되므로 CODE A는 아무것도 반환하지 않고 작동합니다.
CODE B 반품$query
그러나 쿼리가 참조를 통해 전달되었기 때문에 다시 해당 코드가 작동합니다.후크의 반환 값이 아무 것에도 할당되지 않았습니다.
do_action_ref_array( 'pre_get_posts', array( &$this ) );
add_action
그리고.add_filter
다른 컨텍스트에서 사용되지만 코드는 동일합니다(add_action
의 별칭입니다.add_filter
게시된 두 코드 세트가 모두 작동하지만 올바른 사용법은add_action
.
언급URL : https://stackoverflow.com/questions/26458037/difference-between-add-filter-versus-add-action
'programing' 카테고리의 다른 글
빈 셀이 포함된 Excel 스프레드시트를 읽기 위해 NPOI를 사용하는 방법은 무엇입니까? (0) | 2023.06.11 |
---|---|
중복되지 않은 난수 목록을 만들려면 어떻게 해야 합니까? (0) | 2023.06.11 |
Excel 테이블 구조화된 참조를 사용하여 실행 합계를 만드는 방법은 무엇입니까? (0) | 2023.06.11 |
R 단위로 함수 실행 시간 측정 (0) | 2023.06.06 |
공유 메모리 할당 (0) | 2023.06.06 |