메뉴 제목에도 _title() 필터가 적용되는 이유는 무엇입니까?
페이지 제목을 숨기기 위해 아래 기능을 만들었습니다.하지만 이 코드를 실행하면 메뉴 이름도 숨겨집니다.
function wsits_post_page_title( $title ) {
if( is_admin())
return $title;
$selected_type = get_option('wsits_page_show_hide');
if(!is_array($selected_type)) return $title;
if ( ( in_array(get_post_type(), $selected_type ) ) && get_option('wsits_page_show_hide') )
{
$title = '';
}
return $title;
}
add_filter( 'the_title', array($this, 'wsits_post_page_title') );
Nikola 정답:
메뉴 항목에도 제목이 있어 필터링해야 합니다. : )
이것을 투고만으로 호출하고 메뉴에서는 호출하지 않게 하려면 , 다음의 체크 박스를 추가합니다.in_the_loop()
- 그게 사실이라면, 게시물입니다.
함수의 첫 번째 행을 다음과 같이 변경합니다.
if( is_admin() || !in_the_loop() )
모든 게 잘 될 거야
약간 해킹이지만 loop_start에 액션을 추가하면 해결할 수 있습니다.
function make_custom_title( $title, $id ) {
// Your Code Here
}
function set_custom_title() {
add_filter( 'the_title', 'make_custom_title', 10, 2 );
}
add_action( 'loop_start', 'set_custom_title' );
loop_start 액션 내부에_title 필터를 포함시킴으로써 메뉴 제목 속성을 덮어쓰지 않도록 합니다.
다음과 같은 작업을 수행할 수 있습니다.
고객님의 고객명function.php
:
add_filter( 'the_title', 'ze_title');
function ze_title($a) {
global $dontTouch;
if(!$dontTouch && !is_admin())
$a = someChange($a);
return $a;
}
템플릿:
$dontTouch = 1;
wp_nav_menu( array('menu' => 'MyMenu') );
$dontTouch = 0;
필터 훅을 대상으로 검색하다가 클릭하게 된 검색 결과였기 때문에 이 답변을 게시합니다.the_title
네비게이션 항목에 대한 필터 효과를 무시한 채.
제목 1 태그의 페이지 제목에 버튼을 추가하고 싶은 테마 섹션을 만들고 있었습니다.
다음과 같이 생겼습니다.
<?php echo '<h1>' . apply_filters( 'the_title', $post->post_title ) . '</h1>'.PHP_EOL; ?>
그때 나는 이렇게 "호크인"하고 있었다.
add_filter( 'the_title', 'my_callback_function' );
다만, 상기의 타겟은, 문자 그대로, 콜 하는 모든 것입니다.the_title
필터 후크, 여기에는 네비게이션 항목이 포함됩니다.
필터 훅 정의를 다음과 같이 변경했습니다.
<?php echo '<h1>' . apply_filters( 'the_title', $post->post_title, $post->ID, true ) . '</h1>'.PHP_EOL; ?>
거의 모든 전화는the_title
filter는 파라미터1을 전달한다.$post->post_title
및 파라미터 2는$post->ID
. WordPress 코어 코드 검색:apply_filters( 'the_title'*
직접 보게 될 거야
그래서 나는 특정 아이템을 대상으로 하고 싶은 상황에 대해 세 번째 파라미터를 추가하기로 결정했다.the_title
필터링을 실시합니다.이렇게 하면, 다음에 적용되는 모든 콜백의 혜택을 계속 받을 수 있습니다.the_title
기본적으로 후크를 필터링하는 동시에 다음 기능을 사용하는 대상 항목을 반감소할 수 있습니다.the_title
필터 후크를 세 번째 파라미터로 설정합니다.
간단하다boolean
파라미터:
/**
* @param String $title
* @param Int $object_id
* @param bool $theme
*
* @return mixed
*/
function filter_the_title( String $title = null, Int $object_id = null, Bool $theme = false ) {
if( ! $object_id ){
return $title;
}
if( ! $theme ){
return $title;
}
// your code here...
return $title;
}
add_filter( 'the_title', 'filter_the_title', 10, 3 );
원하는 대로 변수에 레이블을 지정합니다.이게 나한테 효과가 있었고, 내가 해야 할 일을 정확히 해.이 답변은 질문 내용과 100% 관련되지 않을 수 있지만, 이 문제를 해결하기 위해 제가 찾은 것입니다.이것이 비슷한 상황에 있는 누군가에게 도움이 되기를 바랍니다.
글로벌 $dont터치: 어떤 이유에서인지 솔루션이 작동하지 않았습니다.그래서 헤더에 있는 메뉴 주변의 필터를 제거했습니다.php:
remove_filter( 'the_title', 'change_title' );
get_template_part( 'template-parts/navigation/navigation', 'top' );
add_filter( 'the_title', 'change_title' );
그리고 모든 것이 좋다.
이걸 찾으시는 것 같은데요
function change_title($title) {
if( in_the_loop() && !is_archive() ) { // This will skip the menu items and the archive titles
return $new_title;
}
return $title;
}
add_filter('the_title', array($this, 'change_title'), 10, 2);
언급URL : https://stackoverflow.com/questions/13456521/why-does-the-title-filter-is-also-applied-in-menu-title
'programing' 카테고리의 다른 글
AWS 응용 프로그램에 대한 스프링 부팅 시작 오류: 사용 가능한 EC2 메타데이터가 없습니다. (0) | 2023.03.28 |
---|---|
Axios - JSON 응답을 읽는 방법 (0) | 2023.03.23 |
$.post와 $.ajax의 차이점 (0) | 2023.03.23 |
클라이언트 라우팅(리액트라우터 사용) 및 서버 측 라우팅 (0) | 2023.03.23 |
Angular에서 여러 컨트롤러를 사용하는 방법JS가 맞습니까? (0) | 2023.03.23 |