[Snippet] Zakázanie komentárov vo WordPresse
Tento snippet kompletne vypne komentáre na celom webe a zároveň zakáže recenzie vo WooCommerce produktoch. Po jeho implementácii budú komentáre vypnuté pre všetky typy obsahu, vrátane článkov, stránok, príloh (attachments) a produktov. Z administrácie zmizne sekcia komentárov, čím sa zjednoduší správa webu, a existujúce komentáre sa prestanú zobrazovať na webe. Okrem toho snippet odstráni aj kartu „Recenzie“ z produktových stránok v WooCommerce, čím zablokuje možnosť ich pridávania. Implementácia je rýchla a jednoduchá, stačí pridať kód do súboru functions.php vo vašej odvodenej téme, alebo pomocou pluginu.
<?php
// kompletné zakázanie komentárov vo WordPresse
function jh_disable_comments() {
// vypnutie podpory komentárov pre všetky 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' );
}
}
// presmerovanie zo stránky s komentármi
global $pagenow;
if ( $pagenow === 'edit-comments.php' ) {
wp_safe_redirect( admin_url() );
exit;
}
// zatvorenie existujúcich komentárov
update_option( 'default_comment_status', 'closed' );
update_option( 'default_ping_status', 'closed' );
// odstránenie položiek z admin menu
add_action( 'admin_menu', function() {
remove_menu_page( 'edit-comments.php' );
remove_submenu_page( 'options-general.php', 'options-discussion.php' );
} );
// odstránenie komentárov z admin baru
add_action( 'wp_before_admin_bar_render', function() {
global $wp_admin_bar;
$wp_admin_bar->remove_menu( 'comments' );
} );
// zakázanie REST API endpointov pre komentáre
add_filter( 'rest_endpoints', function( $endpoints ) {
if ( isset( $endpoints['/wp/v2/comments'] ) ) {
unset( $endpoints['/wp/v2/comments'] );
}
if ( isset( $endpoints['/wp/v2/comments/(?P<id>[\d]+)'] ) ) {
unset( $endpoints['/wp/v2/comments/(?P<id>[\d]+)'] );
}
return $endpoints;
} );
}
add_action( 'admin_init', 'jh_disable_comments' );
// odstránenie dashboard widgetu s komentármi v administrácii
add_action( 'widgets_init', function() {
unregister_widget( 'WP_Widget_Recent_Comments' );
} );
// odstránenie metaboxu s komentármi v administrácii
add_action( 'admin_init', function() {
remove_meta_box( 'dashboard_recent_comments', 'dashboard', 'normal' );
} );
// odstránenie komentárov z RSS
add_filter( 'feed_links_show_comments_feed', '__return_false' );
// odstránenie komentárov z frontendu
add_filter( 'comments_array', '__return_empty_array' );
add_filter( 'comments_open', '__return_false' );
add_filter( 'pings_open', '__return_false' );
// zakázanie recenzií vo Woocommerce
function jh_disable_woo_reviews() {
if ( class_exists( 'WooCommerce' ) ) {
// odstránenie záložky Reviews
add_filter( 'woocommerce_product_tabs', function( $tabs ) {
unset( $tabs['reviews'] );
return $tabs;
} );
// odstránenie podmenu "Komentáre" v administrácii Woocommerce
add_action( 'admin_menu', function() {
remove_submenu_page( 'edit.php?post_type=product', 'edit-comments.php' );
} );
// odstránenie podpory recenzií pre produkty
add_filter( 'woocommerce_product_supports', function( $supports ) {
return array_diff( $supports, array( 'reviews' ) );
} );
// vypnutie podpory pre recenzie
remove_post_type_support( 'product', 'comments' );
// vypnutie zobrazenia ratingu na produktových stránkach
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_rating', 10 );
// vypnutie zobrazenia ratingu v product loops
remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_rating', 5 );
// nastavenie globálnej možnosti pre vypnutie recenzií
update_option( 'woocommerce_enable_reviews', 'no' );
update_option( 'woocommerce_enable_review_rating', 'no' );
}
}
add_action( 'admin_init', 'jh_disable_woo_reviews' );