WordPress как на ладони
Очень Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую!

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

Помогите пожалуйста подправить . Как я понимаю не правильно извлекаю массив?

Заметки к вопросу:
campusboy 5.1 год назад

Жаль Вы удалили вопрос на Ютубе, я зря писал там комментарий, он пропал. Повторяю. Дебаг, дебаг и ещё раз дебаг smile Вы разработчик и дебаг теперь ваше второе имя! Что-то не понимаете? Смотрите, какие данные возвращает функция, в данном случае:

var_dump($image);

Сморите, какие данные она возвращает и на основе этого решаете, как эти данные обрабатывать.

Koxae 5.1 год назад

Здравствуйте. Я получила Ваше письмо с вопросом. К сожалению, я вряд ли понимаю в 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>';}
?>

Надеюсь, эти примеры Вам помогут.

padavan_web 5.1 год назад

Благодарю за отзывчивость !
Все подошло )

К примеру кто захочет выводить слайдер как мне . По примеру я сделал так:

<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. Без дополнительных плагинов для слайдеров.Что дает больше свободы для творчества)

Всех вам благ!И удачи в проектах!
Еще раз огромное спасибо!

Koxae 5.1 год назад

Рада, что помогло. smile Но в догонку настоятельно советую прислушаться к совету уважаемого campusboy про дебаг. В своё время мне это сильно помогло. Неважно на какой стадии знание программирования, дебаг всегда может помочь.

0
padavan_web
5.1 год назад 1
  • 0
    Romka1 unrealthemes.ru

    Вам нужно написать таким образом...

    <?php 
    $image = carbon_get_theme_option('crb_media_gallery');
    
    foreach ($image as $img): 
    
    	echo wp_get_attachment_image( $img, 'full');
    
    endforeach; 
    ?>
    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация