페이지 및 사용자 정의 게시물 유형에 대해 댓글을 기본값으로 설정하지 않습니까?


20

페이지 및 사용자 정의 게시물 유형으로 기본적으로 댓글을 끄고 싶습니다

처음에는 주석 표시 기능에서 조건을 사용하여 이러한 페이지에 블록이 표시되는 것을 피했지만 필요한 경우 주석을 다시 켤 수 있어야합니다.


1
이 질문에 대해 원하는 효과가 있다고 생각되는 답변을 추가했습니다.
t31os

1
귀하의 기능이 잘 작동한다고 확신하지만 이미 목적에 맞는 답변을 선택했습니다.
Mild Fuzz

답변:


9

내가 이해 한 바에 따라 페이지와 일부 사용자 정의 게시물 유형은 기본적으로 'off'로 댓글을 달도록 설정하고 게시물은 여전히 ​​기본 옵션 (예 : 'on'으로 댓글 달기)을 사용합니다. 이 경우 다음 기능이 작동합니다.

function default_comments_off( $data ) {
    if( $data['post_type'] == 'page' && $data['post_status'] == 'auto-draft' ) {
        $data['comment_status'] = 0;
    }

    return $data;
}
add_filter( 'wp_insert_post_data', 'default_comments_off' );

1
주석을 다시 켜려고하면 실패합니다. 한 번만 실행되도록 편집해야합니다
Mild Fuzz

1
지금은 컴퓨터가 아니지만 메타 데이터 메커니즘을 사용하여 메타를 검사하고 함수를 실행하지 않으면 메타를 추가하고 메타를 추가하고 함수를 실행할 수 있습니다.
Mild Fuzz

1
테스트 한 결과 게시물 ID가 함수의 $ data var에 포함되어 있지 않기 때문에 간단하게 작동하지 않습니다.
Mild Fuzz

1
답변을 제출하기 전에 WP 3.0으로 테스트했으며 제대로 작동했습니다. 어떤 문제가 발생 했습니까? 함수가 실행되기 전에 아직 포스트가 작성되지 않았기 때문에 포스트 ID가 $ data에 없습니다 (펑션 wp_insert_post의 필터 참조). 이 기능은 필드에 내용을 입력하기 전에 wp-admin / post-new.php? post-type = xxx를 방문 할 때만 실행됩니다.
sorich87

1
테스트 서버에서 주석을 다시 켤 수 없으며 영구적으로 해제되어 있습니다.
Mild Fuzz

10

새 게시물 (사용자 정의 유형 또는 일반)을 작성할 때 WordPress 호출 get_default_post_to_edit은 새 게시물의 기본값을 설정합니다.

이 함수는 기본 제목, 내용 및 발췌 부분을 변경하는 데 필요한 몇 가지 필터 후크를 제공하지만 불행히도 다른 것은 없습니다 ... 그러나 각 필터는 전체 $post객체를 콜백으로 전달하므로 본질적으로 여러 속성을 재정의 할 수 있습니다 (또는 우리는 좋아한다)

스위치 내부에서 코드로 적용 할 포스트 유형을 추가하기 만하면됩니다. (영화와 페이지는 예입니다.)

function my_default_content( $post_content, $post ) {
    if( $post->post_type )
    switch( $post->post_type ) {
        case 'page':
        case 'movie':
            $post->comment_status = 'closed';
        break;
    }
    return $post_content;
}
add_filter( 'default_content', 'my_default_content', 10, 2 );

코드는 WP 3.0.1에서 테스트되었으며 다른 유형 이 옵션 에서 기본 상태 를 상속하도록하는 동안 게시물 유형에 대한 주석을 비활성화하는 효과가 default_comment_status있습니다.

희망이 도움이 .... :)


2

기본적으로 페이지에서 주석을 비활성화하는 플러그인을 작성했습니다. http://wordpress.org/extend/plugins/page-comments-off-please/

아마도 도움이 될까요?


1
sorich87의 답변에 5 라인 솔루션이 주어지면 과도하게 보입니다! 그래도 건배.
Mild Fuzz

1
실제로 코드 요구 사항을 처리하는 방법은 많지 않으며 다른 방법 일뿐입니다.
t31os

1

이 스레드 에 따르면 사용자 정의 플러그인이나 함수를 사용하지 않고 요청하는 것은 불가능합니다.


1
나는 글을 쓰는 데 아무런 문제가 없으며 올바른 방향을 가리켜 야합니다. 도움이 될만한 고리 및 필터 등.
Mild Fuzz

1
글을 쓰면 여기에서 한 일을 공유하십시오! 많은 것을 얻을 수있는 플러그인처럼 보입니다.
트래비스 노스 컷

1

주석 표시에서 조건부를 계속 사용하는 것이 좋지만 옵션을 사용하여 조건부 설정을 저장하십시오. 그런 다음 관리자가 필요에 따라 주석을 켜거나 끌 수있는 페이지를 설정 메뉴에 추가 할 수 있습니다.


최신 정보

페이지를 작성할 때마다 "off"로 설정하지 않고 "off"로 주석을 달기위한 기본값을 전역 설정으로 설정하려고합니다. 이것은 이다 가능합니다.

WordPress 관리 섹션에서 설정 >> 토론으로 이동하십시오. 첫 번째 섹션 ( "기본 기사 설정")에는 "사람들이 새로운 기사에 대한 의견을 게시 할 수 있도록 허용합니다"라는 옵션이 있습니다.이 옵션의 선택을 취소하십시오.

이제 기본적으로 모든 새 게시물, 페이지 및 사용자 정의 게시물 유형에 대해 댓글이 "해제"됩니다. 개별 게시물 / 페이지 편집 화면의 "토론"메타 상자에서 적절한 확인란을 선택하여 사례별로 주석을 다시 "켜기"로 설정할 수 있습니다.


1
그러나 이미 옵션이 있습니다. 단순히 기본적으로 해제하고 싶습니다.
Mild Fuzz

1
이미 옵션이 있습니까? 게시물 / 페이지 편집 화면 하단의 "토론"상자를 참조하고 있습니까?
EAMann September

1
그렇습니다, 나는 그것을 체크하지 않기를 원합니다. Sorich87 솔루션은 거의 작동합니다. 아직 아무것도 시도하지 않는 기계가 아닙니다.
Mild Fuzz

-2

functions.php에이 코드를 추가하면

<?php
add_post_type_support( 'your_custom_post_type', array( 'comments' ) );
?>

게시물로 이동하여 화면 옵션에서 "토론"및 "설명"을 선택하면 각 사용자 정의 게시물 유형에 대한 설명을 활성화 / 비활성화 할 수 있습니다.


2
실제로 (아직 대답했지만) 질문에 대답하지 않음
Mild Fuzz
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.