У меня появились вот такие ошибки:
Warning: Invalid argument supplied for foreach() in C:\OpenServer\domains\TITAN\wp-content\themes\titan\main-page.php on line 185 и т.д.
Дело в том, что почти в самом верху у меня есть секция в которой выводятся последние работы из портфолио. Для сортировки используется изотоп и так как я не особо разбирался в таксономиях. Я эту секцию пропустил. Продолжил делать другие секции. Использовал плагин carbon fields для добавления произвольных полей в кастомные записи.
Далее я вытягиваю данные из нужных мне произвольных полей и выводу всё это ввёрстке:
<div class="row">
<?php $tm_list = carbon_get_the_post_meta('tm_select', 'association');
?>
<?php foreach ($tm_list as $item): ?>
<div class="mb-sm-20 wow fadeInUp col-sm-6 col-md-3" onclick="wow fadeInUp">
<div class="team-item">
<div class="team-image"><img
src="<?php echo carbon_get_post_meta($item['id'], 'team_img'); ?>"
alt="Member Photo"/>
<div class="team-detail">
<h5 class="font-alt"><?php echo carbon_get_post_meta($item['id'], 'team_title'); ?></h5>
<p class="font-serif"><?php echo carbon_get_post_meta($item['id'], 'team_desc'); ?></p>
<div class="team-social">
<?php $st = carbon_get_post_meta($item['id'], 'team_list', 'complex'); ?>
<?php foreach ($st as $item2): ?>
<a href="<?php echo $item2['team_link']; ?>"><i class="<?php echo $item2['team_icon']; ?>"></i></a>
<?php endforeach; ?>
</div>
</div>
</div>
<div class="team-descr font-alt">
<div class="team-name"><?php echo carbon_get_post_meta($item['id'], 'team_name'); ?></div>
<div class="team-role"><?php echo carbon_get_post_meta($item['id'], 'team_pos'); ?></div>
</div>
</div>
</div>
<?php endforeach; ?>
</div>
Затем я разобрался с таксономиями и вернулся к секции где выводится последние 6 работ из портфолио Для вывода этих записей я самостоятельно создал custom_post_type и вывожу их:
<ul class="works-grid works-grid-gut works-grid-3 works-hover-w" id="works-grid">
<?php
$args = [
'post_type' => 'portfolio_post_type',
];
$works = new WP_Query($args);
?>
<?php if($works->have_posts()):?>
<?php while ($works->have_posts()):?>
<?php $works->the_post();?>
<li class="work-item illustration webdesign">
<a href="<?php echo get_permalink(); ?>">
<div class="work-image"><img src="<?php echo get_the_post_thumbnail(); ?>" alt="Portfolio Item"/></div>
<div class="work-caption font-alt">
<h3 class="work-title"><?php echo get_the_title();?></h3>
<div class="work-descr"><?php echo get_the_excerpt(); ?></div>
</div>
</a></li>
<?php endwhile;?>
<?php endif;?>
</ul>
Проблема в том что после того как я добавил код для вывода записей последних работ портфолио. У меня появились ошибки:
Warning: Invalid argument supplied for foreach() in C:\OpenServer\domains\TITAN\wp-content\themes\titan\main-page.php on line 185 и т.д.
Он ругается на foreach потому что после добавления кода который выводит последние записи из порфолио
В переменной:
$tm_list = carbon_get_the_post_meta('tm_select', 'association');
Образуется пустота!!! т.е. если выполнить var_dump($tm_list); то выдаст string 0 а если убрать код который выводит последние работы в портфолио в переменной вновь есть данные О_о такого вида:
array(4) {
[0]=>
array(3) {
["id"]=>
string(2) "24"
["type"]=>
string(4) "post"
["post_type"]=>
string(14) "team_post_type"
}
Я не понимаю где я ошибся. Почему после добавления кода который выводит работы из портфолио у меня вываливается эта ошибка.
Цикл должен заканчиваться wp_reset_postdata().
Почитайте статью на эту тему.
WordPress всегда выполняет главный цикл. Внутри этого цикла определены некие глобальные переменные, в том числе $post, содержащие данные текущего поста.
Вызов carbon_the_post_meta использует эти данные.
Когда вы запускаете пользовательский цикл через WP_Query, вы переопределяете глобальные переменные, в том числе, $post посредством вызова $works->the_post().
Использование wp_reset_postdata() восстановит глобальные переменные основного цикла и carbon_the_post_meta будет возвращать правильный результат.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
обычный текст при выделении и нажатии кнопки - выводится, а вот тот, который подгружается в iframe - нет, как это поправить?
Здравствуйте добрые люди, не судите строго за детский вопрос, я только учусьВ PHP есть функция strip_tags, которая удаляет html теги в строке