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