Ik heb toegevoegd open grafiek metagegevens voor alle berichten op een site, maar wanneer ik probeer een postlink op Facebook te plakken, wordt de meta-informatie van de grafiek niet geladen.
Dan, als ik de URL invoegen in de debugger / linter , het werkt, zowel binnen de debugger als bij normaal posten op Facebook (wat niet werkte enkele momenten eerder).
Dit probleem lijkt in het verleden te zijn aangepakt, in deze Stack Overflow-vraag . Die vraag heeft echter betrekking op een Rails-omgeving.
In die vraag kon de applicatie niet “meerdere http-verzoeken tegelijkertijd afhandelen. Het probleem werd opgelost door alle Facebook API-verzoeken op de achtergrond af te handelen met behulp van iets dat delayed_response heet.
Wat is de eenvoudigste manier waarop ik dit of iets dergelijks zou kunnen bereiken in een PHP-omgeving met WordPress en daardoor (hopelijk) mijn probleem zou oplossen?
** Ik heb geen voorbeeldlink in dit bericht opgenomen want zodra een gebruiker het door de debugger haalt, lijkt het “te werken. *
Bewerken- Voorbeeld van metatags van een berichtpagina:
<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" />
De PHP die in wp_head wordt ingevoegd:
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); }
Reacties
- Hoe had je het toegevoegd en wat doe je precies om Facebok er proactief van op de hoogte te stellen?
- Ik heb een functie die naar mijn header schrijft als is_post (). Ik ' zal mijn bericht bewerken en een voorbeeldfragment van de metadata toevoegen.
Antwoord
Ten eerste is dit geen specifieke WordPress-vraag, het is een Facebook-vraag.
Ten tweede, Facebook cachet paginas, ze crawlen ze niet bij elke inzending. Als je een URL die al eerder naar Facebook is verzonden, dan hebben ze deze al een keer eerder gecrawld voor de OG-gegevens en opgeslagen in hun cache. Als je de OG-gegevens later wijzigt, zullen ze het niet meteen opmerken, omdat ze uit hun cache halen, niet van de pagina.
De Facebook Debugger dwingt hun crawler om in realtime van de pagina te halen, en werkt zo hun cache bij.
Zo simpel is het echt. Als de URL ooit eerder op Facebook is gepost, wordt het wijzigen van de OG-gegevens erop niet onmiddellijk van kracht. Het “duurt een paar weken voordat FB het opmerkt. Het gebruik van de debugger heft dat op.
Opmerkingen
- Bedankt, ik ' Ik wacht het af. Ik heb deze vraag in WordPress gepost omdat ik me afvroeg of er een beste manier was om Facebook API-verzoeken op de achtergrond in een WordPress-omgeving af te handelen. Dat gezegd hebbende, uw punt is volkomen eerlijk en uw antwoord is logisch. Bedankt.
Antwoord
Ik had hetzelfde probleem. Wat je moet vertellen is Facebook om uw inhoud opnieuw te schrapen.
Ga naar deze link: https://developers.facebook.com/tools/debug/sharing/ en sluit je URL in. Nadat de debugger terugkomt, zou je een knop moeten zien met de tekst “scrape again”. Klik erop.
Nadat ik dat had gedaan, verscheen de informatie zoals normaal op Facebook.
Ik “weet zeker” dat er een directere manier is om Facebook te vertellen je inhoud opnieuw te schrapen, maar dit werkt ook.
Reacties
- Leuk! Deze optie stond eigenlijk niet ' in de originele Facebook-URL linter, op het moment dat ik deze vraag plaatste. Goed om te weten ' is er nu.