Как очистить кэш Facebook при обмене изображениями и текстом
Я использую Wordpress, и происходит нечто необычное. Ранее я поделился ссылкой, которая теперь имеет другое изображение после того, как изображение изменилось. Facebook делит то же самое предыдущее изображение, когда оно делится. Позвольте мне рассказать вам, какую процедуру я пытался
Начальник отдела
<meta property="og:title" content="<?php echo $blogArray['post_heading'];?>" />
<meta property="og:type" content="article" />
<meta property="og:image" content="<?php echo $blogArray['image_url'];?>" />
<meta property="og:url" content="<?php echo site_url().'?page_id=3205&id='.base64_encode($blogArray['ID']);?>" />
<meta property="og:description" content="<?php echo $blogArray['post_sort_details'];?>" />
И HTML
http://www.facebook.com/sharer.php?s=100;&p[title]=<?php echo $blogArray['post_heading'];?>&p[summary]=<?php echo $blogArray['post_sort_details'];?>&p[url]=<?php echo 'http://'.str_replace('http://','',str_replace('www.','',site_url()));?>/?p=<?php echo $blogArray['share_post_id'];?>&p[images][0]=<?php echo $blogArray['image_url'];?>" target="_blank"><img src="<?php bloginfo('template_url');?>/images/fb_static.png" border="0" class="fb" title="Share via Facebook" width="24" height="24" /></a>
Но когда я пытаюсь с того же сайта на бета-папку, это идет совершенно нормально.
Я прилагаю скриншоты с этим.
Что я хочу поделиться
Что делится с Главного сайта?
Что делится с сайта бета и правильный
Я видел, как однажды пост опубликован на Facebook. Facebook хранит изображения и текст в своем кеше, и даже при смене изображений и текстов Facebook сохраняет прежнюю идентичность. Это главное, с чем я сталкиваюсь и хочу решить, перезагрузив кеш Facebook с текущим текстом и изображением после публикации.
3 ответа
Right right правильно. Вы можете обновить кеш с помощью инструмента отладчика Facebook. Просто поместите URL на инструменте отладчика, которым вы делитесь.
Вы также можете использовать этот скрипт на сайте, так как вам не нужно заходить в инструменты отладчика и обновлять страницу вручную. Следующий код с автоматическим обновлением страницы Facebook.
$.post(
'https://graph.facebook.com',
{
id: '[PAGE_URL]',
scrape: true
},
function(response){
console.log(response);
}
);
Я вырывал свои волосы, пытаясь решить эту проблему. Часы и часы устранения неполадок безрезультатны. Поговорив с одним из наших программистов на тему, не связанную с этим, я подумал о чем-то, что можно было бы попробовать в долгосрочной перспективе.
К моему большому удивлению, это сработало!!!
Это причина проблемы и мое решение для нее:
Когда вы создаете черновик сообщения в WordPress, он генерирует ссылку на основе заголовка вашей статьи (если вы не изменили ее вручную). Название моей статьи содержало специальные символы, однако автоматически сгенерированная ссылка не отображала эти специальные символы, только дефисы для замены пробелов. Должно быть хорошо, верно? Неправильно! В метаданные и код, встроенные в платформу WordPress, входят эти специальные символы, и они путают способ, которым Facebook извлекает информацию из статьи, на которую ссылаются. Это проблема, потому что определенные специальные символы делают недействительными гиперссылки.
Например:
Название статьи: R[eloaded] Автоматически сгенерированная гиперссылка, отображаемая в поле WordPress "Постоянная ссылка": http://www.example.com/reloaded Actual WordPress Автоматически сгенерированная гиперссылка: http://www.example.com/r%5Beloaded%5D
Эти скобки лишают законной силы ссылку, и Facebook не сможет извлечь из нее какую-либо информацию (например, изображения).
Решение:
(1) Просто вручную измените адрес гиперссылки WordPress на что-то, что не содержит никаких специальных символов (это не изменит название вашей статьи).
(2) Нажмите "Обновить", чтобы изменить сообщение и включить новую гиперссылку.
(3) Нажмите "Очистить кэш" в окне WordPress.
(4) Обновите окно браузера Facebook
(5) Вставьте новую гиперссылку для своей статьи.
(6) Наслаждайтесь своим постом в Facebook с предварительным изображением и информацией
Sidenote: Не дергайся за Facebook, это того не стоит. знак равно
Я много пытался очистить кэш программно. Мы можем очистить кеш вручную с помощью отладчика facebook. Но это работает, когда мы сохраняем любой параметр после URL, например http://myurl.com/?fbrefresh=xyz. Но очистка кэша вручную - не простая вещь, и мы не можем делать это каждый раз.
Наконец, он работал с JavaScript. Это сработало, когда я поставил параметр после URL, как я упоминал выше.
if(window.location.search.indexOf("facebook_refresh") >= 0) {
//Feature check browsers for support
if(document.addEventListener && window.XMLHttpRequest && document.querySelector) {
//DOM is ready
document.addEventListener("DOMContentLoaded", function() {
var httpRequest = new XMLHttpRequest();
httpRequest.open("POST", "https://graph.facebook.com", true);
httpRequest.onreadystatechange = function () {
if (httpRequest.readyState == 4) {
console.log("httpRequest.responseText", httpRequest.responseText);
}
};
//Default URL to send to Facebook
var url = window.location;
//og:url element
var og_url = document.querySelector("meta[property='og:url']");
//Check if og:url element is present on page
if(og_url != null) {
//Get the content attribute value of og:url
var og_url_value = og_url.getAttribute("content");
//If og:url content attribute isn't empty
if(og_url_value != "") {
url = og_url_value;
} else {
console.warn('<meta property="og:url" content=""> is empty. Falling back to window.location');
}
} else {
console.warn('<meta property="og:url" content=""> is missing. Falling back to window.location');
}
//Send AJAX
httpRequest.send("scrape=true&id=" + encodeURIComponent(url));
});
} else {
console.warn("Your browser doesn't support one of the following: document.addEventListener && window.XMLHttpRequest && document.querySelector");
}
}