पृष्ठों और कस्टम पोस्ट प्रकारों के लिए डिफ़ॉल्ट के रूप में टिप्पणी सेट करना?


20

मैं पृष्ठों और कस्टम पोस्ट-प्रकारों के साथ डिफ़ॉल्ट रूप से टिप्पणियों को बंद करना चाहता हूं

प्रारंभ में मैंने इन पेजों पर ब्लॉक प्रदर्शित करने से बचने के लिए केवल टिप्पणियों के प्रदर्शन समारोह में सशर्त का उपयोग किया, लेकिन मुझे उपयोगकर्ता को टिप्पणियों को आवश्यकतानुसार चालू करने में सक्षम होना चाहिए।


1
बस एक दोस्ताना अनुस्मारक मुझे इस सवाल का जवाब मिला है कि मेरा मानना ​​है कि वांछित प्रभाव है ..
t31os

1
मुझे यकीन है कि आपका फ़ंक्शन अच्छी तरह से काम करता है, लेकिन मैंने पहले ही एक जवाब चुना था जो मेरे उद्देश्य के लिए काम करता है।
माइल्ड फज

जवाबों:


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
जब आप टिप्पणियों को वापस चालू करना चाहते हैं तो यह विफल हो जाता है। इसे संपादित करने की आवश्यकता है कि यह केवल एक बार चलेगा
फज

1
अभी मशीन में नहीं है, लेकिन मुझे लगता है कि आप मेटाडाटा मैकेनिक का उपयोग मेटा की जांच करने के लिए कर सकते हैं, यदि फ़ंक्शन नहीं चलता है, तो मेटा जोड़ें और फ़ंक्शन चलाएं।
माइल्ड फज

1
परीक्षण किया गया, यह केवल उसी तरह काम नहीं करने जा रहा है क्योंकि पोस्ट आईडी आपके फ़ंक्शन में $ डेटा संस्करण में समाहित नहीं है।
माइल्ड फज

1
मैंने अपना जवाब प्रस्तुत करने से पहले (WP 3.0 के साथ) इसका परीक्षण किया और इसने काम किया। आप किस मुद्दे पर मुठभेड़ कर रहे हैं? पोस्ट आईडी $ डेटा में नहीं है क्योंकि फ़ंक्शन चलने से पहले अभी तक पोस्ट नहीं बनाया गया है (फ़ंक्शन wp_insert_post में फ़िल्टर देखें)। फ़ंक्शन केवल तभी चलेगा जब आप wp-admin / post-new.php; post-type = xxx पर जाएँ, इससे पहले कि आप फ़ील्ड में कोई सामग्री दर्ज करें।
sorich87

1
अपने परीक्षण सर्वर पर, मैं टिप्पणियों को वापस चालू नहीं कर सकता, वे स्थायी रूप से बंद हैं।
हल्की फुल

10

जब आप एक नया पोस्ट (कस्टम प्रकार या नियमित) बनाते हैं, तो वर्डप्रेस कॉल 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 लाइन समाधान दिया! चियर्स हालांकि।
माइल्ड फज

1
वास्तव में, कोड आवश्यकताओं से निपटने के लिए कई दृष्टिकोण हैं, यह सिर्फ एक अलग तरीका है।
14:31 बजे t31os

1

इस धागे के अनुसार , जो आप अनुरोध कर रहे हैं वह कस्टम प्लगइन या फ़ंक्शन के उपयोग के बिना संभव नहीं है।


1
मुझे एक लिखने में कोई समस्या नहीं है, बस सही दिशा में इशारा करने की आवश्यकता है। हुक और फिल्टर आदि जो मदद कर सकते हैं।
मिल्ड फज

1
यदि आप एक लिखना समाप्त करते हैं, तो कृपया यहाँ क्या किया है साझा करें! एक प्लगइन की तरह लगता है जो ऐसा कर सकता है जिसे बहुत अधिक उपयोग मिलेगा।
ट्रैविस नॉर्थकट

1

मैं अभी भी टिप्पणियों में आपकी शर्तों का उपयोग करने की सलाह दूंगा, लेकिन अपनी सशर्त सेटिंग्स को संग्रहीत करने के लिए विकल्पों का उपयोग करें। फिर आप सेटिंग मेनू में एक पृष्ठ जोड़ सकते हैं जो प्रशासकों को आवश्यकतानुसार टिप्पणियों को चालू या बंद करने की अनुमति देता है।


अपडेट करें

मेरे साथ ऐसा होता है कि आप किसी पृष्ठ को बनाने से पहले उसे "बंद" करने के बजाय एक वैश्विक सेटिंग के रूप में "ऑफ़" करने के लिए डिफ़ॉल्ट सेट करना चाहते हैं। यह है संभव।

वर्डप्रेस एडमिन सेक्शन में सेटिंग्स >> डिस्कशन पर जाएं। पहले खंड में ("डिफ़ॉल्ट अनुच्छेद सेटिंग्स" आपको एक विकल्प दिखाई देगा, जिसे "नए लेखों पर लोगों को टिप्पणियां पोस्ट करने की अनुमति दें" ... इस विकल्प को अनचेक करें।

अब, डिफ़ॉल्ट रूप से, टिप्पणियों को सभी नए पोस्ट, पेज और कस्टम पोस्ट प्रकारों के लिए "बंद" कर दिया जाएगा। आप व्यक्तिगत पोस्ट / पृष्ठ संपादन स्क्रीन पर "चर्चा" मेटा बॉक्स में उपयुक्त चेकबॉक्स का चयन करके केस-दर-मामला आधार पर "टिप्पणियों" को "चालू" कर सकते हैं।


1
वहाँ पहले से ही एक विकल्प है, हालांकि। मैं बस इसे डिफ़ॉल्ट रूप से बंद करना चाहता हूं।
मिल्ड फज

1
पहले से ही एक विकल्प है जहां? क्या आप पोस्ट / पेज एडिट स्क्रीन के नीचे "डिस्कशन" बॉक्स का जिक्र कर रहे हैं?
एमान

1
हां, मैं बस इतना चाहता हूं कि अनियंत्रित हो। Sorich87 समाधान लगभग काम करता है। अभी तक कुछ भी आज़माने के लिए मशीन पर नहीं।
माइल्ड फज

-2

यदि आप बस इस कोड को functions.php में जोड़ते हैं

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

पोस्ट पर जाएं, और स्क्रीन विकल्पों में, "चर्चा" और "टिप्पणियाँ" पर टिक करें, आप प्रत्येक निष्क्रिय प्रकार के लिए टिप्पणियों को सक्षम / अक्षम कर सकते हैं।


2
वास्तव में जवाब नहीं देता (यद्यपि पहले से ही उत्तर दिया गया) सवाल
हल्के फज
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.