Продолжаем изучать плагин для создания произвольных полей Carbon fields. Сегодня рассмотрим контейнеры Comment Meta и Term Meta.
Comment Meta
Контейнеры Comment meta добавляют дополнительные поля на экраны редактирования комментариев. Данные поля хранятся отдельно для каждого комментария как мета-данные комментария.
Откроем файл theme-option.php и добавим два текстовых поля на страницу редактирования комментариев. Для этого внесем в файл следующие строки:
use Carbon_Fields\Container; use Carbon_Fields\Field; Container::make( 'comment_meta', __( 'Comment Information' ) ) ->add_fields( array( Field::make( 'text', 'crb_comment_rating', __( 'Comment Rating' ) ), Field::make( 'text', 'crb_comment_additional_info', __( 'Additional Comment Information' ) ), ) );
Откроем вкладку «комментарии» в админ-панели и увидим:
Доступ к значениям полей
Для доступа к значениям полей необходимо использовать функцию carbon_get_comment_meta ($comment_id, $name), где:
$comment_id — идентификатор комментария, где было введено значение.
$name — имя шаблона поля, которое должно быть получено.
Вставим следующий код в файл comment.php в то место где бы мы хотели видеть эти дополнительные поля.
<?php $comments = get_comments( array( 'post_id' => get_the_ID(), ) ); foreach ( $comments as $comment ) { $comment_additional_info = carbon_get_comment_meta( $comment->comment_ID, 'crb_comment_additional_info' ); $comment_rating = carbon_get_comment_meta( $comment->comment_ID, 'crb_comment_rating' ); if ( ! empty( $comment_additional_info ) ) { echo $comment_additional_info . ' <br> '; } if ( ! empty( $comment_rating ) ) { echo 'Rating: ' . $comment_rating; } } ?>
Открываем запись с комментарием и видим:
Term Meta
Контейнер Term Meta используется для расширения экранов редактирования терминов дополнительными полями. Данные поля хранятся отдельно для каждого термина, используя мета-функциональность термина по умолчанию для WordPress 4.4 и выше. Для версий WordPress до 4.4 данные хранятся в пользовательской таблице ($wpdb->termmeta).
Откроем файл theme-option.php и добавим следующие строки:
use Carbon_Fields\Container; use Carbon_Fields\Field; Container::make( 'term_meta', __( 'Category Properties' ) ) ->where( 'term_taxonomy', '=', 'category' ) ->add_fields( array( Field::make( 'text', 'crb_title',__( 'Title' ) ), Field::make( 'color', 'crb_title_color', __( 'Title Color' ) ), Field::make( 'image', 'crb_thumb', __( 'Thumbnail' ) ), ) );
Теперь зайдем в админ-панель/ рубрики и откроем любую рубрику.
Доступ к значениям полей
Для доступа к значениям полей необходимо использовать функцию carbon_get_term_meta ($term_id, $name ), где:
$term_id — идентификатор термина, в который было введено значение.
$ name — имя поля.
Получим картинку и текстовое поле. Выведем их в файле архивов archive.php:
<?php $term_id = get_queried_object_id();// ID таксономии $term_thumbnail_id = carbon_get_term_meta( $term_id, 'crb_thumb'); // ID изображения $term_thumbnail_url = wp_get_attachment_image_url( $term_thumbnail_id, 'full' );?> // ссылка изображение (полный размер) <img width="300" src="<?php echo $term_thumbnail_url; ?>" alt="" /> <!-- вывести каринку на экран --> <p>Editor of this category: <?php echo carbon_get_term_meta( $term_id, 'crb_title'); ?></p>
Посмотрим на результат.
Чтобы вывести цвет, например можно задать выбранный цвет заголовку
// Получаем значение поля для ввода цвета
<?php $term_title_color = carbon_get_term_meta( $term_id, 'crb_title_color' );?> <!—в шапке выведем стиль или можно сделать это inline --> <style> H2{ color: <?php echo $term_title_color; ?>; } </style>
Или
<p style="color: <?php echo $term_title_color; ?>;">Editor of this category: <?php echo carbon_get_term_meta( $term_id, 'crb_title'); ?></p>
Смотрим, что у нас поучилось