@biffick
Вопрошатель

Как правильно вывести строку через условные теги 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="Главная страницаКомпания по производству теплоизоляции">


Важно - главная страница сайта у меня статическая (т.е. не блог на главной, а другая страница, выбранная в админке).
Где я неправильно сделал?
  • Вопрос задан
  • 90 просмотров
Решения вопроса 1
Denkuwus
@Denkuwus
15 y.o
Похоже, вы хотите отобразить строку «Главная страница» для главной страницы и заголовок страницы для всех остальных страниц.

Одна проблема с вашим кодом заключается в том, что оператор else не связан ни с одним из операторов if. Это означает, что он всегда будет выполняться, независимо от того, верны ли какие-либо из предыдущих операторов if.

Чтобы исправить это, вы можете использовать оператор elseif вместо оператора else. Оператор elseif будет выполнен только в том случае, если предыдущий оператор if ложен, а условие в операторе elseif истинно.

Вот как вы можете изменить свой код для достижения желаемого поведения:

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

<?php

if ( is_front_page() ) {
    echo 'Main page';
} elseif ( is_404() ) {
    echo 'Error 404';
} elseif ( is_search() ) {
    echo 'Search page';
} else {
    echo the_title();
} ?>

">


Это должно отображать правильную строку для каждой страницы.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
artzolin
@artzolin Куратор тега WordPress
php, WordPress разработка сайтов artzolin.ru
Забирайте проверки по всем условным тегам

$separator = '|';

// Title prefixes.
if ( is_post_type_archive() ) {
	$title[] = _x( 'Archives:', 'post type archive title prefix', 'wpgen' );
} elseif ( is_category() ) {
	$title[] = _x( 'Category:', 'category archive title prefix', 'wpgen' );
} elseif ( is_tag() ) {
	$title[] = _x( 'Tag:', 'tag archive title prefix', 'wpgen' );
} elseif ( is_author() ) {
	$title[] = _x( 'Author:', 'author archive title prefix', 'wpgen' );
} elseif ( is_date() ) {
	if ( is_year() ) {
		$title[] = _x( 'Year:', 'date archive title prefix', 'wpgen' );
	} elseif ( is_month() ) {
		$title[] = _x( 'Month:', 'date archive title prefix', 'wpgen' );
	} elseif ( is_day() ) {
		$title[] = _x( 'Day:', 'date archive title prefix', 'wpgen' );
	}
} elseif ( is_tax( 'post_format' ) ) {
	if ( is_tax( 'post_format', 'post-format-aside' ) ) {
		$title[] = _x( 'Asides', 'post format archive title', 'wpgen' );
	} elseif ( is_tax( 'post_format', 'post-format-gallery' ) ) {
		$title[] = _x( 'Galleries', 'post format archive title', 'wpgen' );
	} elseif ( is_tax( 'post_format', 'post-format-image' ) ) {
		$title[] = _x( 'Images', 'post format archive title', 'wpgen' );
	} elseif ( is_tax( 'post_format', 'post-format-video' ) ) {
		$title[] = _x( 'Videos', 'post format archive title', 'wpgen' );
	} elseif ( is_tax( 'post_format', 'post-format-quote' ) ) {
		$title[] = _x( 'Quotes', 'post format archive title', 'wpgen' );
	} elseif ( is_tax( 'post_format', 'post-format-link' ) ) {
		$title[] = _x( 'Links', 'post format archive title', 'wpgen' );
	} elseif ( is_tax( 'post_format', 'post-format-status' ) ) {
		$title[] = _x( 'Statuses', 'post format archive title', 'wpgen' );
	} elseif ( is_tax( 'post_format', 'post-format-audio' ) ) {
		$title[] = _x( 'Audio', 'post format archive title', 'wpgen' );
	} elseif ( is_tax( 'post_format', 'post-format-chat' ) ) {
		$title[] = _x( 'Chats', 'post format archive title', 'wpgen' );
	}
}

// Main title.
if ( is_single() || is_page() ) {
	$title[] = get_the_title();
} elseif ( is_404() ) {
	$title[] = __( 'Page not found', 'wpgen' );
} elseif ( is_search() ) {
	$title[] = sprintf( __( 'Search Results for &#8220;%s&#8221;', 'wpgen' ), get_search_query( false ) );
} elseif ( is_post_type_archive() ) {
	$title[] = get_queried_object()->label;
} elseif ( is_author() ) {
	$title[] = get_queried_object()->display_name ?? '';
} elseif ( is_date() ) {
	if ( is_year() ) {
		$title[]  = get_the_date( 'Y' );
	} elseif ( is_month() ) {
		$title[]  = get_the_date( 'F Y' );
	} elseif ( is_day() ) {
		$title[]  = get_the_date( 'F j, Y' );
	}
} elseif ( is_archive() ) {
	$title[] = get_queried_object()->name;
}

// Add site info in the title.
if ( ! isset( $title ) ) {
	$title[] = get_bloginfo( 'name' );
	$title[] = $separator;
	$title[] = get_bloginfo( 'description' );
} else {

	if ( is_paged() ) {
		$title[] = $separator;
		$title[] = __( 'Page', 'wpgen' ) . ' ' . $paged;
	}

	$title[] = $separator;
	$title[] = get_bloginfo( 'name' );
}

$title = implode( ' ', $title );
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы