impostare i commenti come predefiniti per le pagine e i tipi di post personalizzati?


20

Voglio disattivare i commenti per impostazione predefinita con pagine e post-tipi personalizzati

Inizialmente ho semplicemente usato i condizionali nella funzione di visualizzazione dei commenti per evitare di visualizzare il blocco su queste pagine, ma ho bisogno che l'utente sia in grado di riattivare i commenti come richiesto.


1
Solo un promemoria amichevole ho aggiunto una risposta a questa domanda che credo abbia l'effetto desiderato ..
t31os

1
Sono sicuro che la tua funzione funzioni bene, ma avevo già selezionato una risposta che funziona per il mio scopo.
Lieve Fuzz,

Risposte:


9

Da quello che ho capito, si desidera impostare le pagine e alcuni tipi di post personalizzati in modo che i commenti siano disattivati ​​per impostazione predefinita, mentre i post continueranno a utilizzare l'opzione predefinita (vale a dire i commenti "on"). In questo caso, la seguente funzione lo farà.

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
questo non riesce quando si desidera riattivare i commenti. Deve essere modificato in modo che venga eseguito una sola volta
Mild Fuzz

1
non in una macchina in questo momento, ma suppongo che tu possa usare la meccanica dei metadati per verificare la presenza di meta, se non c'è la funzione, altrimenti aggiungi la meta ed esegui la funzione.
Lieve Fuzz,

1
testato, questo non funzionerà semplicemente perché l'ID post non è contenuto nella var $ data nella tua funzione.
Lieve Fuzz,

1
L'ho provato (con WP 3.0) prima di inviare la mia risposta e ha funzionato. Che problema stai riscontrando? L'ID post non è in $ data perché il post non è stato ancora creato prima dell'esecuzione della funzione (guarda il filtro nella funzione wp_insert_post). La funzione verrà eseguita solo quando visiti wp-admin / post-new.php? Post-type = xxx, prima di inserire qualsiasi contenuto nei campi.
sorich87,

1
sul mio server di prova, non riesco a riattivare i commenti, sono sempre disattivati.
Dolce Fuzz,

10

Quando crei un nuovo post (tipo personalizzato o normale), WordPress chiama get_default_post_to_editche quindi imposta i valori predefiniti che avrà un nuovo post.

Questa funzione fornisce alcuni hook di filtro per modificare il titolo, il contenuto e l'estratto predefiniti, ma sfortunatamente nient'altro ... tuttavia ogni filtro passa l'intero $postoggetto al callback, essenzialmente questo significa che è possibile ridefinire diverse proprietà (o solo una se ci piace)

Questo dovrebbe funzionare per te, aggiungi semplicemente i tipi di post a cui il codice dovrebbe applicare come casi all'interno dello switch .. (film e pagina sono esempi) ..

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

Il codice è stato testato su WP 3.0.1 e ha l'effetto desiderato di disabilitare in modo specifico i commenti per i tipi di post, lasciando che altri ereditino lo stato predefinitodefault_comment_status dall'opzione.

Spero possa aiutare.... :)



1

Secondo questo thread , ciò che stai richiedendo non è possibile senza l'uso di un plug-in o una funzione personalizzati per realizzarlo.


1
Non ho problemi a scriverne uno, ho solo bisogno di essere puntato nella giusta direzione. Ganci, filtri ecc. Che possono essere d'aiuto.
Delicato Fuzz,

1
Se finisci per scriverne uno, ti preghiamo di condividere quello che hai fatto qui! Sembra un plugin che può fare che sarebbe molto utile.
Travis Northcutt,

1

Ti consiglierei di usare ancora i tuoi condizionali nella visualizzazione dei commenti, ma usare le opzioni per memorizzare le tue impostazioni condizionali. Quindi è possibile aggiungere una pagina al menu Impostazioni che consente agli amministratori di attivare o disattivare i commenti secondo necessità.


Aggiornare

Mi viene in mente che si desidera impostare il valore predefinito per commentare su "off" come impostazione globale anziché impostarlo su "off" ogni volta che si crea una pagina. Questo è possibile

Vai su Impostazioni >> Discussione nella sezione admin di WordPress. Nella prima sezione ("Impostazioni articolo predefinite" vedrai un'opzione chiamata "Consenti alle persone di pubblicare commenti su nuovi articoli" ... deseleziona questa opzione.

Ora, per impostazione predefinita, i commenti verranno disattivati ​​per tutti i nuovi post, pagine e tipi di post personalizzati. Puoi comunque riportare i commenti "on" caso per caso selezionando la casella di controllo appropriata nella meta-box "Discussione" nella schermata di modifica di singoli post / pagine.


1
C'è già un'opzione lì, però. Lo desidero semplicemente per impostazione predefinita.
Delicato Fuzz,

1
C'è già un'opzione dove? Ti riferisci alla casella "Discussione" nella parte inferiore della schermata di modifica post / pagina?
EAMann,

1
Sì, voglio solo che sia deselezionato. La soluzione Sorich87 funziona quasi. Non su una macchina per provare ancora qualcosa.
Lieve Fuzz,

-2

Se aggiungi semplicemente questo codice in Functions.php

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

Vai al post e nelle opzioni dello schermo, seleziona "Discussione" e "Commenti", puoi abilitare / disabilitare i commenti per ogni tipo di post personalizzato.


2
in realtà non risponde alla domanda (sebbene abbia già risposto)
Mild Fuzz
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.