đặt bình luận làm mặc định cho các trang và loại bài đăng tùy chỉnh?


20

Tôi muốn tắt bình luận theo mặc định với các trang và loại bài đăng tùy chỉnh

Ban đầu tôi chỉ đơn giản sử dụng các điều kiện trong chức năng hiển thị bình luận để tránh hiển thị khối trên các trang này, nhưng tôi cần người dùng có thể bật lại nhận xét theo yêu cầu.


1
Chỉ cần một lời nhắc nhở thân thiện tôi đã thêm một câu trả lời cho câu hỏi này mà tôi tin rằng có hiệu quả mong muốn ..
t31os

1
Tôi chắc rằng chức năng của bạn hoạt động tốt, nhưng tôi đã chọn một câu trả lời phù hợp với mục đích của mình.
Fuzz nhẹ

Câu trả lời:


9

Theo những gì tôi hiểu, bạn muốn đặt các trang và một số loại bài đăng tùy chỉnh để bình luận 'tắt' theo mặc định, trong khi các bài đăng vẫn sẽ sử dụng tùy chọn mặc định (ví dụ: bình luận 'trên'). Nếu đây là trường hợp, chức năng sau đây sẽ làm điều đó.

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
Điều này không thành công khi bạn muốn bật lại các bình luận. Nó cần được chỉnh sửa để nó chỉ chạy một lần
Mild Fuzz

1
không phải tại một máy ngay bây giờ, nhưng tôi đoán bạn có thể sử dụng cơ chế siêu dữ liệu để kiểm tra meta, nếu không chạy chức năng, hãy thêm meta và chạy chức năng.
Fuzz nhẹ

1
đã thử nghiệm, điều này sẽ không hoạt động đơn giản như vậy bởi vì ID bài đăng không có trong var data $ trong hàm của bạn.
Fuzz nhẹ

1
Tôi đã thử nghiệm nó (với WP 3.0) trước khi gửi câu trả lời của mình và nó đã hoạt động. Vấn đề gì bạn đang gặp phải? ID bài đăng không có trong dữ liệu $ vì bài đăng chưa được tạo trước khi chức năng được chạy (xem bộ lọc trong chức năng wp_insert_post). Hàm sẽ chỉ chạy khi bạn truy cập wp-admin / post-new.php? Post-type = xxx, trước khi bạn nhập bất kỳ nội dung nào vào các trường.
sorich87

1
trên máy chủ thử nghiệm của tôi, tôi không thể bật lại nhận xét, chúng luôn được đặt thành tắt.
Fuzz nhẹ

10

Khi bạn tạo một bài đăng mới (loại tùy chỉnh hoặc thông thường), các cuộc gọi WordPress get_default_post_to_editsẽ đặt các giá trị mặc định mà bài đăng mới sẽ có.

Hàm này cung cấp một vài móc lọc để thay đổi tiêu đề, nội dung và đoạn trích mặc định, nhưng tiếc là không có gì khác ... tuy nhiên mỗi bộ lọc chuyển dọc theo $postđối tượng hoàn chỉnh đến cuộc gọi lại, về cơ bản điều này có nghĩa là có thể xác định lại một số thuộc tính (hoặc chỉ một nếu chúng tôi thích)

Điều này sẽ phù hợp với bạn, chỉ cần thêm các loại bài đăng mà mã sẽ áp dụng cho các trường hợp bên trong công tắc .. (phim và trang là ví dụ) ..

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 );

Mã đã được thử nghiệm trên WP 3.0.1 và có tác dụng vô hiệu hóa mong muốn cho các loại bài đăng cụ thể trong khi để người khác thừa hưởng trạng thái mặc định từ default_comment_statustùy chọn.

Mong rằng sẽ giúp .... :)


2

Tôi đã viết một plugin để tắt nhận xét trên các trang theo mặc định. http://wordpress.org/extend/plugins/page-comments-off-please/

Có lẽ điều đó sẽ giúp?


1
dường như quá mức đưa ra giải pháp 5 dòng trong câu trả lời của sorich87! Chúc mừng mặc dù.
Fuzz nhẹ

1
Không thực sự, có nhiều cách tiếp cận để giải quyết các yêu cầu về mã, đó chỉ là một phương pháp khác.
t31os

1

Theo chủ đề này , những gì bạn yêu cầu là không thể nếu không sử dụng plugin hoặc chức năng tùy chỉnh để thực hiện nó.


1
Tôi không có vấn đề viết một, chỉ cần được chỉ đúng hướng. Móc & bộ lọc vv có thể giúp đỡ.
Fuzz nhẹ

1
Nếu bạn cuối cùng viết một, xin vui lòng chia sẻ những gì bạn đã làm ở đây! Có vẻ như một plugin có thể làm điều đó sẽ được sử dụng rất nhiều.
Travis Northcutt

1

Tôi khuyên bạn vẫn nên sử dụng các điều kiện của bạn trong màn hình bình luận, nhưng sử dụng các tùy chọn để lưu trữ các cài đặt có điều kiện của bạn. Sau đó, bạn có thể thêm một trang vào menu Cài đặt cho phép quản trị viên bật hoặc tắt nhận xét khi cần.


Cập nhật

Tôi nhận thấy rằng bạn muốn đặt mặc định cho nhận xét thành "tắt" thành cài đặt chung thay vì đặt thành "tắt" mỗi khi bạn tạo một trang. Điều này có thể.

Truy cập Cài đặt >> Thảo luận trong phần quản trị WordPress. Trong phần đầu tiên ("Cài đặt bài viết mặc định", bạn sẽ thấy một tùy chọn có tên "Cho phép mọi người đăng nhận xét về bài viết mới" ... bỏ chọn tùy chọn này.

Bây giờ, theo mặc định, các bình luận sẽ bị "tắt" cho tất cả các bài đăng, trang mới và các loại bài đăng tùy chỉnh. Bạn vẫn có thể bật lại nhận xét "bật" trên cơ sở từng trường hợp bằng cách chọn hộp kiểm thích hợp trong hộp meta "Thảo luận" trên màn hình chỉnh sửa bài / trang cá nhân.


1
Đã có một lựa chọn ở đó. Tôi chỉ đơn giản muốn nó tắt theo mặc định.
Fuzz nhẹ

1
Đã có một lựa chọn ở đâu? Bạn đang đề cập đến hộp "Thảo luận" ở cuối màn hình chỉnh sửa bài / trang?
EAMann

1
Vâng, tôi chỉ muốn điều đó được bỏ chọn. Giải pháp Sorich87 gần như hoạt động. Không phải ở một máy để thử bất cứ điều gì chưa.
Fuzz nhẹ

-2

Nếu bạn chỉ cần thêm mã này vào hàm.php

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

Chuyển đến bài đăng và trong các tùy chọn màn hình, đánh dấu vào "Thảo luận" và "Nhận xét", bạn có thể bật / tắt nhận xét cho từng loại bài đăng tùy chỉnh.


2
không thực sự trả lời câu hỏi (mặc dù đã trả lời)
Mild Fuzz
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.