2011-07-18 7 views
6

하나의 wordpress 카테고리에만 적용되도록 my functions.php 파일에 추가 한 다음 코드를 제한하는 방법이 있습니까? Wordpress functions.php에 하나의 카테고리에만 코드 적용

<?php remove_filter('the_content', 'wpautop'); ?> 

나는 이것을 시도,하지만 작동하지 않았다

<?php if (in_category('work')) { remove_filter('the_content', 'wpautop'); } ?> 

나는 또한 특정 카테고리의 템플릿에 직접 코드를 배치하여 나는이 문제를 해결하는 것이 추가해야합니다,하지만 난 ' 내 함수 파일에 필터를 유지하는 것을 선호합니다.

감사합니다.

+1

카테고리 템플릿 대신 single.php에 추가해야한다고 생각합니다. 가장 좋은 방법은 모든 페이지에 적용되도록 헤더 파일에 추가하는 것입니다. 내가 functions.php에서 작동하지 않는 이유를 모르겠다 – Tarun

+0

어디서이 트리거링? 초기화 후 또는 이전? – Tarun

답변

0

귀하의 functions.php는 귀하의 색인 및 카테고리 페이지와 같은 현재 요청을 인식하지 못합니다. 해당 ID를 일단

$url = explode('?', 'http://'.$_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]); 
$ID = url_to_postid($url[0]); 

: functions.php에서이 코드가 작동하려면, 당신은 현재의 URL를 관련된 wp_query 기능을로드하는 원시 서버 바르를 잡고 그들을 통해 구문 분석해야합니다 쿼리 루프를 수행하고 카테고리를 기반으로 필터를 트리거 할 수 있습니다.

1

pre_get_postsaction에 연결하고 싶습니다. 쿼리 문자열이 파싱 된 직후에 발생합니다. 일부 조건부 만 설정됩니다. in_category()가 그 중 하나인지 테스트 할 수 있지만 중요하지 않다고 생각합니다. 왜? 다행스럽게 물으 셨습니다.

후크가 쿼리 개체를 전달하며,이 개체는 속성이 category_name입니다. 카테고리가 있는지 확인하고 필터가 맞는지 확인하는 것입니다. 다음과 같은 것 :

function ns_function_name($wpq){ 
    if($wpq->category_name == 'work'){ 
     remove_filter('the_content', 'wpautop'); 
    } 
} 
add_action('pre_get_posts', 'ns_function_name'); 

이것은 완전히 테스트되지 않았습니다. 그러나 당신이하는 일을 알고있는 것처럼 보이기 때문에 당신을 올바른 길로 인도하기에 충분할 것입니다.

+0

코드에 버그가 있습니다. "알림 : 정의되지 않은 속성 : WP_Query :: $ category_name" –

+0

대답은 OP가 자신의 작업을 수행하는 데 사용해야하는 패턴을 보여줍니다. 나는 그것이 테스트되지 않았으며 is_set()과 같은 다른 체크가 먼저 만들어 져야한다는 것을 분명히 알았다. 귀하의 코드를 보지 않고도 나는 당신이 옳고 그른 일을 실제로하는지 알 수 없습니다. 문제가있는 경우 새 질문을 만들 수도 있습니다. 또한 WP 문서에 따르면 "pre_get_posts는 WP_Query가 설정되기 전에 실행됩니다." – Shelton

관련 문제