Отправка информации при совместном использовании на FB и FB OG через URL с использованием $ _GET не работает

Я создал код, который получает информацию из 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 - неправильный путь в данном случае. Есть предложения о том, как с этим справиться?

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

CBroe 08.04.2021 13:05

спасибо, пробовал вот так: echo '<meta property = "og:url" content = "' . get_permalink() . '/?annonceId='.$_GET["annonceId"].'"/>'; но все равно не работает ..

Matteo Cinti 09.04.2021 10:16

Вы повторно очищали URL-адрес с помощью инструмента отладки Facebook, чтобы очистить их кеш?

CBroe 09.04.2021 10:18

Да, я заново очищаюсь каждый раз, когда пробую новое решение.

Matteo Cinti 09.04.2021 11:36

Затем дайте фактический URL-адрес примера, чтобы мы могли проверить.

CBroe 09.04.2021 11:38

[ссылка] wapinails.be/annonce/?annonceId=191

Matteo Cinti 09.04.2021 12:11

Инструмент отладки сообщает, что он использует URL-адрес, указанный в метатеге rel = cononical. Однако он должен отдает приоритет og:url. Но он также утверждает, что этот один отсутствует вместе с несколькими другими тегами og. Этот URL-адрес по-прежнему выводит множество неопределенных индексных уведомлений еще до того, как появятся метатеги - так что это возможная причина, по которой инструмент отладки не может их правильно прочитать, поэтому в первую очередь исправьте эти уведомления.

CBroe 09.04.2021 12:18

Хорошо Исправлено, я слишком много играл и кое-что сломал. и хорошо работает. Большое спасибо!

Matteo Cinti 09.04.2021 12:36

Теперь, хотя он блокируется в свойстве изображения ... <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"/>;

Matteo Cinti 09.04.2021 12:55

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

Matteo Cinti 09.04.2021 12:57

Судя по ссылке «именно то, что видит наш скребок» внизу, кажется, что они не присутствуют в фактическом исходном коде, который получает Facebook - developers.facebook.com/tools/debug/echo/…

CBroe 09.04.2021 13:02

Хорошо, РЕШЕНИЕ тоже У меня был ; после нескольких метатегов, и это сломало его. Еще раз спасибо за помощь !!

Matteo Cinti 09.04.2021 13:04
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
12
21
0

Другие вопросы по теме

Флажок FB messenger messaging_optins отправить сообщение пользователю user_ref_id не работает "Вы не можете отправлять сообщения на этот идентификатор"
Ошибка разрешения Facebook возникает, даже если она у меня есть
Ссылка для совместного использования в социальных сетях Предварительный просмотр изображения и текста не работает
Клиент Spring Boot oAuth2 с угловой проблемой CORS
Ошибка API Facebook Marketing: неподдерживаемый запрос на получение. Объект с идентификатором XXXXXX не существует, не может быть загружен из-за отсутствия разрешений
Instagram Graph API. Публикация контента. Публикация видео
Программно создать пользователя FB
Интервью по техническим вопросам | Как facebook решает проблему, если много людей звонят одному человеку в одно и то же время
Ошибка "Ваш запрос не может быть обработан" на адаптивном портале MacBook с использованием ручного входа в Facebook
URL-адрес с неверным кодом ответа возвратил неверный код ответа HTTP