Jeg la til åpne metadata for graf til alle innleggene på et nettsted, men når jeg prøver å lime inn en innleggslink på Facebook, lastes ikke metainformasjonen inn.
Så når jeg setter inn URL inn i feilsøkingsprogrammet / linteren , fungerer det, både i feilsøkingsprogrammet og når du legger ut normalt på Facebook (som ikke fungerte øyeblikk før).
Dette problemet ser ut til å ha blitt tidligere i dette Stack Overflow-spørsmålet . Dette spørsmålet gjelder imidlertid et Rails-miljø.
I det spørsmålet kunne ikke applikasjonen håndtere flere http-forespørsler samtidig. Problemet ble løst ved å håndtere alle Facebook API-forespørsler i bakgrunnen ved hjelp av noe som heter delayed_response.
Hva er den enkleste måten jeg kunne oppnå dette eller noe lignende på i et PHP-miljø som kjører WordPress og dermed (forhåpentligvis) løser problemet mitt?
** Jeg inkluderte ikke en eksemplellink i dette innlegget. fordi så snart en bruker kjører den gjennom feilsøkingsprogrammet, ser det ut til å fungere. *
Rediger – Eksempel på metakoder fra en innleggsside:
<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" />
PHP som settes inn i 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); }
Kommentarer
- Hvordan hadde du lagt den til og hva gjør du for å varsle Facebok proaktivt om det?
- Jeg har en funksjon som skriver til overskriften min hvis is_post (). Jeg ' Jeg redigerer innlegget mitt og legger til et eksemplar av metadataene.
Svar
For det første er dette ikke et WordPress-spesifikt spørsmål. Det er et Facebook-spørsmål.
For det andre cacher Facebook sider, de gjennomsøker ikke dem ved hver innsending. Hvis du har en URL som allerede har blitt sendt til Facebook før, så vil de allerede ha gjennomsøkt den for OG-dataene en gang før, og lagret den i hurtigbufferen. Hvis du senere endrer OG-dataene, vil de ikke merke det umiddelbart, fordi de » trekker fra cachen sin, ikke fra siden.
Facebook Debugger tvinger crawleren sin til å trekke fra siden i sanntid, og oppdaterer dermed cachen.
Enkelt som det virkelig. Hvis nettadressen noen gang har blitt lagt ut på Facebook før, vil ikke endring av OG-dataene på den umiddelbart tre i kraft. Det vil ta noen uker før FB merker det. Bruk av feilsøkingsprogrammet overstyrer det.
Kommentarer
- Takk, jeg ' Jeg venter på det. Jeg la ut dette spørsmålet i WordPress fordi jeg lurte på om det var den beste måten å håndtere Facebook API-forespørsler i bakgrunnen i et WordPress-miljø, når det er sagt, poenget ditt er helt rettferdig og ditt svar gir mening. Takk.
Svar
Jeg hadde det samme problemet. Det du trenger er å fortelle Facebook for å skrape innholdet ditt igjen.
Gå over til denne lenken: https://developers.facebook.com/tools/debug/sharing/ og plugg URL-en din. Etter at feilsøkingsprogrammet kommer tilbake, bør du se en knapp som sier «skrap igjen». Klikk på den.
Etter at jeg gjorde det, så informasjonen ut som vanlig på Facebook.
Jeg er sikker på at det er en mer direkte måte å fortelle Facebook å skrape innholdet ditt på nytt, men dette fungerer også.
Kommentarer
- Hyggelig! Dette alternativet var faktisk ikke ' t der i den opprinnelige Facebook URL-linjen, da jeg sendte dette spørsmålet. Godt å vite det ' er der nå.