Elliot

Ошибки в Гугл консоли, не могу решить ошибку с хлебными крошками

19 posts in this topic

Здравствуйте друзья!

Зашел в сеарч консоль и офигел, 555 страниц с ошибками, и подозреваю что это только начало. Как всегда гугл решил подкорректировать свои алгоритмы...

Все ошибки с микроразметкой решил, кроме хлебных крошек.

Ошибка говорит о том, что последний элемент в крошках, категория товара или сам товар не имеет id, короче, последний элемент не имеет ссылки.

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

Включил хлебные крошки в плагине Yoast SEO Premium 10.0.1 но ошибок в микроразметке вылезло еще больше - отключил.

Помогите пожалуйста решить проблему, как сделать последний элемент с ссылкой?

 

Вот шаблон вывода хлебных крошек

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}
$delimiter = '';

if ( ! empty( $breadcrumb ) ) {

	echo $wrap_before;

	$count = count($breadcrumb);

	$i = 0;
	$class = '';

	foreach ( $breadcrumb as $key => $crumb ) {

		$i++;

		if( $i == $count - 1 ) {
			$class = 'breadcrumb-link-last';
		}

		echo $before;

		if ( ! empty( $crumb[1] ) && sizeof( $breadcrumb ) !== $key + 1 ) {
			echo '<a href="' . esc_url( $crumb[1] ) . '" class="breadcrumb-link ' . $class . '">' . esc_html( $crumb[0] ) . '</a>';
		} else {
			echo '<span class="breadcrumb-last"> ';
			echo esc_html( $crumb[0] );
			echo '</span>';
		}

		echo $after;

		if ( sizeof( $breadcrumb ) !== $key + 1 ) {
			echo $delimiter;
		}

	}

	echo $wrap_after;

}

 

С меня спасибки друзья ;)

Share this post


Link to post
Share on other sites

Так-то последний элемент крошек/текущую страницу и нужно делать без ссылки. Если ошибка в новом вм, то откройте любую страницу с подобной ошибкой и найдите кнопку проверить на сайте. В новом вм глюков пока много и данные там все так же долго обновляются, примерно раз в неделю

Share this post


Link to post
Share on other sites
1 hour ago, petroff said:

Так-то последний элемент крошек/текущую страницу и нужно делать без ссылки. Если ошибка в новом вм, то откройте любую страницу с подобной ошибкой и найдите кнопку проверить на сайте. В новом вм глюков пока много и данные там все так же долго обновляются, примерно раз в неделю

Очистил кэш.

Зашел на Google testing tool проверяю.

Все элементы имеют name - это имя элемента (категория) и ID - это ссылка на эту категорию.

А вот последний элемент имеет name а вот ID отсутствует и ниже ошибка 

Для item.id указан недопустимый URL.

Я так понимаю, отсутствует ссылка и из за этого ошибка.

Share this post


Link to post
Share on other sites
14 минуты назад, Elliot сказал:

Очистил кэш.

Зашел на Google testing tool проверяю.

Все элементы имеют name - это имя элемента (категория) и ID - это ссылка на эту категорию.

А вот последний элемент имеет name а вот ID отсутствует и ниже ошибка 

Для item.id указан недопустимый URL.

Я так понимаю, отсутствует ссылка и из за этого ошибка.

Стрницу сайта покажите, так проще будет

Elliot likes this

Share this post


Link to post
Share on other sites
2 minutes ago, petroff said:

Стрницу сайта покажите, так проще будет

Вот ссылка на товар 

Share this post


Link to post
Share on other sites

Код выше отвечает за вывод хлебных крошек. У Вас проблема с микроразметкой json-ld, к которой вышеуказанный код скорее всего отношения не имеет. Ищите как формируется эта микроразметка. Может каким плагином добавляется. Clearfy? И да, гугл ругается на отсутствие урла текущей страницы 

Elliot likes this

Share this post


Link to post
Share on other sites

Clearfy установленный, но там пункты Отключить ссылки JSON-LD и Отключить структурирование данных не актывны, или нужно активировать?

Share this post


Link to post
Share on other sites

Вроде решил проблему.

Нашел

if ( ! empty( $crumb[1] ) && count( $crumbs ) !== $key + 1 ) {
			$markup['itemListElement'][ $key ]['item'] += array( '@id' => $crumb[1] ); 
			}

и заменил на

if ( ! empty( $crumb[1] ) && count( $crumbs ) !== $key + 1 ) {
			$markup['itemListElement'][ $key ]['item'] += array( '@id' => $crumb[1] ); } else {
				$markup['itemListElement'][ $key ]['item'] += array( '@id' => $crumb[1] );
			}

На тесте, хлебные крошки отображаются вроде бы верно.

Share this post


Link to post
Share on other sites

Нет, всё не так. Каша получилась. Вчера все было по типам, а сейчас все размеченные элементы в хлебных крошках. Вчера вроде еще рейтинг был размечен, сегодня пропал. Возвращайте все как было, скачивайте шаблон с плагинами на комп и нотпадом ищите по " <script type="application/ld+json">"

Share this post


Link to post
Share on other sites
6 minutes ago, petroff said:

Нет, всё не так. Каша получилась. Вчера все было по типам, а сейчас все размеченные элементы в хлебных крошках. Вчера вроде еще рейтинг был размечен, сегодня пропал. Возвращайте все как было, скачивайте шаблон с плагинами на комп и нотпадом ищите по " <script type="application/ld+json">"

Рейтинг я удалил, это был отзыв о товаре, сейчас добавил, и он отображается в хлебных крошках.

Quote

а сейчас все размеченные элементы в хлебных крошках

Я так понимаю, что вчера было размечено типа Product, Review, BreadcrumbList?

Сейчас только Product нет, я думал если нет ошибок, он не отображается...

 

Share this post


Link to post
Share on other sites
6 минут назад, Elliot сказал:

что вчера было размечено типа Product, Review, BreadcrumbList

Это все должно быть размечено, как отдельные элементы. Сейчас как-то все в хлебных крошках. Может где скобка или кавычки пропущены, х.з.

Elliot likes this

Share this post


Link to post
Share on other sites
1 minute ago, petroff said:

Это все должно быть размечено, как отдельные элементы. Сейчас как-то все в хлебных крошках. Может где скобка или кавычки пропущены, х.з.

Пока вернул как было.

Я нашел этот <script type="application/ld+json"> эта строка находится в этом же файле где я делал изменения class-wc-structured-data.php

Вот код отвечающий за вывод разметки хлебных крошек

	public function generate_breadcrumblist_data( $breadcrumbs ) {
		$crumbs = $breadcrumbs->get_breadcrumb();

		if ( empty( $crumbs ) || ! is_array( $crumbs ) ) {
			return;
		}

		$markup                    = array();
		$markup['@type']           = 'BreadcrumbList';
		$markup['itemListElement'] = array();

		foreach ( $crumbs as $key => $crumb ) {
			$markup['itemListElement'][ $key ] = array(
				'@type'    => 'ListItem',
				'position' => $key + 1,
				'item'     => array(
					'name' => $crumb[0],
				),
			);

			if ( ! empty( $crumb[1] ) && count( $crumbs ) !== $key + 1 ) {
				$markup['itemListElement'][ $key ]['item'] += array( '@id' => $crumb[1] );
			}
		}

		$this->set_data( apply_filters( 'woocommerce_structured_data_breadcrumblist', $markup, $breadcrumbs ) );
	}

 

Share this post


Link to post
Share on other sites

Проблема решается обновлением Woocommerce, у меня была версия 3.4.3 но мне обновлять не вариант, не знаю почему, но после полного обновления, магазин работает как эталонный тормоз, особенно при переходе между категориями.

Я взял с папки woocommerce 3.5.7 файлы class-wc-structured-data.php и wc-formatting-functions.php и заменил их в старой версии.

В итоге, ошибки пропали и теперь структурированные данные отображаются правильно и по типам, спасибо petroff за то что ткнул носом)

Я не знаю, к каким изменениям и последствиям приведет замена wc-formatting-functions.php - буду проверять.

Забыл упомянуть, предупреждение о недостающем aggregateRating можно игнорировать, это рейтинг статьи или товара, и это предупреждение пропадает если есть хотя бы один голос, или отзыв. Хотя глупо, почему бы не показывать 0...

Надеюсь эта информация кому-то пригодится ;)

A1exandr and petroff like this

Share this post


Link to post
Share on other sites

У меня к статьям прикручен рейтинг (звездочки) плагином на ВордПресс - похожая проблема: если нет оценок, то ошибка

Заполните поле ratingValue.
Укажите свойство ratingCount или reviewCount.

 

вэтом куске кода

<!-- kksr-stars -->

 

                <div class="kksr-legend"><div itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating">    <div itemprop="name" class="kksr-title">Тайтл статьи</div>Оцените и поделитесь с друзьями!    <meta itemprop="bestRating" content="5"/>    <meta itemprop="worstRating" content="1"/>    <div itemprop="itemReviewed" itemscope itemtype="http://schema.org/CreativeWork">    <!-- Product properties -->    </div></div></div>
                <!-- kksr-legend -->
            </div>
            <!-- kk-star-ratings -->

Будет свободное время - потыкаю на каждой записи, в сниппетах Гугл хорошо смотрится.

Elliot likes this

Share this post


Link to post
Share on other sites
5 minutes ago, hip12 said:

У меня к статьям прикручен рейтинг (звездочки) плагином на ВордПресс - похожая проблема: если нет оценок, то ошибка

Заполните поле ratingValue.
Укажите свойство ratingCount или reviewCount.

 

вэтом куске кода

<!-- kksr-stars -->

 

                <div class="kksr-legend"><div itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating">    <div itemprop="name" class="kksr-title">Тайтл статьи</div>Оцените и поделитесь с друзьями!    <meta itemprop="bestRating" content="5"/>    <meta itemprop="worstRating" content="1"/>    <div itemprop="itemReviewed" itemscope itemtype="http://schema.org/CreativeWork">    <!-- Product properties -->    </div></div></div>
                <!-- kksr-legend -->
            </div>
            <!-- kk-star-ratings -->

Будет свободное время - потыкаю на каждой записи, в сниппетах Гугл хорошо смотрится.

Потыкать конечно хорошо, но как автоматом прикрутить этот рейтинг к каждой записи, чисто для выдачи?)

Не особо интенсивно искал решение, но судя по постам на форумах, люди интенсивно прикручивают этот фейковый рейтинг чисто для выдачи, скрипты используют для случайной генерации рейтинга под каждую статью.

Если найду - скину.

 

Вопрос, а как посмотреть, как в выдаче будет смотреться сниппет?

Share this post


Link to post
Share on other sites

Я случайно увидел, когда проверял один запрос в Гугле и на втором месте была моя конкретная страница со звездочками и рейтингом. Причем сначала 5 звездочек, а за ними Рейтинг: 4,8 - ‎22 голоса. Так что случайная генерация рейтинга не пойдет - нужно только 5 B).

 

Share this post


Link to post
Share on other sites
4 minutes ago, hip12 said:

Я случайно увидел, когда проверял один запрос в Гугле и на втором месте была моя конкретная страница со звездочками и рейтингом. Причем сначала 5 звездочек, а за ними Рейтинг: 4,8 - ‎22 голоса. Так что случайная генерация рейтинга не пойдет - нужно только 5 B).

 

Хорошо, а если в коде прописать 5,00 на все записи, я так понимаю Рейтинг: 4,8 - ‎22 голоса не будет выводится, так как 5 звезд реальны только в микроразметке.

И не попалит ли гугл такую накрутку ради сниппета?)

Share this post


Link to post
Share on other sites

Я так себе представляю - в коде не прописывать, буду с домашенго компа кликать на 5, а с рабочего на 4, получу 2 голоса и рейтинг 4,5. У меня половине статей рейтинг и так уже пользователи понаставили. Ну и не за один день все это делать.

Elliot likes this

Share this post


Link to post
Share on other sites
23 minutes ago, hip12 said:

Я так себе представляю - в коде не прописывать, буду с домашенго компа кликать на 5, а с рабочего на 4, получу 2 голоса и рейтинг 4,5. У меня половине статей рейтинг и так уже пользователи понаставили. Ну и не за один день все это делать.

А я буду думать как обойтись без пользовательского рейтинга в сниппете, но чтобы он там был)

hip12 likes this

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.