Как правильно вывести строку через условные теги WordPress и условные операторы?

Пытаюсь вывести для разметки OpenGraph строки.


Учитывая:
  • главную страницу
  • 404-ю
  • страницу поиска

Конструкция мета тега такая сейчас:

<meta property="og:description" content="<?php 

if ( is_front_page() ) {
    echo 'Главная страница';
} 

if ( is_404() ) {
    echo 'Ошибка 404';
} 

if ( is_search() ) {
    echo 'Странца поиска';
} 

else {
    echo the_title();
} ?>

">

Проблема следующая :) На 404-й, странице поиска и остальных страницах всё показывается верно. А вот на главной выводится не то, что нужно.

На главной показывается мета тег, который содержит и "Главная страница", как надо, и название страницы:

<meta property="og:description" content="Главная страницаКомпания по производству теплоизоляции">

Важно - главная страница сайта у меня статическая (т.е. не блог на главной, а другая страница, выбранная в админке).

Решение проблемы. Возможно кому-то понадобится.

В файл functions.php добавить:

function og_get_description() {
    switch (true) {
        case is_front_page():
            return 'Главная страница';
        case is_404():
            return 'Ошибка 404';
        case is_search():
            return 'Страница поиска';
        default:
            return get_the_title();
    }
}

В header.php добавить вывод:

<meta property="og:description" content="<?php echo og_get_description(); ?>">

Также есть подобное для og:url

В файл functions.php добавить:

function get_cururl() {
    return ((!empty($_SERVER['HTTPS'])) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
}

В header.php добавить вывод:

<meta property="og:url" content="<?php echo get_cururl(); ?>">

Ответы (1 шт):

Автор решения: SeVlad

Неправильный cинтаксис условий .

Если делать в таком стиле, то как-то так:

<?php
if ( is_front_page() ) {
    $ogdesc =  'Главная страница';
} 

elseif ( is_404() ) {
    $ogdesc =  'Ошибка 404';
} 

elseif ( is_search() ) {
    $ogdesc =  'Страница поиска';
} 

else {
    $ogdesc =  get_the_title();
}
?>
<meta property="og:description" content="<?php echo $ogdesc; ?>">
→ Ссылка