내용 전 또는 제목 뒤에 WordPress 후크 / 필터 삽입


29

functions.php의 게시물 내용 앞에 내용을 삽입하려고합니다. 일반 wp 후크를 사용하는 방법을 알고 있지만 다른 영역에 삽입하는 방법을 잘 모르겠습니다.

이것을 시도했지만 다른 게시물 유형의 콘텐츠를 죽입니다.

function property_slideshow( $content ) {
 if ( is_single() && 'property' == get_post_type() ) {
    $custom_content = '[portfolio_slideshow]';
    $custom_content .= $content;
    return $custom_content;
    } 
}
add_filter( 'the_content', 'property_slideshow' );

이것을 조건부로 만들려면 어떻게해야합니까?

답변:


39

the_content필터를 사용하십시오 ( 예 :

<?php
function theme_slug_filter_the_content( $content ) {
    $custom_content = 'YOUR CONTENT GOES HERE';
    $custom_content .= $content;
    return $custom_content;
}
add_filter( 'the_content', 'theme_slug_filter_the_content' );
?>

기본적으로 사용자 정의 컨텐츠 뒤에 포스트 컨텐츠를 추가 한 후 결과를 리턴합니다.

편집하다

Franky @bueltge가 그의 의견에서 지적한 것처럼, 절차는 게시물 제목과 동일합니다. the_title후크에 필터를 추가하기 만하면됩니다 .

<?php
function theme_slug_filter_the_title( $title ) {
    $custom_title = 'YOUR CONTENT GOES HERE';
    $title .= $custom_title;
    return $title;
}
add_filter( 'the_title', 'theme_slug_filter_the_title' );
?>

,이 경우, 당신은 당신의 사용자 정의 컨텐츠 추가 제목을. (어떤 것이 중요하지 않습니다. 나는 당신이 당신의 질문에 지정한 것과 함께갔습니다.)

편집 2

예제 코드가 작동하지 않는 이유는 조건이 충족 될 때만 반환$content 하기 때문 입니다. 조건부 $content로을 (를) 수정하지 않고 반환해야합니다 else. 예 :

function property_slideshow( $content ) {
    if ( is_single() && 'property' == get_post_type() ) {
        $custom_content = '[portfolio_slideshow]';
        $custom_content .= $content;
        return $custom_content;
    } else {
        return $content;
    }
}
add_filter( 'the_content', 'property_slideshow' );

이 방법은 '속성'포스트 유형이 아닌 포스트의 경우 $content수정되지 않은 채 반환됩니다.


제목 뒤에 내용을 추가 할 수도 있습니다. the_title 필터가 올바른 후크입니다.
bueltge

@ ChipBennett 질문-사용자 정의 게시물 유형에 대해서만 논리 로이 작업을 수행하는 방법-나는 그것을 포장하려고 if ( is_single() && 'property' == get_post_type() ) {}했지만 그것이 효과가 없었습니다.
Jason

@ ChipBennett-사용자 정의 게시물 유형으로 작업했지만 내용이 다른 게시물 유형에서 사라졌습니다. 위의 편집을 참조하십시오.
Jason

1
$content맞춤 게시물 유형이 아닌 다른 게시물 유형으로 돌아 가지 않기 때문 입니다. 업데이트 된 답변을 참조하십시오.
칩 베넷

참고 사항-else {} 블록이 필요하지 않으며 대체 리턴입니다. 조건이 충족되면 if ()의 반환이 함수에서 빠져 나오고 if ()를 지나면 폴백 리턴이 발생합니다.
phatskat

0
function property_slideshow( $content ) {
    if ( is_singular( 'property' ) ) {
        $custom_content = do_shortcode( '[portfolio_slideshow]' );
        $custom_content .= $content;
        }
        return $custom_content;
}
add_filter( 'the_content', 'property_slideshow' );

그만큼 is_singular조건 태그를 확인 단수 게시물이 표시되고,이 경우 속성입니다은 $ post_types 매개 변수를 지정할 수 있습니다되는 경우.

또한보고 싶을 수도 있습니다 do_shortcode


여기서 게임에 늦었지만 인스턴스에서 빈 변수를 반환하는 경우 is_singular ( 'property')는 false를 반환합니다. 논리를 반전시키고 그 경우 $ content를 반환하면 더 깨끗하고 읽기 쉬운 코드로 끝납니다.
트래비스 웨스턴

다른 것을 추가하거나 삼항 연산자를 사용할 수도 있습니다. 완벽하게 테스트되지 않은 간단한 예제로 확장 할 수 있습니다.
Brad Dalton
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.