Как управлять изображением для кнопки "Нравится" Facebook?

3 нояб. 2010 г., 22:13:46
Просмотры: 62K
Голосов: 13

У меня есть блог с несколькими постами, и в каждом посте встроена кнопка "Нравится" Facebook. При нажатии на кнопку открывается диалоговое окно, где мои посетители могут поделиться постом на Facebook с комментарием.

Однако при шеринге изображение, выбранное Facebook - это общая иконка письма, а не миниатюра поста.

Как можно управлять изображением, которое используется при шеринге?

2
Комментарии

Этот сайт недавно взломали, судя по всему...

MirroredFate MirroredFate
28 июл. 2011 г. 02:23:23

Совсем чуть-чуть не вопрос про Wordpress...

Kaaviar Kaaviar
6 мар. 2012 г. 10:45:43
Все ответы на вопрос 8
0
11

Facebook теперь использует протокол OpenGraph. Вы можете добавить изображения с помощью:

<meta property="og:image" content="http://ВАША_ССЫЛКА_НА_ИЗОБРАЖЕНИЕ" />

Добавьте эту строку в заголовок вашей страницы.

Либо вы можете использовать мой плагин для автоматического выполнения этой задачи.

Он просто выполняет эту работу и не требует никаких настроек.

http://shailan.com/wordpress/plugins/facebook-meta-tags-plugin/

19 мар. 2011 г. 11:40:28
1

Изображение, используемое для расшаривания, берется из фрагмента кода в заголовке вашего сайта, который выглядит примерно так:

<link rel="image_src" href="path/to/theme/screenshot.png" />

Обычно оно ссылается на скриншот вашего сайта в теме. Если вы удалите этот код из заголовка файла и в single.php поместите его внутри цикла, вызывая миниатюру записи в элемент href, то это должно сработать. Это будет выглядеть примерно так:

<link rel="image_src" href="<?php the_post_thumbnail(); ?>" />

Это означает, что если у вас есть кнопки "Нравится" на страницах, которые выводят несколько записей, у вас, вероятно, не будет изображения. Если вы добавите условный код, который удаляет его только на single.php, то у вас будет стандартное изображение на любой странице с несколькими записями и кнопкой "Нравится", а также миниатюра записи, когда используется шаблон single.php. Таким образом, код в заголовке будет выглядеть так:

<?php if ( is_single() ) { /* ничего не делать на страницах записей */ } else { ?>
<link rel="image_src" href="path/to/theme/screenshot.png" />
<?php } ?>

Затем вы все равно будете использовать код для включения миниатюры записи в single.php.

4 нояб. 2010 г. 17:04:33
Комментарии

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

Rarst Rarst
15 окт. 2011 г. 00:17:35
0

Вам необходимо использовать протокол Facebook Open Graph. Я не уверен, почему принятый ответ не относится к множеству ответов, связанных с OG: (за которые я проголосовал), но он является неправильным.

http://developers.facebook.com/docs/opengraph/

Используя Open Graph, вы можете настроить множество параметров, включая заголовок, изображение, описание, категорию, дату последнего обновления и т.д. Если вы используете другие полумеры, вы упускаете общую картину.

Если бы я не следовал протоколу OG во всех моих проектах для Facebook, меня бы уволили.

15 окт. 2011 г. 00:07:28
0

Если сделать следующее:

<link rel="image_src" href="<?php the_post_thumbnail(); ?>" />

Вы обнаружите, что WordPress выводит HTML, необходимый для отображения изображения, а не только SRC, который вам действительно нужен.

Если сделать так:

<?php

// Изображение записи для Facebook Like
$feature_image = get_the_post_thumbnail($post->ID);

// Получаем источник изображения
$doc = new DOMDocument();
$doc->loadHTML($feature_image);
$imageTags = $doc->getElementsByTagName('img');

foreach($imageTags as $tag) {
        $image_url = $tag->getAttribute('src');
    }
?>
<link rel="image_src" href="<?php echo $image_url; ?>" />

вы получите только URL. Возможно, это длинный путь, и его можно сократить, но он точно решает проблему.

Надеюсь, это поможет вам найти правильное решение.

Мэтт.

19 мар. 2011 г. 01:36:37
0

Убедитесь, что вы проверили ваш URL здесь, если указанное изображение отображается некорректно:

http://developers.facebook.com/tools/lint/

27 июл. 2011 г. 21:18:21
0

Если вы хотите использовать первое изображение из вашей записи в качестве миниатюры с резервным вариантом, например, вашего логотипа, попробуйте мой плагин - http://wordpress.org/extend/plugins/facebook-like-thumbnail/ Объяснение по добавлению резервного изображения логотипа находится по адресу http://blog.ashfame.com/?p=888

19 мар. 2011 г. 09:57:54
0
<meta property="og:image" content="http://ВАША_ССЫЛКА_НА_ИЗОБРАЖЕНИЕ" />

Этот метод работает для "лайков", но позже, если вы захотите поделиться ссылкой в своем блоге (например), данное изображение будет выбрано автоматически.

Без этого мета-тега вы можете выбирать из всех изображений на связанном сайте.

Кто-нибудь знает способ сохранить статичное изображение для "лайков", но при этом позволить выбирать изображение при публикации ссылки?

16 авг. 2011 г. 17:18:08
2

Хорошо, я написал немного JavaScript для заполнения мета-тега og:image выбранным мною изображением записи. Это одноразовый хак, который нужно добавить в файл заголовка.

В моей записи WordPress я добавляю ID "featured-image" к изображению (я знаю, что в более новых версиях WordPress это встроенная функция, но у меня старая версия).

<xmp><img src="http://mysite.com/catphoto.jpg" id="featured-image" /></xmp>

Я создаю мета-тег для og:image с заглушкой, например, логотипом блога. Добавляю "id="meta-image" к тегу, например:

<meta property="og:image" src="http://mysite.com/logo.jpg" id="meta-image" />

Затем добавляю этот JavaScript в заголовок:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"></script>  

<script type="text/javascript">  
$(document).ready( function(){  
    var featured_image = $("#featured-image").attr("src");  
    $('meta[property="og:image"]').attr("content",featured_image);  
});  
</script>  
6 мар. 2012 г. 09:35:25
Комментарии

Используйте wp_enqueue_script() для загрузки JavaScript в WordPress.

fuxia fuxia
6 мар. 2012 г. 13:04:36

Это действительно работает? Я уже пробовал что-то подобное без успеха — Facebook debugger не распознаёт моё изображение. Думаю, он не парсит JavaScript.

benedict_w benedict_w
12 авг. 2013 г. 19:32:09