Форум по WordPress

Вопросы и ответы по WordPress

Вы не зашли.

  • Форум
  •  » Wordpress
  •  » проверка на существование custom fields + php

#1 08-12-2007 23:53:27

sonika
Клуб WordPress
Откуда: Сочи
Зарегистрирован: 28-07-2006
Сообщений: 3836
Вебсайт

проверка на существование custom fields + php

Проблема вот в чем:
хочу в sidebar.php при просмотре  поста/страницы выводить галерею nextgen Gallery (т.е. ВНЕ лупа) так:
<?php echo nggShowGallery('1'); ?>
где соответственно 1 — id галереи

Если вставлять <?php echo nggShowGallery('1'); ?> в поле custom fields, то php «не работает», на страницу ничего не выводится sad

Тогда можно в  custom field (key=gallery) вставлять только id галереи, логично?
Но тут тоже скорее всего засада: если ключ gallery не существует для конкр. поста/страницы, то плагин nextgen Gallery я думаю сильно озадачится по поводу отсутствия  id галереи в <?php echo nggShowGallery('id'); ?> или нет?

Т.е. надо бы сначала проверить на существование произв. поля gallery для данного поста, а потом галерею выводить.
Вот с составлением этого условия у меня проблемы sad

не могу правильно скрестить

Код:

<?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 нет
то ничего не выводим


А может чего попроще можно придумать?


Едет вебмастер в поезде и слышит: <td></td> … <td></td> … <td></td>
шаблоны Темы

Неактивен

 

#2 09-12-2007 09:42:00

MAX
Клуб WordPress
Зарегистрирован: 17-05-2006
Сообщений: 1651
Вебсайт

Re: проверка на существование custom fields + php

Если ты делаешь вне цикла, то $post может быть не определена. Поэтому нужно использовать немного другой код.

Получаем номер записи, если это is_single или is_page

Код:

$myid = $wp_query->post->ID

Получаем массив всех мета указанной записи:

Код:

$my_meta = get_post_custom_values( $meta_key, $myid );

- где $meta_key - нужное поле.

Дальше смотрим значение поля как массив и делаем с ним что нужно. smile

Неактивен

 

#3 10-12-2007 14:57:45

sonika
Клуб WordPress
Откуда: Сочи
Зарегистрирован: 28-07-2006
Сообщений: 3836
Вебсайт

Re: проверка на существование custom fields + php

MAX написал:

Дальше смотрим значение поля как массив и делаем с ним что нужно. smile

*голосом Петьки* «А я даже представить не могу, как он выглядит, этот квадратный трехчлен!»

Товарищи, ну помогите с условием?


Едет вебмастер в поезде и слышит: <td></td> … <td></td> … <td></td>
шаблоны Темы

Неактивен

 

#4 10-12-2007 21:17:55

MAX
Клуб WordPress
Зарегистрирован: 17-05-2006
Сообщений: 1651
Вебсайт

Re: проверка на существование custom fields + php

Если вне цикла, но в 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 );

Просто если этого не делать, то можно обзывать галереи не по номеру, а как-то произвольно. (Просто я не знаю, допускает ли это плагин.)

Неактивен

 

#5 11-12-2007 10:03:49

sonika
Клуб WordPress
Откуда: Сочи
Зарегистрирован: 28-07-2006
Сообщений: 3836
Вебсайт

Re: проверка на существование custom fields + php

ААА! Спасибо!  Работает! big_smile

Что получилось:

Код:

 <?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 галереи, так что проверка кстати!


Едет вебмастер в поезде и слышит: <td></td> … <td></td> … <td></td>
шаблоны Темы

Неактивен

 

#6 09-12-2008 09:46:09

*Zю
Интересующийся
Зарегистрирован: 29-11-2008
Сообщений: 24

Re: проверка на существование custom fields + php

Подскажите, пожалуйста, как подобным образом вывести singlepic? В custom field можно указывать только id. ООчень надеюсь на вашу помощь)))

Неактивен

 

#7 09-12-2008 10:55:31

*Zю
Интересующийся
Зарегистрирован: 29-11-2008
Сообщений: 24

Re: проверка на существование custom fields + php

Ой, рано спросила, разобралась)))) Спасибо)))
<?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="");
}
?>
Правильно?

Неактивен

 

#8 09-12-2008 11:03:34

Ю.Б.
Клуб WordPress
Откуда: Харьков
Зарегистрирован: 05-08-2007
Сообщений: 6600
Вебсайт

Re: проверка на существование custom fields + php

Не совсем. Конструкция $mode="" в декларации функции означает, что 3-й параметр будет присвоен внутренней переменной $mode, а если он не будет указан, то будет присвоено значение "пустая строка" (т.н. дефолтное значение). То же относится и к $float. Если дефолтные значения устаривают, то их можно просто пропустить. Итого должно сработать echo nggSinglePicture($val_val, 250, 250); Хотя ХЗ что она там возвращает, смотреть надо smile


Есть ли смысл просить инструкцию по регулировке карбюратора, если не знаешь, в каком из багажников находится двигатель?

Неактивен

 

#9 09-12-2008 11:17:19

*Zю
Интересующийся
Зарегистрирован: 29-11-2008
Сообщений: 24

Re: проверка на существование custom fields + php

Одинаково работает и так: echo nggSinglePicture($val_val, 250, 250, $mode="",$float=""); и так: echo nggSinglePicture($val_val, 250, 250); smile оставлю ваш вариант))) Спасибо!

Неактивен

 

#10 09-12-2008 11:22:08

Ю.Б.
Клуб WordPress
Откуда: Харьков
Зарегистрирован: 05-08-2007
Сообщений: 6600
Вебсайт

Re: проверка на существование custom fields + php

Конечно, одинаково. Только $mode="" и $float="" порождают две (если не четыре) строковых переменных, которые мало того, что жрут память (не много, но все-таки), так еще и теоретически могут перебить значение нужной переменной. Так что это больше вопрос принципа чем работоспособности.


Есть ли смысл просить инструкцию по регулировке карбюратора, если не знаешь, в каком из багажников находится двигатель?

Неактивен

 
  • Форум
  •  » Wordpress
  •  » проверка на существование custom fields + php

Board footer

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson

Украина онлайн