ho aggiunto apri i metadati del grafico a tutti i post su un sito, tuttavia, quando provo a incollare un link al post su Facebook, le metadati del grafico non vengono caricate.
Quindi, quando inserisco lURL nel debugger / linter , funziona, sia allinterno del debugger che quando si pubblica normalmente su Facebook (cosa che non funzionava pochi istanti prima).
Questo problema sembra essere stato risolto in passato, in questa domanda su Stack Overflow . Tuttavia, questa domanda riguarda un ambiente Rails.
In quella domanda, lapplicazione non poteva gestire più richieste http contemporaneamente. Il problema è stato risolto gestendo tutte le richieste API di Facebook in background utilizzando qualcosa chiamato delayed_response.
Qual è il modo più semplice in cui potrei realizzare questo o qualcosa di simile in un ambiente PHP con WordPress e quindi (si spera) risolvere il mio problema?
** Non ho incluso un link di esempio in questo post perché non appena un utente lo esegue tramite il debugger, “sembrerà funzionare. *
Modifica- Esempio di meta tag da una pagina di post:
<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. “In response to this announcement, the Insurance Bureau of Canada (IBC) predicts the [...]" /> <meta property="og:site_name" content="Advocate Daily" />
Il PHP inserito in 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); }
Commenti
- Come lavevi aggiunto e cosa stai facendo precisamente per notificarlo in modo proattivo a Facebok?
- Ho una funzione che scrive nel mio header se is_post (). ' modifico il mio post e aggiungo uno snippet campione dei metadati.
Risposta
In primo luogo, questa non è “una domanda specifica per WordPress, ma” una domanda per Facebook.
In secondo luogo, Facebook memorizza le pagine nella cache, non le sottopone a scansione ad ogni invio. Se hai un URL che è già stato inviato a Facebook in precedenza, quindi lo avranno già sottoposto a scansione per i dati OG una volta in precedenza e lo avranno salvato nella loro cache. Se in seguito modifichi i dati OG, non lo noteranno immediatamente, perché loro ” sta estraendo dalla cache, non dalla pagina.
Il debugger di Facebook forza il crawler a eseguire il pull dalla pagina in tempo reale e quindi aggiorna la cache.
Semplice come quello Se lURL è mai stato pubblicato su Facebook prima, la modifica dei dati OG su di esso non avrà effetto immediato. Ci vorranno alcune settimane prima che FB se ne accorga. Lutilizzo del debugger prevale su questo.
Commenti
- Grazie, ' Aspetterò. Ho postato questa domanda in WordPress perché mi chiedevo se ci fosse un modo migliore per gestire le richieste API di Facebook in background in un ambiente WordPress, detto questo, il tuo punto è totalmente giusto e il tuo la risposta ha senso. Grazie.
Risposta
Ho avuto lo stesso problema. Quello che devi sapere è Facebook per raschiare di nuovo i tuoi contenuti.
Vai a questo link: https://developers.facebook.com/tools/debug/sharing/ e collega il tuo URL in. Dopo che il debugger è tornato, dovresti vedere un pulsante che dice “scrape again”. Fai clic su di esso.
Dopo averlo fatto, le informazioni sono apparse normalmente su Facebook.
“Sono sicuro che esiste” un modo più diretto per dire a Facebook di raschiare di nuovo i tuoi contenuti, ma anche questo funziona.
Commenti
- Bello! Questa opzione in realtà non era ' nel linter originale dellURL di Facebook, al momento della pubblicazione di questa domanda. Buono a sapersi ' ora è lì.