У меня есть галерея на странице со списком, которую я хочу показывать только зарегистрированным пользователям. Я пытаюсь использовать функцию is_user_logged_in()
но я не могу понять, как именно это реализовать.
Я новичок, пытающийся больше работать с файлами PHP, а не с плагинами / шорткодами.
Это код, как бы я добавил is_user_logged_in()
то есть галерея отображается только для зарегистрированных пользователей ?:
<?php
//get the listing gallery
$photos = listable_get_listing_gallery_ids();
if ( ! empty( $photos ) ) : ?>
<div class="entry-featured-carousel">
<?php if ( count( $photos ) == 1 ):
$myphoto = $photos[0];
$image = wp_get_attachment_image_src( $myphoto, 'listable-featured-image' );
$src = $image[0]; ?>
<div class="entry-cover-image" style="background-image: url(<?php echo listable_get_inline_background_image( $src ); ?>);"></div>
<?php else: ?>
<div class="entry-featured-gallery">
<?php foreach ( $photos as $key => $photo_id ):
$src = wp_get_attachment_image_src( $photo_id, 'listable-carousel-image' ); ?>
<img class="entry-featured-image" src="<?php echo $src[0]; ?>" itemprop="image" />
<?php endforeach; ?>
</div>
<?php endif; ?>
</div>
<?php endif; ?>
Ну, так как вы знаете, что вы хотите найти фотографии только когда пользователь вошел в систему, я бы использовал Троичные операторы. Который выглядит так:
$var = test ? true : false;
Для вашего кода выше я бы реализовал это так:
$photos = is_user_logged_in() ? listable_get_listing_gallery_ids(): '';
Таким образом, проверка на is_user_logged_in
завершен, если ответ верен, процесс listable_get_listing_gallery_ids
выполнен. Если процесс is_user_logged_in
возвращает ложь, $photos
устанавливается на пустую строку.
Это экономит ваше вычислительное время, чтобы не тратить усилия на запросы к базе данных, когда вы планируете игнорировать информацию. Ссылка, которую я привел выше, фактически использует пример со сценарием $user->is_logged_in()
Функция is_user_logged_in () возвращает логическое значение (true или false): см. документацию WordPress Developer здесь: https://developer.wordpress.org/reference/functions/is_user_logged_in/
В вашем случае вы можете добавить логическое значение рядом с проверкой логики пустых фотографий.
if( ! empty( $photos ) && is_user_logged_in() )