Există vreo modalitate de a elimina complet funcția și secțiunea de comentarii?
Nu vreau ca niciun query legat de comentarii să ruleze. Nu vreau ca nimic legat de comentarii să fie afișat în zona de administrare WordPress.
Este posibil acest lucru în vreun fel?
EDITARE: Eliminați toate link-urile către comentarii din bara de administrare și din întreaga secțiune backend.
// Adaugă acest cod în functions.php
// Dezactivează suportul pentru comentarii și trackbacks
function disable_comments_completely() {
// Dezactivează suportul pentru comentarii post types
$post_types = get_post_types();
foreach ($post_types as $post_type) {
if(post_type_supports($post_type, 'comments')) {
remove_post_type_support($post_type, 'comments');
remove_post_type_support($post_type, 'trackbacks');
}
}
// Ascunde elementele de comentarii din admin menu
add_action('admin_menu', function () {
remove_menu_page('edit-comments.php');
});
// Ascunde bara de admin comentarii
add_action('admin_bar_menu', function($wp_admin_bar) {
$wp_admin_bar->remove_node('comments');
}, 999);
// Redirectionează orice acces la pagina de comentarii
add_action('admin_init', function () {
global $pagenow;
if ($pagenow === 'edit-comments.php') {
wp_redirect(admin_url()); exit;
}
});
// Dezactivează pingback-urile XML-RPC
add_filter('xmlrpc_methods', function($methods) {
unset($methods['pingback.ping']);
return $methods;
});
}

Iată o listă cu toate răspunsurile de mai sus și eliminarea link-ului din bara de administrare. Adăugați acest cod în fișierul de funcții al temei dumneavoastră sau creați un plugin. Voi marca acest lucru ca un wiki al comunității, deoarece fiecare răspuns este corect, doar că nimeni nu a adăugat totul împreună.
<?php
// Elimină din meniul de administrare
add_action( 'admin_menu', 'my_remove_admin_menus' );
function my_remove_admin_menus() {
remove_menu_page( 'edit-comments.php' );
}
// Elimină din articole și pagini
add_action('init', 'remove_comment_support', 100);
function remove_comment_support() {
remove_post_type_support( 'post', 'comments' );
remove_post_type_support( 'page', 'comments' );
}
// Elimină din bara de administrare
function mytheme_admin_bar_render() {
global $wp_admin_bar;
$wp_admin_bar->remove_menu('comments');
}
add_action( 'wp_before_admin_bar_render', 'mytheme_admin_bar_render' );
?>

Aceasta ar trebui să elimine suportul pentru comentarii pe site-ul tău:
add_action('admin_menu', 'remove_comment_support');
function remove_comment_support() {
remove_post_type_support( 'post', 'comments' );
remove_post_type_support( 'page', 'comments' );
}
Nu sunt sigur dacă va ascunde toate mențiunile despre comentarii în secțiunea de administrare. Caseta "Right Now" din panoul de control este în mare parte hard-codată, așa că va trebui fie să ascunzi acea casetă, fie să faci niște modificări pentru a filtra linia despre "Comentarii". Dar ar trebui să elimine textul "comentarii" peste tot în rest, din câte îmi pot imagina.

// Dezactivează suportul pentru comentarii și trackback-uri în tipurile de postări
function df_disable_comments_post_types_support() {
$post_types = get_post_types();
foreach ($post_types as $post_type) {
if(post_type_supports($post_type, 'comments')) {
remove_post_type_support($post_type, 'comments');
remove_post_type_support($post_type, 'trackbacks');
}
}
}
add_action('admin_init', 'df_disable_comments_post_types_support');
// Închide comentariile pe front-end
function df_disable_comments_status() {
return false;
}
add_filter('comments_open', 'df_disable_comments_status', 20, 2);
add_filter('pings_open', 'df_disable_comments_status', 20, 2);
// Ascunde comentariile existente
function df_disable_comments_hide_existing_comments($comments) {
$comments = array();
return $comments;
}
add_filter('comments_array', 'df_disable_comments_hide_existing_comments', 10, 2);
// Elimină pagina de comentarii din meniu
function df_disable_comments_admin_menu() {
remove_menu_page('edit-comments.php');
}
add_action('admin_menu', 'df_disable_comments_admin_menu');
// Redirecționează orice utilizator care încearcă să acceseze pagina de comentarii
function df_disable_comments_admin_menu_redirect() {
global $pagenow;
if ($pagenow === 'edit-comments.php') {
wp_redirect(admin_url()); exit;
}
}
add_action('admin_init', 'df_disable_comments_admin_menu_redirect');
// Elimină metabox-ul de comentarii de pe panoul de control
function df_disable_comments_dashboard() {
remove_meta_box('dashboard_recent_comments', 'dashboard', 'normal');
}
add_action('admin_init', 'df_disable_comments_dashboard');
// Elimină link-urile către comentarii din bara de administrare
function df_disable_comments_admin_bar() {
if (is_admin_bar_showing()) {
remove_action('admin_bar_menu', 'wp_admin_bar_comments_menu', 60);
}
}
add_action('init', 'df_disable_comments_admin_bar');

Acest lucru nu va elimina efectiv elementul din marcajul tău per se, dar poți ascunde cu ușurință link-ul bără de administrare WP 3.1 (atât vizual, cât și pentru cititoarele de ecran) prin adăugarea următoarei linii în CSS-ul temei tale:
li#wp-admin-bar-comments { display: none; visibility: hidden; }

În timp ce citeam mai multe despre acest subiect, am găsit acest articol pe Six Revisions care acoperă cum să ajustezi o mare parte din interfața de administrare, inclusiv eliminarea tuturor urmelor funcției de comentarii.

...și dacă din orice motiv doriți să lăsați oricare dintre acestea activate pentru utilizatorii cu drepturi de administrator, folosiți funcția current_user_can
, de exemplu: if (!current_user_can('level_10'))
țintește doar utilizatorii care nu sunt administratori.

Nivelurile de utilizator sunt învechite. Folosiți 'manage_options' sau altă capabilitate în loc.

@scribu: M-am întrebat despre asta, dar nu am găsit nicio referință recentă la nivelurile de utilizator în WP Codex. Mulțumesc că mi-ai spus (acest tabel cu roluri și capacități m-a ajutat să înțeleg mai bine capacitățile).

Există o soluție gata de utilizare care face exact asta. Este un plugin creat de Frank Bültge.
Documentație: http://wpengineer.com/2230/removing-comments-absolutely-wordpress/
Descărcare plugin: https://github.com/bueltge/Remove-Comments-Absolutely
Doar instalează și atât. Nu necesită configurare.
Funcționează perfect cu WordPress 3.5.
