0

我正在尝试为我网站上特定类型的动态页面创建共享链接。该页面有一个基本模板,但随后它运行一个大型 PHP 脚本来解析 XML 以构建实际有用的内容。

典型的 facebook 分享或点赞似乎会拉取基本模板的标题和内容,而不是最终页面,这对我来说毫无用处,所以我发现这段代码创建了一个自定义分享链接,您可以在其中覆盖标题、描述、照片等:

            $title=urlencode($xml->pet->name . ' | DPA!');
            $url=urlencode($_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]);
            $summary=urlencode($xml->pet->name . ' is available for adoption.');
            $image=urlencode($thumbnail_photo);

            ?>
            <a onClick="window.open('http://www.facebook.com/sharer.php?s=100&amp;p[title]=<?php echo $title;?>&amp;p[summary]=<?php echo $summary;?>&amp;p[url]=<?php echo $url; ?>&amp;&amp;p[images][0]=<?php echo $image;?>','sharer','toolbar=0,status=0,width=548,height=325');" href="javascript: void(0)">Share on Facebook</a></div>
            <?php

这会根据需要拉出共享器窗口,其中包含正确的信息,但是当我去共享时,我收到此错误:

无法将消息发布到此墙

我的网站正在运行 Wordpress。谁能告诉我为什么会发生这个错误?

另请注意,我已尝试更改共享权限,尝试使用其他浏览器,甚至让我丈夫在他的计算机和帐户上尝试。

编辑:这是代码的来源:http ://www.daddydesign.com/wordpress/how-to-create-a-custom-facebook-share-button-for-your-iframe-tab/

编辑#2:有关更多信息,该页面是 Wordpress 中带有自定义模板的“页面”。该模板有一个占位符标题,即“基本标题”。页面上实际显示的标题是事后生成的,因为我必须先阅读 XML 才能找出标题是什么。我尝试过的所有典型的喜欢或分享代码都将“基本标题”作为我正在分享的页面的标题。他们也不会提取页面模板之外存在的内容中的任何图像或文本。因此,它们对我毫无用处。

编辑#3:我将一个示例 URL 放入 facebook 调试器工具并注意到一些奇怪的东西。在重定向部分下,原始 URL 是正确的,但“rel="canonical"” URL 是基本模板的 URL。原始 URL 有一个 HTML 参数,让 PHP 代码知道要获取什么 XML。“抓取的 URL”显示了没有提供参数时会发生什么。不知道这是否有帮助。

4

1 回答 1

1

端点已被sharer.php弃用一段时间。从我在 SO 上看到的情况来看,Facebook 现在似乎正在禁用它。你不应该依赖这个来工作。您的示例教程没有过时,但评论可以追溯到 2011 年 7 月。

Facebook Share 代码的当前实现解析目标页面上的元数据并使用该信息。

根据您的描述,听起来您get_header()在解析 XML 文件之前正在调用,并且您的“基本标题”显示在页面元数据中。你不能那样做。您必须先解析 XML,然后调用get_header(). 您header.php可能还必须进行自定义以从 XML 文件中获取正确的数据并使用它来生成元数据。

于 2012-09-30T21:22:03.327 回答