1

这是我希望用户能够分享的网址:http: //dealsfortherich.com/product/6379316

所以我的应用程序(PHP)构造了这个 URL:

https://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Fdealsfortherich.com%2Fproduct%2F6379316

如果您查看该链接,您将看到产品编号已被截断。Sharer.php 忽略斜杠后的数字 (%2F) 如果我将该数字设为字母数字,它可以工作:

https://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Fdealsfortherich.com%2Fproduct%2F6379316X

https://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Fdealsfortherich.com%2Fproduct%2FX6379316https://www.facebook.com/sharer/sharer.php?u =http%3A%2F%2Fdealsfortherich.com%2Fproduct%2F637X9316

添加尾部斜杠没有帮助: https ://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Fdealsfortherich.com%2Fproduct%2F6379316%2F

显然,我可以在我的应用程序中编写一个条件来处理如下网址: http ://dealsfortherich.com/product/6379316X 但是就搜索引擎而言,我已经复制了内容。

我应该放弃而不使用sharer.php吗?

4

1 回答 1

0

弄清楚了!问题是facebook没有抓取页面: http ://dealsfortherich.com/product/6379316

facebook 对象调试器显示刮板正在看到一个规范名称: http ://dealsfortherich.com/product/

即使我发布了以下内容,这种情况仍在发生:

remove_action('wp_head', 'rel_canonical'); 

在调用 wordpress 的 get_header()(它又调用 wp_head())之前,它应该删除了错误的规范链接。

问题是过滤器 fb_meta_tags(来自插件)在我认为我设置的 OG 标签之前添加了一堆 OG 标签!果然,设置的标签之一是:

<meta property="http://ogp.me/ns#url" content="http://dealsfortherich.com/product/" />

这就是我在调用 get_header() 之前在我的 php 中解决它的方法:

add_filter( 'fb_meta_tags', 'remove_og_tags' );
function remove_og_tags( $meta_tags )
{
  $meta_tags['http://ogp.me/ns/fb#app_id'] = null;
  $meta_tags['http://ogp.me/ns#type'] = null;
  $meta_tags['http://ogp.me/ns#title'] = null;
  $meta_tags['http://ogp.me/ns#image'] = null;
  $meta_tags['http://ogp.me/ns#description'] = null;
  $meta_tags['http://ogp.me/ns#url'] = null;
  return $meta_tags;
}

这可以防止在我添加我的之前添加错误的 OG 标签:

<link rel="canonical" href="<?php echo $page_path; ?>"/>
<meta property="fb:app_id" content="xxxxxxxxxxxxx" /> 
<meta property="og:type" content="product" /> 
<meta property="og:title" content="<?php echo $the_title; ?>" /> 
<meta property="og:image" content="<?php echo $image_url; ?>" /> 
<meta property="og:description" content="<?php echo $tweet_text.$the_title; ?>" /> 
<meta property="http://ogp.me/ns#url" content="<?php echo $page_path; ?>"  />

现在一切都很顺利。

于 2013-01-01T09:27:06.647 回答