/ Сайтостроение / Wordpress / Присвоение меток чекбоксами

Присвоение меток чекбоксами

05.10.2015

985

Если например на сайте ограниченное количество меток типа: NEW, SALE, OLD, HIT и т.д. то можно сделать ввод меток удобнее, в виде чекбоксов.
Для этого в файл funсtions.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><br />";
echo "</li>";
}
echo '</ul></div>'; // конец HTML
}

Поделится информацией с друзьями

  • Комментарии
  • Вложения

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

Пока нет комментариев. Будь первым!

Присвоение меток чекбоксами
Виджеты
Рекомендации для васВиджетыOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.