web-dev-qa-db-fra.com

partage de vidéos sur facebook à partir de wordpress

Lorsqu'un utilisateur essaie de partager une page avec une vidéo intégrée, seul le titre de la page apparaît sur son statut Facebook et non sur le lecteur vidéo flash. Cela se produit lors du partage avec le bouton addthis ou si l'URL est affichée directement sur la page facebook. Avez-vous une idée de la façon dont je peux faire en sorte que Facebook récupère la vidéo flash intégrée?

2
TonyK

Cela dépend vraiment de la manière dont la vidéo est intégrée à la page. Facebook ne peut gérer que des formats spécifiques et s’il voit quelque chose qu’il ne s’attend pas, il utilise par défaut la norme de sécurité "Ne rien afficher".

Si la vidéo intégrée est une norme reconnue (lecteur par défaut de YouTube), elle devrait fonctionner correctement. S'il s'agit de votre propre lecteur vidéo auto-hébergé, cela ne fonctionnera pas. Facebook n'intégrera pas les objets Flash d'autres personnes sur leur site.


Mise à jour 11/18

Si intelligent qu'il soit, Facebook a encore besoin d'une aide considérable pour déterminer le contenu présent sur la page. Il peut effectuer un balayage rapide des balises <img /> pour vous donner des vignettes de page, mais il ne recherche pas <object>s ou <embed>s, car il peut s'agir d'une vidéo YouTube (que vous souhaitez partager sur Facebook) à une application Flash intrusive ( que Facebook ne veut pas sur leur site).

Pour simplifier les choses, YouTube utilise en réalité une application Facebook spécifique pour vous permettre de partager des vidéos qui seront automatiquement intégrées à Facebook. En plus de créer un lien direct vers cette application, chaque page vidéo YouTube inclut dans son en-tête des méta-informations supplémentaires que Facebook utilise pour rassembler la vidéo et l'intégrer à la page. Voici un exemple tiré de la vidéo à laquelle vous avez accédé précédemment:

<meta property="fb:app_id" content="87741124305" />
<meta property="og:title" content="Cubed: Manny Pacquiao&amp;#39;s Punchout" />
<meta property="og:description" content="Manny Pacquiao is training hard for his upcoming fight with Miguel Cotto, but you might be surprised how he got to the top.  Check out this clip." />
<meta property="og:type" content="video" />
<meta property="og:url" content="http://www.youtube.com/watch?v=IvCCuuuJhd4" />
<meta property="og:image" content="http://i2.ytimg.com/vi/IvCCuuuJhd4/default.jpg" />
<meta property="og:site_name" content="YouTube" />

L'application associée est l'application application YouTube sur Facebook. Vous pouvez également voir certaines informations spécifiques incluses ici: titre, description, type, url, image, nom_site. Tout cela aide Facebook à savoir quoi faire lorsque vous "partagez" la page avec vos amis et votre réseau.

Le bouton AddThis n’ajoute aucune de ces informations à votre en-tête. En réalité, il ne le peut pas, car il est conçu pour permettre le partage simple de pages, et non pour le partage de puissance pour des sites Web vidéo comme YouTube.

Donc, comme je l'ai déjà dit, cela dépend de la manière dont la vidéo est intégrée à la page. Facebook ne peut gérer que des vidéos dans des formats spécifiques, étiquetés de manière spécifique, provenant de sites/applications spécifiques.

Pour répliquer la fonctionnalité vidéo intégrée de YouTube, vous devez:

  • Créez votre propre application Facebook pour faire avancer les choses
  • Ajoutez le même type de méta-information à votre en-tête

Si vous le souhaitez (et je le recommanderais), la solution la plus simple consiste à gratter les balises <meta> utilisées par YouTube. Donc, si vous ajoutez une vidéo, utilisez le même identifiant d'application YouTube, les mêmes propriétés <meta> et vous devriez soyez prêts à partir.

6
EAMann

Mise à jour Pour extraire uniquement les balises méta avec l'attribut de propriété, j'ai rassemblé les éléments suivants:

  <?php 

ini_set('display_errors', false); 
$page = "http://www.youtube.com...(the video ID)"; 
$page_data = file_get_contents($page); 

$doc=new DOMDocument();
$doc->loadHTML($page_data);
$xml=simplexml_import_dom($doc);
$meta=$xml->xpath('//meta');
foreach ($meta as $met) 
{
 if ($met['property'] != '')
 {
     echo '<meta property="'.$met['property'] . '" content="' . $met['content']."\">\n";
 }
}
ini_set('display_errors', true); 

?>

Je sais que c'est un peu hacky mais ça marche. Je pense que je vais l'utiliser avec l'un des plugins d'intégration vidéo d'URL et définir les méta-informations dans la tête du modèle.

1
TonyK