Как запретить авторам создание новых тегов

Как запретить авторам создание новых тегов | n-wp.ru
👍 Научим бесплатно правильно создавать сайты на WordPress. Подробнее →

Иногда в блоге, в котором пишут множество авторов, нужно запретить создание новых тегов. Администратор сам определяет, какие теги в блоге можно использовать, и ему не нужно, чтобы появлялись дубликаты, синонимы, непонятные метки, слова с ошибками. Сделать это можно двумя способами — запретить запись тегов при сохранении поста, и скрывать от авторов в редакторе строку ввода тегов.

Как запретить авторам создание новых тегов

Чтобы запретить ввод новых тегов, достаточно скрыть строку ввода в редакторе. Сделать это можно, если вставить следующий код в файл functions.php:

function disable_tags()
{
    ?>
    
        jQuery(document).ready(function() {
            jQuery('#new-tag-post_tag').attr("disabled", "disabled").css("display", "none");
            jQuery('.tagadd').attr("disabled", "disabled").css("display", "none");
            jQuery('#post_tag').css("display", "none");
        });
    
    <?php
}
add_action('admin_head', 'disable_tags');

Для автора останутся доступными уже имеющиеся в блоге теги — их можно выбрать из списка наиболее популярных.

Можно вообще поступить кардинально — запретить сохранение тегов при написании, редактировании и сохранении постов. Для этого нужно вставить в файл functions.php следующий код:

add_filter( 'pre_post_tags_input', 'no_tags_input_create' );
add_filter( 'pre_post_tax_input', 'no_tax_input_create' );

function no_tags_input_create($tags_input) {    
	$output = array();    
	foreach( $tags_input as $tag )        
	if( term_exists( $tag, 'post_tag') )            
	$output[] = $tag;    
	return $output;
}
	
function no_tax_input_create($tax_input) { 
	if( !isset($tax_input['post_tag']) )        
	return $tax_input;    
	$output = array();    
	$tags = explode(',', $tax_input['post_tag']);    
	foreach( $tags as $tag )        
	if( term_exists( $tag, 'post_tag') )            
	$output[] = $tag;    
	$tax_input['post_tag'] = implode(',',$output);    
	return $tax_input;
}

В этом случае теги к постам будет добавлять в ручном режиме сам администратор.

Однако меня интересует еще более продвинутый вариант — как сделать, чтобы авторы могли вводить во втором случае любые теги, но сохранялись бы при написании нового поста только те, которые уже существуют в блоге?

Создай свой первый сайт на WordPress

tiaurus

Автор n-wp.ru — блога о WordPress для новичков.

Оцените автора
Добавить комментарий