Поддержка Темы и шаблоны Ограничение количества меток в метабоксе

  • Я добавляю такой код, чтобы вместо стандартных меток при редактировании записей, у меня выводились чекбоксы с со всеми метками, как мне ограничить максимальное количество меток у записи, чтобы максимальное значение меток, которым соответствует запись было не больше 6-ти.
    Ниже код:

    <?php 
    
    /*
     * Удаление метабокса
     */
    function udalenie_metaboksa_metok() {
    	$id = 'tagsdiv-post_tag'; // у каждого метабокса есть свой ID, который можно глянуть в исходном коде страницы
    	$tip = 'post'; // откуда будем удалять - в данном случае со страниц редактирования записей
    	$raspolozhenie = 'side'; // расположение удаляемого метабокса, side - значит в боковой колонке справа
    	remove_meta_box( $id, $tip, $raspolozhenie );
    }
    add_action( 'admin_menu', 'udalenie_metaboksa_metok');
    
    /*
     * Добавление метабокса
     */
    function dobavlenie_metaboksa(){
    	$id = 'truetagsdiv-post_tag'; // ID может быть любой, главное, чтобы отличался от уже существующих метабоксов
    	$zagolovok = 'Метки';
    	$funkcija = 'kod_metaboksa'; // название обратной (callback) функция, которая собственно и будет выводить содержимое метабокса
    	$tip = 'post';
    	$raspolozhenie = 'side';
    	$prioritet = 'default'; // приоритет вывода, нам подойдет default
    	add_meta_box( $id, $zagolovok, $funkcija, $tip, $raspolozhenie, $prioritet );
    }
    add_action( 'admin_menu', 'dobavlenie_metaboksa');
    
    /*
    * Содержимое метабокса
    */
    function kod_metaboksa($post) {  
    
    	// в данном случае мы просто получаем все метки на блоге в виде массива объектов
    	$vse_metki = get_terms('post_tag', array('hide_empty' => 0) ); 
    
    	// а теперь - все метки, которые присвоены к записи
    	$vse_metki_posta = get_the_terms( $post->ID, 'post_tag' );  
    
    	// создаем массив меток поста, состоящий из их ID - он понадобится нам позднее
    	$id_metok_posta = array();
    	if ( $vse_metki_posta ) {
    			foreach ($vse_metki_posta as $metka ) {
    					$id_metok_posta[] = $metka->term_id;
    			}
    	}
    
    	// начинаем выводить HTML
    	echo '<div id="taxonomy-post_tag" class="categorydiv">';
    	echo '<input type="hidden" name="tax_input[post_tag][]" value="0" />';
    	echo '<ul>';
    	// запускаем цикл для каждой из меток
    	foreach( $vse_metki as $metka ){
    			// по умолчанию чекбокс отключен
    			$checked = "";
    			// но если ID метки содержится в массиве присвоенных меток поста, то отмечаем чекбокс
    			if ( in_array( $metka->term_id, $id_metok_posta ) ) {
    					$checked = " checked='checked'";
    			}
    			// ID чекбокса (часть) и ID li-элемента
    			$id = 'post_tag-' . $metka->term_id;
    			echo "<li id='{$id}'>";
    			echo "<label><input type='checkbox' name='tax_input[post_tag][]' id='in-$id'". $checked ." value='$metka->slug' /> $metka->name</label>";
    			echo "</li>";
    	}
    	echo '</ul></div>'; // конец HTML
    }
    • Тема изменена 2 недели, 5 дней назад пользователем senseless1.