web-dev-qa-db-fra.com

Les métadonnées de graphique ouvertes ne sont pas extraites sur Facebook avant que je n'ai exécuté ce lien spécifique via le débogueur

J'ai ajouté des métadonnées de graphe ouvertes à toutes les publications d'un site. Cependant, lorsque j'essaie de coller un lien de publication sur Facebook, les méta-informations de graphe ne sont pas chargées.

Ensuite, lorsque j'insère l'URL dans le débogueur/linter , cela fonctionne, à la fois dans le débogueur et lors de la publication normale sur Facebook (ce qui ne fonctionnait pas quelques instants auparavant).

Ce problème semble avoir été traité dans le passé, dans cette question de débordement de pile . Cependant, cette question concerne un environnement Rails.

Dans cette question, l'application ne pouvait pas gérer plusieurs demandes http en même temps. Le problème a été résolu en traitant en arrière-plan toutes les demandes d'API Facebook à l'aide de quelque chose appelé delay_response.

Quelle est la manière la plus simple de réaliser ceci ou quelque chose de similaire dans un environnement PHP fonctionnant sous Wordpress et de ce fait (espérons-le) résoudre mon problème?

** Je n'ai pas inclus d'exemple de lien dans ce message car dès qu'un utilisateur l'exécutera via le débogueur, il semblera fonctionner. *

Edit- Exemple de balises META d'une page de publication:

<meta property="og:title" content="Budget proposal good news for Ontario drivers - AdvocateDaily.com" />
<meta property="og:type" content="website" />
<meta property="og:image" content="http://build.advocatedaily.com/wp-content/uploads/2013/04/Stacey-Stevens_Colour_NEW_2012-e1354206636925-150x150.jpg" />
<meta property="og:url" content="http://advocatedaily.com/2013/05/budget-proposal-good-news-for-ontario-drivers/" />
<meta property="og:description" content="A provincial budget proposal to reduce auto insurance premiums by an average of 15 per cent is good news for Ontario drivers, but should not come at the cost of benefits available under the policy, says Toronto personal injury lawyer Stacey L. Stevens. &#8220;In response to this announcement, the Insurance Bureau of Canada (IBC) predicts the [...]" />
<meta property="og:site_name" content="Advocate Daily" />

Le PHP étant inséré dans wp_head:

add_action('wp_head', 'add_fb_open_graph_tags');
function add_fb_open_graph_tags() {
    if (is_single()) {
        global $post;
        if(get_the_post_thumbnail($post->ID, 'thumbnail')) {
            $thumbnail_id = get_post_thumbnail_id($post->ID);
            $thumbnail_object = get_post($thumbnail_id);
            $image = $thumbnail_object->guid;
        } else {
            $image = get_template_directory_uri()."/images/advocatedaily-avatar.png";
        }
        //$description = get_bloginfo('description');
        $description = og_excerpt( $post->post_content, $post->post_excerpt );
        $description = strip_tags($description);
        $description = str_replace("\"", "'", $description);
?>
<meta property="og:title" content="<?php the_title(); ?> - AdvocateDaily.com" />
<meta property="og:type" content="website" />
<meta property="og:image" content="<?php echo $image; ?>" />
<meta property="og:url" content="<?php the_permalink(); ?>" />
<meta property="og:description" content="<?php echo $description ?>" />
<meta property="og:site_name" content="<?php echo get_bloginfo('name'); ?>" />
<?php   }
}
function og_excerpt($text, $excerpt){
    if ($excerpt) return $excerpt;
    $text = strip_shortcodes( $text );
    $text = apply_filters('the_content', $text);
    $text = str_replace(']]>', ']]>', $text);
    $text = strip_tags($text);
    $excerpt_length = apply_filters('excerpt_length', 55);
    $excerpt_more = apply_filters('excerpt_more', ' ' . '[...]');
    $words = preg_split("/[\n
     ]+/", $text, $excerpt_length + 1, PREG_SPLIT_NO_EMPTY);
    if ( count($words) > $excerpt_length ) {
            array_pop($words);
            $text = implode(' ', $words);
            $text = $text . $excerpt_more;
    } else {
            $text = implode(' ', $words);
    }
    return apply_filters('wp_trim_excerpt', $text, $raw_excerpt);
}
2
Orun

Tout d'abord, ce n'est pas une question spécifique à WordPress, c'est une question sur Facebook.

Deuxièmement, les pages de caches Facebook, elles ne les explorent pas à chaque soumission. Si une URL a déjà été soumise à Facebook auparavant, ils l'auront déjà analysée une fois pour les données OG et sauvegardée dans leur cache. Si vous modifiez ultérieurement les données OG, ils ne le remarqueront pas immédiatement, car ils extraient de leur cache, pas de la page.

Le débogueur Facebook oblige son robot d'exploration à extraire de la page en temps réel et met ainsi à jour son cache.

C'est aussi simple que ça. Si l'URL a déjà été publiée sur Facebook, la modification des données OG sur celle-ci n'aura aucun effet immédiat. Cela prendra quelques semaines avant que FB ne le remarque. L'utilisation du débogueur annule cela.

3
Otto

J'ai eu le même problème. Ce que vous devez faire, c'est dire à Facebook de gratter votre contenu à nouveau.

Rendez-vous sur ce lien: https://developers.facebook.com/tools/debug/sharing/ et branchez votre URL. Une fois le débogueur rétabli, vous devriez voir un bouton indiquant "supprimer à nouveau". Cliquez dessus.

Après cela, les informations sont apparues normalement sur Facebook.

Je suis sûr qu'il existe un moyen plus direct de demander à Facebook de gratter à nouveau votre contenu, mais cela fonctionne également.

1
David Gaskin