워드프레스 필터 문서?add_filter()를 이해하려고 합니다.
설명서를 여러 번 읽었는데 함수에 무슨 일이 일어나고 있는지 알아내는데 어려움을 겪고 있습니다.문서를 보고 소스코드도 보고 점점 더 혼란스러워집니다.
add_filter($tag, $hook, $priority, $args);
새로운 기능이 부모 기능을 확장한 것 같습니다.난 후크의 어떤 부분이 오버라이드 되느냐가 문제지문서의 몇 가지 예에서는 일부 변수가 새로운 $tag의 $190으로 대체되어 있는 것을 알 수 있습니다.
http://www.andrewnacin.com/2010/05/18/rethinking-template-tags-in-plugins/에서 거의 모든 것을 이해했습니다.
하지만 어떻게 논쟁을 넘기고 결국엔 어떤 게 무시되는지 알 수가 없었어요
잘 부탁드립니다.
add_filter()
는 의 동반 입니다.apply_filters()
.전에apply_filters
필터에 된다('필터').$tag
합니다.add_filter()
를수 있습니다.add_filter
태그를 위한 필터를 등록합니다.apply_filters()
이 태그명으로 실행되면 등록된 모든 필터가 순서대로 호출됩니다.필터는 조작 기능을 통해 데이터를 전달하는 데 사용됩니다.wp_list_pages의 페이지입니다.페이지 목록에서 줄 바꿈을 제거하는 데 사용합니다.작동 방식은 다음과 같습니다.
먼저 하나의 파라미터를 취득하고 그 파라미터를 조작한 후 반환하는 함수를 정의합니다.
function my_list_pages_filter($pages){
$pages = preg_replace( array("\n","\r"), '', $pages );
return $pages;
}
다음으로 필터 훅을 추가합니다.add_filter ( 'wp_list_pages', 'my_list_pages_filter').
add_filter
는 WordPress에 "WordPress 기능이 때"를 나타냅니다.apply_filters
인 상태에서 은 'wp_list_pages'입니다.my_list_pages_filter
" 의 값 등1 개의 값을 합니다." 필터는 1 개의 값을 반환합니다.필터는 함수가 1 개의 값을 반환하는 것을 상정하고 있습니다.
이러한 기능을 통해 입력을 다시 보내기 전에 조작할 수 있습니다.
do_action
츠키다필터 기능에 정보를 송신하려면 , 다음의 순서를 실행합니다(예에서 참조).
<div id="content" <?php $class='post post_content'; echo apply_filters('my_custom_classes', $class); ?>>
그리고 당신의 직무에.php 파일 추가:
add_filter('my_custom_classes','my_custom_classes_function');
function my_custom_classes_function($classes){
$output 'class="'. $classes.'"';
return $output;
}
필터의 기본적인 사용법이지만, 이것은 시작입니다.몇 가지 확장 기능을 통해 동일한 예제의 필터를 사용할 수 있는 방법을 실제로 파악할 수 있습니다.
function my_custom_classes_function($classes){
$classes = explode( ' ', $classes );
if(is_home())
$classes[] = 'home_content';
if(is_single())
$classes[] = 'single_content';
if(is_page())
$classes[] = 'page_content';
if(is_tag())
$classes[] = 'tag_content';
$output 'class="'. implode( ' ', $classes ) .'"';
return $output;
}
크리스, 당신은 몇 가지 일로 혼란스러워하는 것 같군요.
- 필터와 액션은 관련되지 않습니다(둘 다 WP가 '훅'이라고 부르는 타입이지만 그 외에는 관련이 없습니다).위에서 "with my filter..."라고 했는데 do_action()은 필터가 아닌 액션용입니다.
- Tag(예를 들어 add_filter, apply_filter, add_action, do_action에 대한 태그 매개 변수)는 XML/HTML 의미의 태그와는 관련이 없습니다(알고 있을 수도 있음).
- 액션을 호출할 때 do_action()을 사용하여 필수 태그 이름 외에 인수를 전달해야 합니다.위에서 do_action('content_class')이라고 불렀습니다.첫 번째로 태그명이 "content_class"인 액션을 등록하지 않으면 효과가 없습니다.다음으로 액션 함수 content_class_filter(필터와는 무관하므로 content_class_action으로 명명하는 것이 좋습니다)에는 옵션 파라미터 $classes가 있습니다.태그 이름 뒤에 do_action 인수를 지정하지 않았기 때문에 항상 " 입니다.또한 $output = .. 라고 쓰려고 했을 수도 있습니다.
- 필터는 어떤 것도 "덮어쓰기"하지 않습니다(특히 OO 언어 의미).동일한 태그를 가진 여러 필터를 추가하면 태그의 apply_filters가 호출될 때 모두 호출됩니다.priority 파라미터를 사용하여 순서를 제어할 수 있습니다.액션도 마찬가지입니다.
그것은 매우 좋은 기사지만, 그럼에도 불구하고 나는 뭔가 어리석은 실수를 해야 한다.
다음 "add_filter" 기술을 사용하여 "Screen Options" 아래의 WP3+ 탐색 메뉴에서 일부 항목을 삭제하려고 합니다.
wp-admin/param/nav-param.php:
function wp_nav_menu_manage_columns() {
return array(
'_title' => __('Show advanced menu properties'),
'cb' => '<input type="checkbox" />',
'link-target' => __('Link Target'),
'css-classes' => __('CSS Classes'),
'xfn' => __('Link Relationship (XFN)'),
'description' => __('Description'),
);
}
mytheme/function.php:
원래 함수는 일부 클래스의 일부가 아닌 것 같습니다.
add_filter('wp_nav_menu_manage_columns', 'new_wp_nav_menu_manage_columns');
function new_wp_nav_menu_manage_columns() {
return array(
'_title' => __('Show advanced menu properties'),
'cb' => '<input type="checkbox" />',
'link-target' => __('Link Target'),
);
}
그 결과, 원래의 「스크린 옵션」과 모든 항목이 표시됩니다.WP 코어에서 직접 'css-timeout' => _('CSS Classes'), 'link Relationship (XFN)', 'description' => __('Description')' 행을 삭제하면 모든 것이 정상으로 보이므로 이 WPCTons를 덮어쓸 수 있을지 모르겠습니다.
조언해 주셔서 감사합니다.안부를 전합니다, 마일로
템플릿 파일에 후크를 배치했습니다.
<div id="content" <?php content_class() ?>>
후크는 함수 파일에서 자동으로 실행됩니다.
function content_class() {
do_action('content_class');
}
필터를 사용하여 이 함수에 수업을 전달하려고 합니다.
function content_class_filter($classes='') {
$output 'classes="'. $classes.'"';
return $output;
}
드디어 필터 쓰는 법도 헷갈리네요
언급URL : https://stackoverflow.com/questions/2983616/wordpress-filters-documentation-trying-to-understand-add-filter
'source' 카테고리의 다른 글
Woocommerce가 카트 후크에 추가되었습니다(제품이 카트에 정상적으로 추가된 후). (0) | 2023.02.14 |
---|---|
WordPress - 업로드 시 이미지 흐림 (0) | 2023.02.14 |
Angular에서 객체를 푸시하는 방법ngRepeat 어레이 간의 JS (0) | 2023.02.14 |
AngularJS: 부모 스코프가 (격리된 스코프를 사용하여) 양방향 바인딩으로 업데이트되지 않음 (0) | 2023.02.14 |
WordPress에서 wpdb 클래스를 사용하여 외부 데이터베이스 액세스 (0) | 2023.02.14 |