Ограничить PHP-код для зарегистрированных пользователей — WordPress

У меня есть галерея на странице со списком, которую я хочу показывать только зарегистрированным пользователям. Я пытаюсь использовать функцию 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; ?>

0

Решение

Ну, так как вы знаете, что вы хотите найти фотографии только когда пользователь вошел в систему, я бы использовал Троичные операторы. Который выглядит так:

$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()

3

Другие решения

Функция 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() )
0

По вопросам рекламы [email protected]