[Snippet] Zakázanie komentárov vo WordPresse

Obrázok tohto článku

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

Páčil sa vám tento článok? Zdieľajte ho na sociálnych sieťach, alebo ho pošlite niekomu, komu by mohol pomôcť 😊

Zdieľať článok:
Profilový obrázok autora článku
O autorovi článku

Juraj Hamara

Nezávislý profesionál s viac ako 8 rokmi skúseností v tvorbe webových stránok & eshopov a špecialista na WordPress. Pomáham klientom vytvárať funkčné, moderné a efektívne webové riešenia. Vo voľnom čase cestujem a oddychujem vo wellnesse. Rád varím a ešte radšej jem!

Pridať komentár