Как в цикле вставить условие?
Как правильно вставить условие в цикл
есть вывод постов, хочу незарегистрированным подставить вместо thumbnail другую картинку
по условию, только не могу понять как его правильно воткнуть в цикл
вот условие
<?php if ( !is_user_logged_in() : ?> <div class="img"><img src="<?php echo get_template_directory_uri(); ?>/img/th.png"/></div> <?php else : ?> <div class="img"><?php the_post_thumbnail(); ?></div> <?php endif; ?> |
<?php if ( !is_user_logged_in() : ?> <div class="img"><img src="<?php echo get_template_directory_uri(); ?>/img/th.png"/></div> <?php else : ?> <div class="img"><?php the_post_thumbnail(); ?></div> <?php endif; ?>
вот цикл
<div class="postlist"> <div class="container"> <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <div class="post"> <div class="img"><?php the_post_thumbnail(); ?></div> <div class="title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></div> <div class="excerpt"><?php the_excerpt(); ?></div> <div class="read"> <a href="<?php the_permalink(); ?>"> <?php if (ICL_LANGUAGE_CODE == 'en') { echo "readmore..."; } elseif (ICL_LANGUAGE_CODE == 'uk') { echo "детальіше..."; } ?> </a> </div> </div> <?php endwhile; else: ?> <p><?php esc_html_e( 'Sorry, no posts matched your criteria.' ); ?></p> <?php endif; ?> </div> </div> |
<div class="postlist"> <div class="container"> <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <div class="post"> <div class="img"><?php the_post_thumbnail(); ?></div> <div class="title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></div> <div class="excerpt"><?php the_excerpt(); ?></div> <div class="read"> <a href="<?php the_permalink(); ?>"> <?php if (ICL_LANGUAGE_CODE == 'en') { echo "readmore..."; } elseif (ICL_LANGUAGE_CODE == 'uk') { echo "детальіше..."; } ?> </a> </div> </div> <?php endwhile; else: ?> <p><?php esc_html_e( 'Sorry, no posts matched your criteria.' ); ?></p> <?php endif; ?> </div> </div>
как не пытаюсь подставить, лезут ошибки
Спасибо
Дополнительно:
У вас скобки не хватает, включите отображение ошибок в браузере
<?php if ( ! is_user_logged_in() ) : ?>
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Ошибка у вас в самом условии: пропущена закрывающая скобка после
is_user_logged_in(). Должно бытьif ( ! is_user_logged_in() ) :, а неif ( !is_user_logged_in() :.Вставлять условие нужно прямо в том месте цикла, где сейчас выводится миниатюра:
<div class="post"> <div class="img"> <?php if ( ! is_user_logged_in() ) : ?> <img src="<?php echo esc_url(get_template_directory_uri() . '/img/th.png'); ?>" alt=""> <?php else : ?> <?php the_post_thumbnail(); ?> <?php endif; ?> </div> <div class="title"> <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> </div> <div class="excerpt"><?php the_excerpt(); ?></div> </div>
Если это дочерняя тема, для картинки лучше использовать
get_stylesheet_directory_uri(), чтобы путь брался из child theme:echo esc_url(get_stylesheet_directory_uri() . '/img/th.png');
Логика простая: цикл
while ( have_posts() ) : the_post();оставляете как есть, а внутри карточки заменяете только блок thumbnail. Не нужно открывать новый цикл или закрыватьendifпослеendwhile.