sayfalar ve özel gönderi türleri için yorumları varsayılan olarak ayarlama?


20

Sayfaları ve özel posta türlerini kullanarak yorumları varsayılan olarak kapatmak istiyorum

Başlangıçta, bu sayfalarda bloğu görüntülemekten kaçınmak için yorum görüntüleme işlevinde koşullu kullandım, ancak yorumları gerektiği gibi tekrar açabilmek için kullanıcının ihtiyacım var.


1
Sadece dostça bir hatırlatma ben istenen etkisi olduğuna inanıyorum bu soruya bir cevap ekledim ..
t31os

1
Eminim işleviniz iyi çalışır, ancak zaten amacım için çalışan bir cevap seçmiştim.
Hafif Fuzz

Yanıtlar:


9

Anladığım kadarıyla, sayfaları ve bazı özel yazı türlerini varsayılan olarak 'kapalı' olarak yorumlamak için ayarlamak istersiniz, ancak yayınlar yine de varsayılan seçeneği kullanır (yani 'açık' olarak yorum yapmak). Bu durumda, aşağıdaki işlev bunu yapacaktır.

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
yorumları tekrar açmak istediğinizde bu başarısız olur. Sadece bir kez çalışacak şekilde düzenlenmesi gerekiyor
Mild Fuzz

1
şu anda bir makinede değil, ama sanırım meta kontrol etmek için meta veri mekaniğini kullanabilirsiniz, eğer işlevi çalıştırmadıysanız, başka meta ekleyin ve fonksiyonu çalıştırın.
Hafif Fuzz

1
test edildi, bu kadar basit işe yaramaz çünkü posta kimliği fonksiyonunuzdaki $ data değişkeninde yer almaz.
Hafif Fuzz

1
Cevabımı göndermeden önce (WP 3.0 ile) test ettim ve işe yaradı. Hangi sorunla karşılaşıyorsunuz? Gönderi henüz işlev çalıştırılmadan önce oluşturulmadığından, gönderi kimliği $ verilerinde değil (wp_insert_post işlevindeki filtreye bakın). İşlev, alanlara herhangi bir içerik girmeden önce yalnızca wp-admin / post-new.php? Post-type = xxx adresini ziyaret ettiğinizde çalışır.
sorich87

1
test sunucumda, yorumları tekrar açamıyorum, sürekli kapalı olarak ayarlanmışlar.
Hafif Fuzz

10

Yeni bir gönderi oluşturduğunuzda (özel tür veya normal), WordPress get_default_post_to_edityeni bir gönderinin sahip olacağı varsayılan değerleri ayarlayan çağırır .

Bu işlev, varsayılan başlığı, içeriği ve alıntıyı değiştirmek için birkaç filtre kancası sağlar, ancak ne yazık ki başka bir şey yoktur ... ancak her filtre, tüm $postnesne boyunca geri aramaya geçer, aslında bu, birkaç özelliği yeniden tanımlamanın mümkün olduğu anlamına gelir (veya yalnızca bir severiz)

Bu sizin için çalışmalıdır, basitçe kodun anahtarın içinde olması gereken yazı türlerini eklemeniz yeterlidir .. (film ve sayfa örneklerdir) ..

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

Kod WP 3.0.1 üzerinde test edilmiştir ve diğerlerinin seçeneklerden varsayılan durumu devralmasına izin verirken özellikle yazı türleri için yorumları devre dışı bırakmak istenen etkiye sahiptir default_comment_status.

Umarım yardımcı olur.... :)


2

Varsayılan olarak sayfalardaki yorumları devre dışı bırakmak için bir eklenti yazdım. http://wordpress.org/extend/plugins/page-comments-off-please/

Belki bu yardımcı olur?


1
sorich87 cevap 5 hat çözüm göz önüne alındığında aşırı görünüyor! Şerefe.
Hafif Fuzz

1
Gerçekten değil, kod gereksinimlerini ele almak için birçok yaklaşım var, bu sadece farklı bir yöntem.
t31os

1

Bu konuya göre, bunu gerçekleştirmek için özel bir eklenti veya işlev kullanmadan talep ettiğiniz şey mümkün değildir.


1
Birini yazmakta sorunum yok, sadece doğru yöne yönlendirilmem gerekiyor. Yardımcı olabilecek kancalar ve filtreler vb.
Hafif Fuzz

1
Sonunda bir tane yazıyorsanız, lütfen burada ne yaptığınızı paylaşın! Çok fazla fayda sağlayacak bir eklenti gibi görünüyor.
Travis Northcutt

1

Hala koşullu yorumlarınızı yorum ekranında kullanmanızı öneririm, ancak koşullu ayarlarınızı kaydetmek için seçenekleri kullanın. Ardından, Ayarlar menüsüne yöneticilerin yorumları gerektiği gibi açıp kapatmalarını sağlayan bir sayfa ekleyebilirsiniz.


Güncelleme

Benim için, her sayfa oluşturduğunuzda "kapalı" olarak ayarlamak yerine varsayılan ayarı "kapalı" olarak ayarlamak istediğinizde ortaya çıkar. Bu ise mümkün.

WordPress yönetici bölümünde Ayarlar >> Tartışma bölümüne gidin. İlk bölümde ("Varsayılan Makale Ayarları" "Kullanıcıların yeni makaleler hakkında yorum göndermesine izin ver" adlı bir seçenek görürsünüz ... bu seçeneğin işaretini kaldırın.

Artık varsayılan olarak tüm yeni yayınlar, sayfalar ve özel yayın türleri için yorumlar "kapalı" olacaktır. Her bir gönderi / sayfa düzenleme ekranındaki "Tartışma" meta kutusundaki uygun onay kutusunu seçerek yorumları duruma göre "açık" duruma getirebilirsiniz.


1
Yine de orada bir seçenek var. Ben sadece varsayılan olarak kapalı istiyorum.
Hafif Fuzz

1
Nerede zaten bir seçenek var? Yazı / sayfa düzenleme ekranının altındaki "Tartışma" kutusuna mı başvuruyorsunuz?
EAMann

1
Evet, sadece işaretinin kaldırılmasını istiyorum. Sorich87 çözümü neredeyse işe yarıyor. Henüz bir şey denemek için bir makinede değil.
Hafif Fuzz

-2

Bu kodu sadece function.php dosyasına eklerseniz

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

Gönderiye gidin ve ekran seçeneklerinde "Tartışma" ve "Yorumlar" seçeneğini işaretleyin, her özel gönderi türü için yorumları etkinleştirebilir / devre dışı bırakabilirsiniz.


2
(daha önce de cevaplanmış olsa da) sorusuna gerçekten cevap vermiyor
Mild Fuzz
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.