jeg tilføjede åbne metadata for graf til alle indlæg på et websted, men når jeg forsøger at indsætte et indlægslink på Facebook, indlæses grafmetaoplysningerne ikke.

Så når jeg indsætter URL i debugger / linter fungerer det, både inden i debuggeren og når det normalt sendes på Facebook (hvilket ikke fungerede øjeblikke før).

Dette problem ser ud til at have været tidligere i dette Stack Overflow-spørgsmål . Dette spørgsmål vedrører dog et Rails-miljø.

I dette spørgsmål kunne applikationen ikke håndtere flere http-anmodninger på samme tid. Problemet blev løst ved at håndtere alle Facebook API-anmodninger i baggrunden ved hjælp af noget kaldet delayed_response.

Hvad er den enkleste måde, hvorpå jeg kunne opnå dette eller lignende i et PHP-miljø, der kører WordPress og derved (forhåbentlig) løser mit problem?

** Jeg inkluderede ikke et eksempellink i dette indlæg fordi så snart en bruger kører det gennem fejlfindingsprogrammet, ser det ud til at virke. *

Rediger – Eksempel på metatags fra en indlægsside:

<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" /> 

PHP indsættes 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 havde du tilføjet det, og hvad præcist laver du for at proaktivt underrette Facebok om det?
  • Jeg har en funktion, der skriver til min overskrift, hvis is_post (). Jeg ' Jeg redigerer mit indlæg og tilføjer et prøveuddrag af metadataene.

Svar

For det første er dette ikke et WordPress-specifikt spørgsmål, det er et Facebook-spørgsmål.

For det andet cacher Facebook sider, de gennemsøger dem ikke ved hver indsendelse. Hvis du har en URL, der allerede er sendt til Facebook før, så vil de allerede have gennemsøgt det til OG-dataene en gang før og gemt det i deres cache. Hvis du senere ændrer OG-dataene, vil de ikke bemærke det med det samme, fordi de ” trækker fra deres cache, ikke fra siden.

Facebook Debugger tvinger deres crawler til at trække fra siden i realtid og opdaterer således deres cache.

Simpelt som det virkelig. Hvis URLen nogensinde er blevet sendt til Facebook før, vil ændring af OG-dataene på den ikke få øjeblikkelig virkning. Det vil tage et par uger, før FB bemærker. Brug af fejlfinderen tilsidesætter det.

Kommentarer

  • Tak, jeg ' Jeg venter på det. Jeg sendte dette spørgsmål i WordPress, fordi jeg spekulerede på, om der var den bedste måde at håndtere Facebook API-anmodninger i baggrunden i et WordPress-miljø, når det er sagt, dit punkt er helt fair og dit svar giver mening. Tak.

Svar

Jeg havde det samme problem. Hvad du skal bruge er at fortælle Facebook for at skrabe dit indhold igen.

Gå over til dette link: https://developers.facebook.com/tools/debug/sharing/ og plug din URL i. Når debuggeren kommer tilbage, skal du se en knap, der siger “skrab igen”. Klik på den.

Efter at jeg gjorde det, fremkom oplysningerne som normale på Facebook.

Jeg er sikker på, at der er en mere direkte måde at fortælle Facebook at skrabe dit indhold på ny, men det fungerer også.

Kommentarer

  • Dejligt! Denne mulighed var faktisk ikke ' t der i den originale Facebook URL-linter, på tidspunktet for mit indlæg af dette spørgsmål. Godt at vide det ' er der nu.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *