Скрыть код от скрипта «ВКонтакте»

12
K
На сайте с 10.01.2015
Offline
110
812

При добавлении ссылок в соцсеть «ВКонтакте» к ним автоматически подставляется неправильная миниатюра.

Методом тыка я понял, что виной всему плагин YARP в WordPress. Скрипт соцсети подцепляет миниатюры из похожих записей, которые находятся внизу статьи. Если этот код убрать (их вывод), то проблема решается.

Вот как я вывожу миниатюры:

<?php the_post_thumbnail(array(300,200)); ?>

Есть как-то способ сделать так, чтобы они были всем видны, но при этом не считались изображениями для скриптов?

Aisamiery
На сайте с 12.04.2015
Offline
234
#1
Разработка проектов на Symfony, Laravel, 1C-Bitrix, UMI.CMS, OctoberCMS
K
На сайте с 10.01.2015
Offline
110
#2

В том-то и дело, что это настроено. По каким-то причинам скрипт предпочитает миниатюры именно от похожих записей.

MrDesigner
На сайте с 31.01.2008
Offline
159
#3

Чтобы не лезть в код темы, плагин Yoast SEO (курите настройки и мануалы) позволяет добавить метаданные OpenGraph в раздел <head> вашего сайта.

Facebook и другие социальные сети (например, ВК, ОК) используют эти данные, когда делятся вашей страницей.

Таким образом можно указать, чтобы выводилось изображение (Featured image), используемое для миниатюры записи, при репосте в соцсети.

Также можно указать для загрузки любое другое изображение, если миниатюра для записи не задана.

K
На сайте с 10.01.2015
Offline
110
#4
MrDesigner:
Чтобы не лезть в код темы, плагин Yoast SEO (курите настройки и мануалы) позволяет добавить метаданные OpenGraph в раздел <head> вашего сайта.

Facebook и другие социальные сети (например, ВК, ОК) используют эти данные, когда делятся вашей страницей.

Таким образом можно указать, чтобы выводилось изображение (Featured image), используемое для миниатюры записи, при репосте в соцсети.

Также можно указать для загрузки любое другое изображение, если миниатюра для записи не задана.

Я использую этот плагин. И если посмотреть метатеги в коде страницы, то все они есть и указаны верно, но ВК все равно по каким-то причинам неправильно считывает миниатюру. Если я убираю плагин популярных записей (вывод в странице), то проблема решается. Кеш я уже чистил со стороны ВКонтакте.

MrDesigner
На сайте с 31.01.2008
Offline
159
#5

ВК "считывает" именно то, что указано в метаданных.

Значит: или неправильные настройки Yoast или гадит YARP.

Миниатюра-картинка, которую подхватывают соцсети, должна указываться кодом (адрес картинки свой, конечно):

<meta property="og:image" content="http://ia.media-imdb.com/images/rock.jpg" />

http://ogp.me/

K
На сайте с 10.01.2015
Offline
110
#6
MrDesigner:
ВК "считывает" именно то, что указано в метаданных.

Значит: или неправильные настройки Yoast или гадит YARP.

Миниатюра-картинка, которую подхватывают соцсети, должна указываться кодом (адрес картинки свой, конечно):

<meta property="og:image" content="http://ia.media-imdb.com/images/rock.jpg" />

http://ogp.me/

Очевидно же, что гадит YARP, поэтому и пытаюсь как-то решить эту проблему.

Если отключаю плагин, то никаких проблем нет – подхватывается именно миниатюра записи, тк все OP настроены.

Вот код, который я использую для вывода популярных постов. Может кто подскажет где может быть косяк?

<?php if (have_posts()):?>

<noindex><div id="interesting_articles">
<ul><?php while (have_posts()) : the_post(); ?>
<li>
<a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>">
<div class="widget-week-item2">
<div class="widget-week-item1"><?php the_post_thumbnail(array(300,200)); ?>
<div class="widget-week-content">
<div class="entry-info">
<span class="meta-category"><?php $category = get_the_category(); echo $category[0]->cat_name; ?></span>
<span class="meta-info"><span class="meta-time">
<i class="fa fa-clock-o"></i> <time datetime="<?php the_time('Y-m-j') ?>"><?php the_time( get_option( 'date_format' ) ); ?></time></span><span class="meta-views">
| <i class="fa fa-eye"></i> <?php if(function_exists('the_views')) { the_views(); } ?></span>
</span>
<a class="title" href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
</span>
</div>
</div>
<div>
</a>
<li>
<?php endwhile; ?>
</ul>
</div>
</noindex>
<?php endif; ?>
ДП
На сайте с 23.11.2009
Offline
198
#7

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

Да - некрасиво, да - костыли, но если всё остальное действительно прописано и работает корректно (ссылку бы дали что-ли), то вижу только такое решение.

K
На сайте с 10.01.2015
Offline
110
#8
Дикий пионер:
В общем и целом решение в лоб - это поставить условие на невывод этого блока роботу контакта. Не знаю, представляется ли как-то этот робот или может список ip у него фиксированный есть.
Да - некрасиво, да - костыли, но если всё остальное действительно прописано и работает корректно (ссылку бы дали что-ли), то вижу только такое решение.

Как это можно сделать? Во что обернуть код?

ДП
На сайте с 23.11.2009
Offline
198
#9

По идее первую строчку приведенного вами кода заменить на что-то типа:


<?php if (have_posts() && !isVKRobot()):?>

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

Там либо User-Agent надо будет смотреть, либо как-то статистику ip собирать.

В крайнем случае вы можете сами для шаринга ссылки какой-нибудь get-параметр придумать, типа той же utm-метки и по наличию её смотреть.

Может у кого и готовый код есть, но я только общий принцип расписал.

K
На сайте с 10.01.2015
Offline
110
#10
Дикий пионер:
По идее первую строчку приведенного вами кода заменить на что-то типа:

<?php if (have_posts() && !isVKRobot()):?>

А вот содержимое функции по определению того, вкшный бот или нет запрашивает страничку - надо смотреть.
Там либо User-Agent надо будет смотреть, либо как-то статистику ip собирать.
В крайнем случае вы можете сами для шаринга ссылки какой-нибудь get-параметр придумать, типа той же utm-метки и по наличию её смотреть.
Может у кого и готовый код есть, но я только общий принцип расписал.

Код не работает, ломает версту страницы)

12

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