ตั้งค่าความคิดเห็นเป็นค่าเริ่มต้นสำหรับหน้าและประเภทโพสต์ที่กำหนดเอง?


20

ฉันต้องการปิดความคิดเห็นโดยค่าเริ่มต้นด้วยหน้าและประเภทโพสต์ที่กำหนดเอง

ตอนแรกฉันใช้เงื่อนไขในฟังก์ชั่นแสดงความคิดเห็นเพื่อหลีกเลี่ยงการแสดงบล็อกในหน้าเหล่านี้ แต่ฉันต้องการให้ผู้ใช้สามารถเปิดความคิดเห็นได้ตามต้องการ


1
เพียงแค่ตัวเตือนความทรงจำที่เป็นมิตรฉันได้เพิ่มคำตอบสำหรับคำถามนี้ที่ฉันเชื่อว่ามีเอฟเฟกต์ที่ต้องการ ..
t31os

1
ฉันแน่ใจว่าฟังก์ชั่นของคุณทำงานได้ดี แต่ฉันได้เลือกคำตอบที่เหมาะกับวัตถุประสงค์ของฉันไปแล้ว
Mild Fuzz

คำตอบ:


9

จากสิ่งที่ฉันเข้าใจคุณต้องการตั้งค่าหน้าและบางประเภทโพสต์ที่กำหนดเองให้มีความคิดเห็น 'ปิด' โดยค่าเริ่มต้นในขณะที่โพสต์จะยังคงใช้ตัวเลือกเริ่มต้น (เช่นการแสดงความคิดเห็น 'เปิด') หากเป็นกรณีนี้ฟังก์ชั่นต่อไปนี้จะทำ

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) ก่อนที่จะส่งคำตอบและใช้งานได้ คุณกำลังประสบปัญหาอะไร รหัสโพสต์ไม่ได้อยู่ในข้อมูล $ เพราะโพสต์ยังไม่ได้สร้างขึ้นก่อนที่จะเรียกใช้ฟังก์ชั่น (ดูที่ตัวกรองในฟังก์ชั่น 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
ดูเหมือนมากเกินไปเนื่องจากโซลูชัน 5 บรรทัดในคำตอบของ sorich87! ไชโย
Mild Fuzz

1
ไม่จริงๆมีหลายวิธีในการแก้ปัญหาข้อกำหนดของรหัส แต่เป็นวิธีการที่แตกต่างกัน
t31os

1

ตามหัวข้อนี้สิ่งที่คุณร้องขอไม่สามารถทำได้โดยไม่ต้องใช้ปลั๊กอินหรือฟังก์ชั่นที่กำหนดเองเพื่อทำสิ่งนั้นให้สำเร็จ


1
ฉันไม่มีปัญหาในการเขียนเพียงแค่ต้องชี้ไปในทิศทางที่ถูกต้อง ตัวกรองและตะขอที่อาจช่วยได้
Mild Fuzz

1
หากคุณจบลงด้วยการเขียนหนึ่งโปรดแบ่งปันสิ่งที่คุณทำที่นี่! ดูเหมือนว่าปลั๊กอินที่สามารถทำได้นั้นจะได้รับประโยชน์มากมาย
Travis Northcutt

1

ฉันขอแนะนำให้ยังคงใช้เงื่อนไขของคุณในการแสดงความคิดเห็น แต่ใช้ตัวเลือกในการจัดเก็บการตั้งค่าตามเงื่อนไขของคุณ จากนั้นคุณสามารถเพิ่มหน้าลงในเมนูการตั้งค่าที่ช่วยให้ผู้ดูแลระบบสามารถเปิดหรือปิดความคิดเห็นได้ตามต้องการ


ปรับปรุง

เกิดขึ้นกับฉันว่าคุณต้องการตั้งค่าเริ่มต้นสำหรับการแสดงความคิดเห็นถึง "ปิด" เป็นการตั้งค่าระดับโลกแทนที่จะตั้งเป็น "ปิด" ในแต่ละครั้งที่คุณสร้างหน้า สิ่งนี้เป็นไปได้

ไปที่การตั้งค่า >> การสนทนาในส่วนผู้ดูแลระบบ WordPress ในส่วนแรก ("การตั้งค่าบทความเริ่มต้น" คุณจะเห็นตัวเลือกที่ชื่อว่า "อนุญาตให้ผู้คนโพสต์ความคิดเห็นในบทความใหม่" ... ยกเลิกการเลือกตัวเลือกนี้

ตอนนี้ตามค่าเริ่มต้นความคิดเห็นจะถูกปิด "สำหรับโพสต์ใหม่หน้าและประเภทโพสต์ที่กำหนดเองทั้งหมด คุณยังสามารถเปลี่ยนความคิดเห็นกลับเป็น "เป็น" ได้โดยการเลือกช่องทำเครื่องหมายที่เหมาะสมในกล่องเมตา "อภิปราย" ในหน้าจอแก้ไขการโพสต์ / หน้าแต่ละหน้า


1
มีตัวเลือกอยู่แล้วแม้ว่า ฉันต้องการให้เป็นค่าเริ่มต้น
Mild Fuzz

1
มีตัวเลือกอยู่ที่ไหนแล้ว? คุณหมายถึงช่อง "การสนทนา" ที่ด้านล่างของหน้าจอแก้ไขโพสต์ / หน้า?
EAMann

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.