Я создал код, который получает информацию из API и отображает ее динамически.
foreach($filtered_listings as $listing){
get_template_part( 'template-parts/listings/img/image','cover', $listing);
}
Внутри этой части шаблона я создаю ссылку таким образом
<?php //Get all variables from arrays present in passed args ?>
<?php extract($args); ?>
<a class = "img-frame listings-img-frame" href = "'.$home_url.'/annonce?annonceId='.$info['id'].'">
Поэтому, когда я нахожусь на странице, я получаю идентификатор конкретной страницы через $ _GET и передаю правильную информацию.
// filter_by_id is Declared in Functions.php
$listing = array_filter($listings, "filter_by_id");
$listing_key= key($listing);
$this_listing= $listing[key($listing)];
Итак, все это работает нормально, и в моей переменной $ this_listing у меня есть правильная информация, и я могу отображать ее правильно.
СЕЙЧАС! Я пытаюсь реализовать некоторые сканеры FB в моем файле function.php
function insert_fb_in_head() {
global $post;
// Import api data from correspondent file and set variables that will be used and retreived
include_once "api/api-setup.php";
global $listings;
global $token;
function filter_by_id($listing) {
global $annonceId;
$annonceId = $_GET['annonceId'];
return $listing['info']['id'] == $annonceId;
}
$listing = array_filter($listings, "filter_by_id");
$listing_key= key($listing);
$this_listing= $listing[key($listing)];
extract($this_listing);
if ( !is_singular()) //if it is not a post or a page
return;
echo '<meta property = "fb:app_id" content = "Your Facebook App ID" />';
echo '<meta property = "og:title" content = "'.$info['titre'].'"/>';
echo '<meta property = "og:type" content = "article"/>';
echo '<meta property = "og:url" content = "' . get_permalink() . '"/>';
echo '<meta property = "og:description" content = "blablabla"/>';
echo '<meta property = "og:site_name" content = "site Name"/>';
if (!has_post_thumbnail( $post->ID )) { //the post does not have featured image, use a default image
$default_image = "http://example.com/image.jpg"; //replace this with a default image on your server or an image in your media library
echo '<meta property = "og:image" content = "' . $default_image . '"/>';
}
else{
$thumbnail_src = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'medium' );
echo '<meta property = "og:image" content = "' . esc_attr( $thumbnail_src[0] ) . '"/>';
}
echo "
";
}
add_action( 'wp_head', 'insert_fb_in_head', 5 );
Это правильно работает на моем веб-сайте. Если я использую var_dump ($ this_listing) или единственную извлеченную переменную, которую я использую сейчас, например, $ info ['titre'], у меня появится желаемая информация.
НО! когда я делюсь URL-адресом таким образом, чтобы получить правильный идентификатор листинга:
$annonceId;
$annonceId = $_GET['annonceId'];
возвращает ошибку неопределенной переменной.
Примечание: неопределенный индекс: annonceId в /var/www/vhosts/wapinails.be/httpdocs/wp-content/themes/divi-child/functions.php в строке 64 Примечание: неопределенный индекс: annonceId в / var / www / vhosts / wapinails.be/httpdocs/wp-content/themes/divi-child/functions.php в строке 64 Примечание: неопределенный индекс: annonceId в / v ...
Итак, я понимаю, что $ _GET - неправильный путь в данном случае. Есть предложения о том, как с этим справиться?
спасибо, пробовал вот так: echo '<meta property = "og:url" content = "' . get_permalink() . '/?annonceId='.$_GET["annonceId"].'"/>'; но все равно не работает ..
Вы повторно очищали URL-адрес с помощью инструмента отладки Facebook, чтобы очистить их кеш?
Да, я заново очищаюсь каждый раз, когда пробую новое решение.
Затем дайте фактический URL-адрес примера, чтобы мы могли проверить.
[ссылка] wapinails.be/annonce/?annonceId=191
Инструмент отладки сообщает, что он использует URL-адрес, указанный в метатеге rel = cononical. Однако он должен отдает приоритет og:url. Но он также утверждает, что этот один отсутствует вместе с несколькими другими тегами og. Этот URL-адрес по-прежнему выводит множество неопределенных индексных уведомлений еще до того, как появятся метатеги - так что это возможная причина, по которой инструмент отладки не может их правильно прочитать, поэтому в первую очередь исправьте эти уведомления.
Хорошо Исправлено, я слишком много играл и кое-что сломал. и хорошо работает. Большое спасибо!
Теперь, хотя он блокируется в свойстве изображения ... <meta property = "fb:app_id" content = "xxxx" /> <meta property = "og:url" content = "<?php echo get_permalink().'?annonceId='.urldecode($_GET['annonceId']); ?>" /> <meta property = "og:image" content = "<?php echo $photos['1']['url']; ?>" />; <meta property = "og:title" content = "<?php echo $info['titre']; ?>"/><meta property = "og:type" content = "article"/> <meta property = "og:description" content = "Découvrez cette annonce sur nontre site!"/>; <meta property = "og:site_name" content = "Ombri Immo"/>;
в таком случае изображение отображается, но все после него прерывается: если я помещаю изображение последним ... все работает, кроме изображения, есть ли определенный порядок действий?
Судя по ссылке «именно то, что видит наш скребок» внизу, кажется, что они не присутствуют в фактическом исходном коде, который получает Facebook - developers.facebook.com/tools/debug/echo/…
Хорошо, РЕШЕНИЕ тоже У меня был ; после нескольких метатегов, и это сломало его. Еще раз спасибо за помощь !!






Facebook считает, что то, что вы указали как
og:url, является «реальным» URL-адресом этого фрагмента контента, поэтому он будет явно извлекать его для очистки соответствующих данных. Таким образом, URL-адрес, который вы там указываете, должен включать ваши параметры.