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 про дебаг. В своё время мне это сильно помогло. Неважно на какой стадии знание программирования, дебаг всегда может помочь.
Вам нужно написать таким образом...
<?php $image = carbon_get_theme_option('crb_media_gallery'); foreach ($image as $img): echo wp_get_attachment_image( $img, 'full'); endforeach; ?>