Cum să elimini secțiunea de comentarii doar din pagini, nu și din postări
Cum să elimini secțiunea de comentarii doar din pagini, nu și din postări?

Dacă dorești să afișezi comentariile și formularul de comentarii pe articole, dar nu și pe pagini, trebuie să separi logica în fișierul template pentru a apela comments_template()
în funcție de tipul elementului afișat (articol sau pagină). Există două metode pentru a face acest lucru: fie păstrezi un singur fișier template pentru ambele tipuri de conținut și folosești etichete condiționale:
if (!is_page()) {
comments_template();
}
Cea de-a doua opțiune este să folosești atât un fișier template single.php
pentru articole, cât și un page.php
pentru pagini (vezi Ierarhia de Template-uri pentru mai multe informații). Pur și simplu omite apelul către comments_template()
în template-ul pentru pagini. Dacă nu există alte diferențe între layout-ul unui articol și al unei pagini, un fișier template combinat cu etichete condiționale este probabil mai bun pentru întreținere.
Dacă dorești să faci acest lucru "de la distanță", adică acolo unde fișierul template include deja un apel către comments_template()
, poți crea un plugin care se conectează la filtrul comments_template
și îl redirecționează către un fișier gol în director (de fapt, ar putea fi chiar fișierul pluginului însuși - deoarece conține doar cod PHP, nu va afișa nimic - dar acest lucru ar putea fi confuz pentru alții).
add_filter('comments_template', 'no_comments_on_page');
function no_comments_on_page( $file )
{
if ( is_page() ) {
$file = dirname( __FILE__ ) . '/empty-file.php';
}
return $file;
}

Salut Jan, Mulțumesc pentru răspuns. Există vreun plugin care să facă asta fără să intru în cod?

@metal-gear-solid: Am actualizat răspunsul meu cu un exemplu pentru a face asta dintr-un plugin. Nu știu dacă există un plugin care să facă asta, dar este foarte ușor așa că poți să-l plasezi singur într-un fișier de plugin.

Manual pot să elimin secțiunea de comentarii pentru fiecare pagină pentru a debifa aceste opțiuni http://farm2.static.flickr.com/1280/5179502796_b9e09c10ba.jpg. Și tocmai am găsit acest plugin care va menține aceste căsuțe debifate pentru toate paginile, dar nu și pentru articole http://wordpress.org/extend/plugins/page-comments-off-please/

Îmi place foarte mult acest fragment din tema Hybrid de la începutul șablonului comments.php
care va dezactiva flexibil comentariile dacă acestea nu sunt suportate sau sunt dezactivate pe bază de post/pagină:
if ( !post_type_supports( get_post_type(), 'comments' ) || ( !have_comments() && !comments_open() && !pings_open() ) )
return;
