X
  • Дизайн та розробка сайту
  • Дизайн і створення сайтів. Розробка тем для WordPress. Створення Landing Page.
  • office@gnatkovsky.com.ua
  • @vgnat
  • Написати мені
Замовити послугу

Як додати на сторінку редагування рубрик, міток і інших таксономій свої поля в WordPress

Приклад
  • 2024-11-21
  • 1287 переглядів

  • Дизайн та розробка сайту

Доброго вам дня

Дана стаття буде як продовження або доповнення до попередньої, де ми з вами додавали візуальний редактор в опис таксономій. Саме поле опис є завжди, це стандартне поле для виведення інформації про таксономії на сайті. Якщо ви займаєтеся розробкою тем для WordPress чи редагуєте тему, що встановлена ​​у вас на сайті і вам потрібно додати нові поля для виведення додаткової інформації то вам буде корисна ця стаття. Щоб ознайомиться з попередньою перейдіть за посиланням - Як додати візуальний редактор в опис рубрик та міток в WordPress

Как добавить на страницу редактирования рубрик, меток и других таксономий свои поля в WordPress

Для чого вам можуть знадобитися додаткові поля для категорій, міток і інших таксономій? Дуже просто, раптом ви захочете виводити додаткову інформацію, яку потрібно відокремити від основного опису. Застосувань може бути багато, та й якщо ви потрапили на цю статтю, значить у вас теж є потреба зробити додаткові поля на сторінці редагування таксономій. Особисто мені, кілька разів потрібен був такий функціонал. Один раз замовник попросив додати поля для СЕО. Він не хотів використовувати плагіни у нього був свій метод реалізації, з яким йому допоміг я. Так само був випадок, коли після всіх записів рубрики треба було виводити інформацію що відноситься до рубрики. Не будемо затягувати і приступимо до виконання задуманого.

Перше що потрібно додати додати подію, в якій запустимо нашу функцію і застосуємо її до потрібної таксономії. В даному прикладі це будуть звичайні категорії.

Щоб це зробити, потрібно додати невеликий код в файл функцій вашої теми - function.php . Додаєте в самий кінець перед закриваючим тегом PHP ?>. Якщо його немає, то просто в самий кінець.

Перед внесенням змін в function.php , обов'язково збережіть його копію, щоб в подальшому, у випадку помилки, повернути все як було. Так само, можете використовувати дочірню тему. Якщо ви не знаєте що це таке, то ознайомтеся зі статтею - Дочірні теми WordPress.

add_action("category_edit_form_fields", 'edit_new_custom_fields');

У попередній статті я описував як працює ця подія і як правильно вказувати таксономию, кому ліньки переходити і читати - повторю. Якщо вам треба так само додати свій опис до мітки, то подія буде така:

add_action('post_tag_edit_form_fields','edit_new_custom_fields');

Взагалі, суть події - {taxonomy}_edit_form_fields, в тому, що замість {taxonomy}, вказуєте потрібну таксономію:

  • category - для рубрик
  • post_tag - для міток
  • person - якщо ви, наприклад створили свою таксономию - Персони і назвали її person. Детальніше про це в статті - Створення своєї таксономії в WordPress.
  • Відразу після події, додаємо функцію - edit_new_custom_fields

    function edit_new_custom_fields( $term ) { ?>
    <tr class="form-field">
    <th scope="row" valign="top"><label>Додаткове поле</label></th>
    <td><?php $taxonomy_custfield1 = esc_attr( get_term_meta( $term->term_id, 'taxonomy_custfield1', 1 ) );
    		wp_editor(htmlspecialchars_decode($taxonomy_custfield1) , 'wpeditor_taxonomy_custfield1', array('textarea_name' => 'extra[taxonomy_custfield1]','textarea_rows' => 10,'editor_css' => '<style>.html-active .wp-editor-area{border:0;}</style>','wpautop' => 1,) ); ?>
    <span class="description">Додаткове поле для таксономії.</span></td>
    </tr>
    <?php }
    

    Тут ми просто додали рядок в таблицю, що виводиться на сторінці редагування таксономії, в якій і з'явиться наше нове поле у вигляді текстової області. Якщо вам треба не текстове поле, а прросто рядок для введення, то замініть 4,5,6 рядок з редактором на наступну:

    <td><input type="text" name="extra[taxonomy_custfield1]" value="<?php echo esc_attr( get_term_meta( $term->term_id, 'taxonomy_custfield1', 1 ) ) ?>"></td>
    

    Зверніть увагу, що у полів є унікальний ідентифікатор - taxonomy_custfield1. Не забудьте, що для кожного нового поля вказувати унікальний. Полів можете додавати скільки завгодно.

    Тепер треба додати подію і функцію для збереження нашого поля або полів якщо ви додавали кілька.

    add_action("edited_category", 'save_custom_taxonomy_meta');
    

    Подія - edited_{taxonomy}, працює точно так само, як описував раніше {taxonomy}_edit_form_fields, замість {taxonomy}, вказуєте потрібну таксономію.

    Тепер сама функція - save_custom_taxonomy_meta для збереження всього.

    function save_custom_taxonomy_meta( $term_id ){
    	if ( ! isset($_POST['extra']) ) return;
    	if ( ! current_user_can('edit_term', $term_id) ) return;
    	if (
    		! wp_verify_nonce( $_POST['_wpnonce'], "update-tag_$term_id" ) &&
    		! wp_verify_nonce( $_POST['_wpnonce_add-tag'], "add-tag" )
    	) return;
    	$extra = $_POST['extra'];
    	foreach( $extra as $key => $val ){
    		$_key = sanitize_key( $key );
    		if( $_key !== $key ) wp_die( 'bad key'. esc_html($key) );
    		if( $_key === 'tag_posts_shortcode_links' )
    			$val =  $val;
    		else
    			$val = $val;
    		if( ! $val )
    			delete_term_meta( $term_id, $_key );
    		else
    			update_term_meta( $term_id, $_key, $val );
    	}
    return $term_id;
    }
    

    Ця функція не вимагає правок і змін. Просто додаєте і все.

    Тепер треба вивести отриману інформацію. Виводити її можна на сторінці категорії або запису, або там, де це вам потрібно. Назвати конкретний файл не можу, тому що залежить від теми. Найчастіше - це single.php чи category.php.

    $taxonomy_custfield1 = get_term_meta($cat_id, 'taxonomy_custfield1', 1 ));
    if(!empty($taxonomy_custfield1)){
    echo '<div>'.$taxonomy_custfield1.'</div>';
    }
    

    З кодом все просто. Спочатку створюємо змінну - $taxonomy_custfield1 якій присвоюємо вміст додаткового поля. Для кожного поля - своя змінна, якщо ви заводили кілька, думаю, це зрозуміло.

    Далі перевіряємо, чи не порожня наша змінна, тобто чи заповнене поле в адмінці і якщо все ок, то виводимо його вміст.

    Якщо все зроблено правильно, тепер ви можете додавати поля з додатковою інформацією для своїх таксономій.

    На цьому все, дякую за увагу. 🙂

Якщо Вам була корисна моя праця, можете фінансово підтримати сайт або відключити блокувальник реклами, що займе 2 хвилини :)

Хочу підтримати фінансово Хочу відключити блокувальник

Оцініть статтю
  1. 5
  2. 4
  3. 3
  4. 2
  5. 1
Проголосовало: 3, в среднем: 5 из 5
Читайте також

Deprecated: Функція WP_Query викликана з аргументом, який вважається застарілим з версії 3.1.0! Вираз caller_get_posts застарілий. Використовуйте ignore_sticky_posts. in /var/www/vhosts/gnatkovsky.com.ua/gnatkovsky.com.ua/public/wp-includes/functions.php on line 6078