menetapkan komentar sebagai default untuk halaman dan jenis posting khusus?

20

Saya ingin menonaktifkan komentar secara default dengan halaman dan jenis tulisan khusus

Awalnya saya hanya menggunakan kondisional pada fungsi tampilan komentar untuk menghindari menampilkan blok pada halaman ini, tetapi saya membutuhkan pengguna untuk dapat mengaktifkan kembali komentar sesuai kebutuhan.

Fuzz Ringan
sumber
1
Hanya pengingat ramah saya telah menambahkan jawaban untuk pertanyaan ini yang saya percaya memiliki efek yang diinginkan ..
t31os
1
Saya yakin fungsi Anda berfungsi dengan baik, tetapi saya sudah memilih jawaban yang berfungsi untuk tujuan saya.
Mild Fuzz
Catatan: Tiket Trac Terkait # 12991
Chip Bennett

Jawaban:

9

Dari apa yang saya mengerti, Anda ingin mengatur halaman dan beberapa jenis posting khusus agar berkomentar 'mati' secara default, sementara posting masih akan menggunakan opsi default (yaitu berkomentar 'aktif'). Jika ini masalahnya, fungsi berikut akan melakukannya.

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' );
sorich87
sumber
1
ini gagal ketika Anda ingin mengaktifkan kembali komentar. Perlu diedit agar hanya berjalan sekali
Mild Fuzz
1
tidak di mesin sekarang, tapi saya kira Anda dapat menggunakan mekanik metadata untuk memeriksa meta, jika tidak menjalankan fungsinya, tambahkan meta dan jalankan fungsinya.
Mild Fuzz
1
diuji, ini tidak akan bekerja sesederhana itu karena ID posting tidak terkandung dalam $ data var di fungsi Anda.
Mild Fuzz
1
Saya mengujinya (dengan WP 3.0) sebelum mengirimkan jawaban saya dan itu berhasil. Masalah apa yang Anda temui? ID kiriman tidak dalam $ data karena kiriman belum dibuat sebelum fungsi dijalankan (lihat filter dalam fungsi wp_insert_post). Fungsi ini akan berjalan hanya ketika Anda mengunjungi wp-admin / post-new.php? Post-type = xxx, sebelum Anda memasukkan konten apa pun di bidang.
sorich87
1
di server pengujian saya, saya tidak bisa menghidupkan kembali komentar, mereka selalu dimatikan.
Mild Fuzz
10

Saat Anda membuat posting baru (tipe khusus atau reguler), WordPress memanggil get_default_post_to_edit yang kemudian menetapkan nilai default yang dimiliki oleh sebuah posting baru.

Fungsi ini menyediakan beberapa kait filter untuk mengubah judul, konten, dan kutipan default, tetapi sayangnya tidak ada yang lain ... namun setiap filter melewati semua yang lengkap $post objek ke callback, pada dasarnya ini berarti dimungkinkan untuk mendefinisikan ulang beberapa properti (atau hanya satu jika kami suka)

Ini seharusnya berfungsi untuk Anda, cukup tambahkan jenis tulisan yang harus diterapkan kode sebagai case di dalam sakelar .. (film dan halaman adalah contoh) ..

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

Kode diuji pada WP 3.0.1 dan memiliki efek yang diinginkan untuk menonaktifkan komentar untuk jenis posting secara khusus sambil membiarkan orang lain mewarisi status default daridefault_comment_status opsi.

Semoga itu bisa membantu .... :)

t31os
sumber
2

Saya telah menulis sebuah plugin untuk menonaktifkan komentar pada halaman secara default. http://wordpress.org/extend/plugins/page-comments-off-please/

Mungkin itu akan membantu?


sumber
1
tampaknya berlebihan mengingat solusi 5 baris dalam jawaban sorich87! Cheers though.
Mild Fuzz
1
Tidak juga, ada banyak pendekatan untuk menangani persyaratan kode, itu hanya metode yang berbeda.
t31os
1

Menurut utas ini , apa yang Anda minta tidak mungkin dilakukan tanpa menggunakan plugin khusus atau fungsi untuk menyelesaikannya.

Travis Northcutt
sumber
1
Saya tidak punya masalah menulis satu, hanya perlu diarahkan ke arah yang benar. Kait & filter dll yang mungkin membantu.
Mild Fuzz
1
Jika Anda akhirnya menulis satu, silakan bagikan apa yang Anda lakukan di sini! Sepertinya plugin yang bisa melakukan itu akan banyak digunakan.
Travis Northcutt
1

Saya sarankan masih menggunakan kondisional Anda di tampilan komentar, tetapi gunakan opsi untuk menyimpan pengaturan bersyarat Anda. Kemudian Anda dapat menambahkan halaman ke menu Pengaturan yang memungkinkan administrator untuk menghidupkan atau mematikan komentar sesuai kebutuhan.


Memperbarui

Terjadi pada saya bahwa Anda ingin mengatur default untuk berkomentar "off" sebagai pengaturan global daripada mengaturnya ke "off" setiap kali Anda membuat halaman. Ini adalah mungkin.

Buka Pengaturan >> Diskusi di bagian admin WordPress. Di bagian pertama ("Pengaturan Artikel Default" Anda akan melihat opsi yang disebut "Izinkan orang untuk mengirim komentar pada artikel baru" ... hapus centang opsi ini.

Sekarang, secara default, komentar akan dimatikan "untuk semua posting baru, halaman, dan jenis posting kustom. Anda masih dapat mengubah komentar kembali "pada" berdasarkan kasus per kasus dengan memilih kotak centang yang sesuai di kotak meta "Diskusi" pada layar edit setiap posting / halaman.

EAMann
sumber
1
Sudah ada opsi di sana. Saya hanya ingin mematikannya secara default.
Mild Fuzz
1
Sudah ada opsi di mana? Apakah Anda merujuk ke kotak "Diskusi" di bagian bawah layar edit posting / halaman?
EAMann
1
Ya, saya hanya ingin itu tidak dicentang. Solusi Sorich87 hampir berfungsi. Belum ada di mesin untuk mencoba sesuatu.
Mild Fuzz
-2

Jika Anda cukup menambahkan kode ini di functions.php

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

Pergi ke posting, dan di opsi layar, centang pada "Diskusi" dan "Komentar", Anda dapat mengaktifkan / menonaktifkan komentar untuk setiap jenis posting kustom.

kaizer1v
sumber
2
tidak benar-benar menjawab pertanyaan (walaupun sudah dijawab)
Mild Fuzz