사용자 정의 게시물 유형을 사용하지 않고 별도의 데이터베이스 테이블을 사용하는 플러그인을 개발 중입니다. 다른 코스 세부 사항 페이지로 연결되는 링크가 포함 된 코스 목록을 표시하는 플러그인으로, 사용자가 코스를 구독 할 수 있습니다.
현재 상태에서는 짧은 코드를 사용하여 플러그인 데이터를 사용자 정의 페이지 템플릿 (page-courses.php)이있는 페이지로 가져옵니다.
이제 the_title()
플러그인이 표시하는 페이지 (코스 목록, 양식이있는 코스 세부 사항 페이지, 양식 제출 성공 페이지)에 따라 동적으로 변경하고 싶습니다 . 그러나 다음 필터로 그렇게 할 때마다 바닥 글의 다른 페이지에 대한 링크도 변경됩니다.
<?php
add_filter('the_title', 'custom_page_title');
function custom_page_title() {
return 'Custom Title';
}
편집하다
footer.php에는 wp_nav_menu()
모양> 메뉴에서 바닥 글 링크를 포함하는 기능이 있습니다 . 그러나 위의 필터를 사용하면 바닥 글의 모든 링크도 '맞춤 제목'으로 변경됩니다. 그러나 바닥 글의 메뉴 링크에는 영향을 미치지 않고 페이지 제목을 변경하고 싶습니다.
in_the_loop()
바닥 글 링크는 루프에 없지만 조건부 태그를 추가하려고하면 여전히 영향을받습니다.
<?php
add_action( 'loop_start', 'set_custom_title' );
function set_custom_title() {
if ( in_the_loop() ) {
add_filter( 'the_title', 'custom_page_title' );
}
}
function custom_page_title() {
return 'Custom Title';
}
이 질문과 비슷합니다 : nav에서 the_title 문제를 필터링 하십시오. 영향을받는 링크가 바닥 글에 있고 in_the_loop()
작동하지 않는다는 것입니다.
바닥 글의 링크에는 영향을 미치지 않고the_title()
현재 페이지의 제목에만 영향을 주면서 어떻게 변경할 수 있습니까?
편집 2-솔루션
그래서 마침내 작동하게되었습니다.
<?php
add_action( 'loop_start', 'set_custom_title' );
function set_custom_title() {
add_filter( 'the_title', 'wpse83525_filter_the_title', 10, 2 );
}
function wpse83525_filter_the_title( $title, $id ) {
if ( 'page-listcourses.php' == get_post_meta( $id, '_wp_page_template', true ) ) {
return 'Custom Title';
}
return $title;
}
page-listcourses.php 파일은 '코스'라는 정적 페이지에 할당 한 사용자 지정 게시물 템플릿입니다.
정적 페이지의 이름과 사용자 정의 게시물 템플릿의 파일 이름이 같기 때문에 이전에는 작동하지 않았다고 가정합니다.
in_the_loop()
true
때마다 설정됩니다 the_post()
. 코어에 너무 깊게 파고 내비게이션 메뉴 자체가 루프 라는 것을 알지 못하면 도중에 어딘가 wp_nav_menu()
에서 루프를 인스턴스화 in_the_loop()
하여 돌아 오는 것으로 추측합니다 true
.