WordPress 위젯(또는 사이드바) 후크가 있습니까?
간단한 필터로 모든 위젯 출력을 필터링하려고 하는데, 후크를 찾을 수 없어서 올바른 방향을 가리키고 싶었습니다.아니면 제 노력이 불가능할 수도 있나요?
간단한 필터는 다음과 같습니다.
function clean_widget_output( $input ) {
return str_replace( array( "\t", "\n", "\r" ), '', $input );
}
add_[FILTER OR ACTION]( 'need_a_hook', 'clean_widget_output', 99 );
좋은 생각 있어요?저는 PHP에 익숙하지 않지만, 돌아다닐 수 있습니다.
이것은 WordPress의 위젯에 의해 분출된 가공할 HTML을 청소할 필요성/욕망에서 비롯되었다.나는 그들이 하는 일을 좋아하지만, 일부 결과물은 나를 울게 만든다.
답은 '오빠'입니다.output buffering위젯이나 사이드바 후크를 찾을 수 없었기 때문입니다.
긴 대답은 다음과 같습니다.
function tidy_sidebar( $sidebar_name_or_id )
{
ob_start();
$bool = dynamic_sidebar( $sidebar_name_or_id);
if ( $bool )
{
$str = ob_get_contents();
$str = 'do cleanup stuff...';
}
else
{
$str = '';
}
ob_end_clean();
return $str;
}
전화 주세요.echo tidy_sidebar( 'sidebar-name-or-id' );당신의 테마에서.
비슷한 문제가 있어서 Adam Brown의 모든 WordPress 필터 훅 목록을 살펴본 결과 필요한 훅이 존재합니다.widget_titlepxl이 언급한 바와 같이) 단, 모든 위젯 출력을 가져올 수 있는 후크는 없습니다.나에게 효과가 있는 해결책을 자세히 설명해야겠다고 생각했어요.
이론상으로는, 「 」는widget_title후크는 블로그의 모든 위젯에 영향을 줄 것입니다만, 일부 서드파티 위젯은 제목 필터를 적용하기 위해 필요한 코드 행을 포함하지 않기 때문에 오류가 발생하지 않을 수 있습니다.그러나 이 방법은 효과가 있었고 위젯 제목에 사용자 지정 '숏코드'(정확하게는 '롱코드') 또는 구문을 적용하는 데 사용할 수 있습니다.예를 들어 가끔 위젯 제목에 html 코드를 포함시키고 싶었지만 기본적으로는 모든 html이 삭제됩니다. 이런 수 된 거죠.<em> 구문을 구문을 사용하였습니다.[[<&]]> (예:[[em]] ★★★★★★★★★★★★★★★★★」[[/em]]에 대응하는html 파일로 한다.
function parse_html_widget_title( $text ) {
return str_replace(array('[[', ']]'), array('<', '>'), $text);
}
그런 다음 그 아래에 줄을 추가하여 함수를 필터로 추가했습니다.
add_filter('widget_title', 'parse_html_widget_title', 11); // 11 is one above the default priority of 10, meaning it will occur after any other default widget_title filters
add_filterapply_filter기능에서는 첫 번째 파라미터로 필터링되는 콘텐츠를 필터로 지정된 함수에 자동으로 전달합니다.이것만 하면 됩니다.
.add_filter()커스텀 콜백 함수에 의해 발견된 각 후크에 대해 (예를 들어,widget_text텍스트 위젯 출력의 경우 또는get_search_form검색 폼에 대해서는 [wp-contractions/general-contractions에서 확인하실 수 있습니다.php, 에서get_search_form()기능])을 클릭합니다.문제는 동적으로 생성된 위젯 중 일부에 후크가 없다는 것입니다(메타 위젯 등). 따라서 Jeff가 제공하는 출력 버퍼링 솔루션이 가장 다용도 솔루션이지만 이상적이지는 않습니다.
문서화되어 있지 않은 워드프레스 위젯용 후크가 많이 있습니다.wordpress codex에는 어떤 이유로든 목록이 표시되지 않습니다(예: 이러한 후크는 미래에 변경될 수 있으며 새로운 업데이트 및 버전으로 인해 예기치 않게 파손될 수 있습니다).그러니 이것들을 매우 주의해서 사용하세요.
다음 2개 이상의 장소에서 확인할 수 있습니다.
<wordpress install directory>/wp-includes/default-filters.php
<wordpress install directory>/wp-includes/default-widgets.php
이 2개의 파일에 포함되어 있는 것은 워드프레스가 사용하는 모든 후크 리스트입니다.
예를 들어 위젯의 필터는 다음과 같습니다.widget_title
다시 한 번 말씀드리지만, 현재 보고 있는 코드의 특정 버전 이후로는 작동하지 않을 수 있으므로 주의하여 사용하십시오.
widget_text 필터를 도입했을 때는 이 질문을 처음 받았을 때는 몰랐을지 모르지만, 이 질문을 처음 받았을 때는 없었던 것 같습니다만, 현재는 이 질문을 받고 있습니다.게다가 구글에서처럼 스택 오버플로우를 취득해, 이 답을 볼 수 있을 정도로 멀리까지 읽어 내려가는 사람도 있기 때문에, 실제로는 매우 간단합니다.
function my_widget_filter( $content )
{
// manipulate $content as you see fit
return $content;
}
add_filter( 'widget_text', 'my_widget_filter', 99 );
또한 dynamic_sidebar_params 필터도 확인해 보십시오.
다른 링크 --
언급URL : https://stackoverflow.com/questions/1385954/do-wordpress-widget-or-sidebar-hooks-exist
'programing' 카테고리의 다른 글
| 스프링 부트에서 @ConfigurationProperties를 자동 연결할 수 없습니다. (0) | 2023.02.27 |
|---|---|
| 하위 쿼리에서 *를 선택합니다. (0) | 2023.02.27 |
| 그림 JS - 데이터 포인트마다 다른 색상 (0) | 2023.02.27 |
| React 확인란 이벤트 및 핸들러의 스크립트 유형을 선택하십시오. (0) | 2023.02.27 |
| Wordpress Digg-Like 투표 시스템 플러그인 (0) | 2023.02.27 |