Carbon Fields ошибка вывода галлереи
Что делаю не так?
Field::make( 'media_gallery', 'crb_media_gallery', 'Слайдер' )
Вывожу
<?php $image = carbon_get_theme_option('crb_media_gallery'); ?> <?php foreach ($image as $img): ?> <?php echo wp_get_attachment_image( $img['crb_media_gallery'], 'full'); ?> <?php endforeach; ?>
Картинки выводятся но пишет ошибку
Warning: Illegal string offset 'crb_media_gallery' in
Помогите пожалуйста подправить . Как я понимаю не правильно извлекаю массив?
Жаль Вы удалили вопрос на Ютубе, я зря писал там комментарий, он пропал. Повторяю. Дебаг, дебаг и ещё раз дебаг Вы разработчик и дебаг теперь ваше второе имя! Что-то не понимаете? Смотрите, какие данные возвращает функция, в данном случае:
var_dump($image);
Сморите, какие данные она возвращает и на основе этого решаете, как эти данные обрабатывать.
Здравствуйте. Я получила Ваше письмо с вопросом. К сожалению, я вряд ли понимаю в php больше Вашего. Единственное, могу поделиться своими наработками.
Вывод полей в админке (привожу урезанную версию):
/* Site Options */ add_action( 'carbon_fields_register_fields', 'cg_theme_options' ); function cg_theme_options() {Container::make( 'theme_options', 'site_dashboard', 'Пульт' ) ->add_tab( 'About', array( Field::make( 'text', 'cg_phone', 'Телефон' ), Field::make( 'textarea', 'cg_contacts', 'Контакты' ), Field::make( 'text', 'cg_vk', 'ВКонтакте' ), Field::make( 'text', 'cg_fb', 'Фейсбук' ), Field::make( 'media_gallery', 'clients', 'Клиенты' ) ->set_type( 'image' ) ->set_duplicates_allowed( false ) ) ) ->add_tab( 'Informers', array( Field::make('complex', 'informs_pref', 'Информеры') ->set_collapsed(true) ->add_fields('informer', 'Информер', array( Field::make('image', 'inform_img', 'Изображение') ->set_width(20), Field::make('text', 'inform_text', 'Текст') ->set_width(80), Field::make('text', 'inform_link', 'Ссылка') ->set_width(80), Field::make('checkbox', 'inform_on', 'Включено') ->set_width(20) ->set_option_value('no') )) ->set_header_template('<% if (inform_text){%> <%- inform_text %> <%- inform_on ? "[Вкл]" : "" %> <% } %>') ) ); }
Вас могут заинтересовать поля 'clients' из первой вкладки и вторая вкладка. Клиенты - это просто изображения, а Информеры - комплекс данных, в том числе и изображения.
Вывод данных из 'clients' (я вывожу в виджете):
<?php $clients = carbon_get_theme_option('clients'); foreach ( $clients as $client ) { $image = wp_get_attachment_image( $client, 'full' ); $name = wp_get_attachment_metadata( $client ); echo '<div class="listing-item"><span id="img'.$name['file'].'">'.$image.'</span></div>'; }?>
Код вывода информеров:
<?php $informers = carbon_get_theme_option('informs_pref'); if ( $informers ) { echo '<div id="informers" class="row">'; foreach ($informers as $informer){ $on = $informer['inform_on']; if ( $on ) { $image = $informer['inform_img']; $image_thumb = wp_get_attachment_image_url( $image ); $image_url = wp_get_attachment_image_url( $image, 'full' ); echo '<a class="informer round" href="'.$informer['inform_link'].'"><img src="'.$image_thumb.'" alt="'.$informer['inform_text'].'" title="'.$informer['inform_text'].'"><span class="title slide v-center round"><b>'.$informer['inform_text'].'</b></span></a>'; }}echo '</div>';} ?>
Надеюсь, эти примеры Вам помогут.
Благодарю за отзывчивость !
Все подошло )
К примеру кто захочет выводить слайдер как мне . По примеру я сделал так:
<div class="slider" > <?php $clients = carbon_get_theme_option('clients'); foreach ( $clients as $client ) { $image = wp_get_attachment_image( $client, 'full' ); echo $image; }?> </div>
И уже к div вешаем jquery. Без дополнительных плагинов для слайдеров.Что дает больше свободы для творчества)
Всех вам благ!И удачи в проектах!
Еще раз огромное спасибо!
Рада, что помогло. Но в догонку настоятельно советую прислушаться к совету уважаемого campusboy про дебаг. В своё время мне это сильно помогло. Неважно на какой стадии знание программирования, дебаг всегда может помочь.
Вам нужно написать таким образом...