Dodałem Otwórz metadane wykresu do wszystkich postów w witrynie, jednak kiedy próbuję wkleić link do posta na Facebooku, metadane wykresu nie są ładowane.
Następnie, kiedy wstawiam adres URL do debuggera / lintera , działa zarówno w debugerze, jak i podczas normalnego publikowania na Facebooku (co nie działało chwilę wcześniej).
Wydaje się, że ten problem został rozwiązany w przeszłości, w tym pytaniu dotyczącym przepełnienia stosu . Jednak to pytanie dotyczy środowiska Railsowego.
W tym pytaniu aplikacja nie mogła obsługiwać wielu żądań http w tym samym czasie. Problem został rozwiązany przez obsługę wszystkich żądań interfejsu API Facebooka w tle przy użyciu czegoś o nazwie delayed_response.
Jaki jest najprostszy sposób, w jaki mógłbym wykonać to lub coś podobnego w środowisku PHP z uruchomionym WordPressem i tym samym (miejmy nadzieję) rozwiązać mój problem?
** Nie zamieściłem przykładowego linku w tym poście ponieważ gdy tylko użytkownik uruchomi go przez debugger, będzie działać. *
Edycja – przykład metatagów ze strony posta:
<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 jest wstawiane do 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); }
Komentarze
- Jak czy dodałeś go i co dokładnie robisz, aby proaktywnie powiadamiać o tym Faceboka?
- Mam funkcję, która zapisuje w moim nagłówku if is_post (). ' edytuję swój post i dodam przykładowy fragment metadanych.
Odpowiedź
Po pierwsze, to nie jest „pytanie dotyczące WordPressa”, tylko pytanie na Facebooku.
Po drugie, Facebook zapisuje strony w pamięci podręcznej, nie indeksuje ich przy każdym zgłoszeniu. Jeśli masz Adres URL, który został już wcześniej przesłany do Facebooka, już raz przeszukali go w poszukiwaniu danych OG i zapisali w pamięci podręcznej. Jeśli później zmienisz dane OG, nie zauważą tego od razu, ponieważ tak ponowne pobieranie z pamięci podręcznej, a nie ze strony.
Facebook Debugger wymusza na robotach indeksujących pobieranie ze strony w czasie rzeczywistym, a tym samym aktualizuje pamięć podręczną.
To proste Naprawdę. Jeśli adres URL był kiedykolwiek wcześniej opublikowany na Facebooku, zmiana danych OG na nim nie przyniesie natychmiastowego efektu. Zajmie to kilka tygodni, zanim FB powiadomi o tym. Użycie debugera ma pierwszeństwo przed tym.
Komentarze
- Dziękuję, ' poczekaj. Opublikowałem to pytanie w WordPress, ponieważ zastanawiałem się, czy istnieje najlepszy sposób obsługi żądań interfejsu API Facebooka w tle w środowisku WordPress, to powiedziawszy, twój punkt widzenia jest całkowicie sprawiedliwy i odpowiedź ma sens. Dziękuję.
Odpowiedź
Miałem ten sam problem. Musisz tylko powiedzieć Facebook, aby ponownie zeskrobać zawartość.
Przejdź do tego linku: https://developers.facebook.com/tools/debug/sharing/ i podłącz adres URL w. Po powrocie debugera powinien pojawić się przycisk z napisem „zeskrob ponownie”. Kliknij go.
Po wykonaniu tej czynności informacje pojawiły się normalnie na Facebooku.
Jestem pewien, że istnieje bardziej bezpośredni sposób poinformowania Facebooka, aby ponownie zeskrobał Twoje treści, ale to też działa.
Komentarze
- Świetnie! Tej opcji nie było w rzeczywistości ' w oryginalnym linterze URL Facebooka w momencie, gdy publikowałem to pytanie. Dobrze wiedzieć, że ' jest tam teraz.