Как написать условие в meta-тегах

Нужно задать проверку в description – если заполнено поле с ключем "seo-desc", то выводить его значение.
Если поле не заполнено, то показывать "single_cat_title();"

Вроде написала правильно, но почему то условие не срабатывает.

<meta name="description" content="<?php if ( (is_home()) || (is_front_page()) ) {
    bloginfo('description');
} elseif(is_single())  {       
    if($key !== '') { 
       $key="seo-desc"; echo get_post_meta($post->ID, $key, true); 
    } else {
        single_cat_title(); 
    }
} else {
    bloginfo('description');
}
?>" />

Подскажите, кто видит, в чем тут ошибка?

if($key !== ”) – где и как до этой строки определяется $key?

Видимо, Вы хотели написать что-то типа

if ( $desc = get_post_meta($post->ID, 'seo-desc', true) )
  echo $desc;
else
 single_cat_title();

И насчет правильности использования single_cat_title() на сингулярной странице есть сомнения.

И насчет правильности использования single_cat_title() на сингулярной странице есть сомнения.

Юрий Дмитриевич, вы, как всегда правы.
Поменяла на the_title();

if($key !== '') - где и как до этой строки определяется $key?

Самое смешное, что мой пример тоже работал, т.е. выводил значение ключа seo-desc.
Но не работало условие.

С вашими правками заработало и оно. Спасибо!

Самое смешное, что мой пример тоже работал, т.е. выводил значение ключа seo-desc.
Но не работало условие.

В php есть строгие равенства (неравенства) и нестрогие. Строгие === и !== подразумевают не только равенство значений, но и типов. Нестрогие == и != перед проверкой преобразуют значения к одному типу. Не инициализированная переменная $key строго не равно пустой строке. Вот оно и выводило, но не работало.

Anonymous
Отправить
Ответ на: