Вопросы и ответы по WordPress
Вы не зашли.
Проблема вот в чем:
хочу в sidebar.php при просмотре поста/страницы выводить галерею nextgen Gallery (т.е. ВНЕ лупа) так:
<?php echo nggShowGallery('1'); ?>
где соответственно 1 — id галереи
Если вставлять <?php echo nggShowGallery('1'); ?> в поле custom fields, то php «не работает», на страницу ничего не выводится ![]()
Тогда можно в custom field (key=gallery) вставлять только id галереи, логично?
Но тут тоже скорее всего засада: если ключ gallery не существует для конкр. поста/страницы, то плагин nextgen Gallery я думаю сильно озадачится по поводу отсутствия id галереи в <?php echo nggShowGallery('id'); ?> или нет?
Т.е. надо бы сначала проверить на существование произв. поля gallery для данного поста, а потом галерею выводить.
Вот с составлением этого условия у меня проблемы ![]()
не могу правильно скрестить
<?php echo nggShowGallery('gallery'); ?>и
<?php if (is_single() || is_page() ) {
$key="gallery";
echo get_post_meta($post->ID, $key, true);
} ?>Помогите составить такое условие:
имеем: custom field = gallery
если ключ gallery в посте/странице заполнено,
то <?php echo nggShowGallery('сюда выводим ключ gallery'); ?>
если ключа gallery нет
то ничего не выводим
А может чего попроще можно придумать?
Неактивен
Если ты делаешь вне цикла, то $post может быть не определена. Поэтому нужно использовать немного другой код.
Получаем номер записи, если это is_single или is_page
$myid = $wp_query->post->ID
Получаем массив всех мета указанной записи:
$my_meta = get_post_custom_values( $meta_key, $myid );
- где $meta_key - нужное поле.
Дальше смотрим значение поля как массив и делаем с ним что нужно. ![]()
Неактивен
MAX написал:
Дальше смотрим значение поля как массив и делаем с ним что нужно.
*голосом Петьки* «А я даже представить не могу, как он выглядит, этот квадратный трехчлен!»
Товарищи, ну помогите с условием?
Неактивен
Если вне цикла, но в single или page, будет работать такой код:
<?php
$myid = $wp_query->post->ID;
# вывод определенного поля - с ключом gallery
$my_meta = get_post_custom_values( 'gallery', $myid );
if ( $my_meta) { // есть для этой записи такая мета
// выводим
echo '<strong>Галлерея</strong>: '; // заголовок
foreach ( $my_meta as $val_key => $val_val ) echo $val_val; // вывод всех значений этой мета
}
?>Если у тебя используется просто ключ gallery - где указывается номер, то цикл foreach вернет единственную переменную $val_val, котрая будет содержать номер нужной галереи.
То есть после цикла нужно просто дописать
...
$val_val = (int) trim( $val_val );Просто если этого не делать, то можно обзывать галереи не по номеру, а как-то произвольно. (Просто я не знаю, допускает ли это плагин.)
Неактивен
ААА! Спасибо! Работает! ![]()
Что получилось:
<?php
$myid = $wp_query->post->ID;
$my_meta = get_post_custom_values( 'gallery', $myid );
if ( $my_meta) {
echo '<strong>Галерея</strong>: ';
foreach ( $my_meta as $val_key => $val_val )
$val_val = (int) trim( $val_val );
echo nggShowGallery($val_val);
}
?>Плагин next gallery допускает только указание id галереи, так что проверка кстати!
Неактивен
Подскажите, пожалуйста, как подобным образом вывести singlepic? В custom field можно указывать только id. ООчень надеюсь на вашу помощь)))
Неактивен
Ой, рано спросила, разобралась)))) Спасибо)))
<?php
$myid = $wp_query->post->ID;
$my_meta = get_post_custom_values( 'image-id', $myid );
if ( $my_meta) {
foreach ( $my_meta as $val_key => $val_val )
$val_val = (int) trim( $val_val );
echo nggSinglePicture($val_val, 250, 250, $mode="",$float="");
}
?>
Правильно?
Неактивен
Не совсем. Конструкция $mode="" в декларации функции означает, что 3-й параметр будет присвоен внутренней переменной $mode, а если он не будет указан, то будет присвоено значение "пустая строка" (т.н. дефолтное значение). То же относится и к $float. Если дефолтные значения устаривают, то их можно просто пропустить. Итого должно сработать echo nggSinglePicture($val_val, 250, 250); Хотя ХЗ что она там возвращает, смотреть надо ![]()
Неактивен
Одинаково работает и так: echo nggSinglePicture($val_val, 250, 250, $mode="",$float=""); и так: echo nggSinglePicture($val_val, 250, 250);
оставлю ваш вариант))) Спасибо!
Неактивен
Конечно, одинаково. Только $mode="" и $float="" порождают две (если не четыре) строковых переменных, которые мало того, что жрут память (не много, но все-таки), так еще и теоретически могут перебить значение нужной переменной. Так что это больше вопрос принципа чем работоспособности.
Неактивен