it-swarm.cn

访问Facebook共享按钮的文本小部件中的当前URL?

我正在创建一个“共享此页面” - 需要 抓取当前URL的小部件 并将其附加到这样的Facebook URL:

http://www.facebook.com/sharer.php?u=http://myurl.com/a-specific-page

我正在使用常规文本小部件。如何访问当前URL并将其放入共享链接?

2
Rikard

@ user653 是正确的,您不能在带有PHP的文本小部件中执行此操作,但您可以使用 JQuery 在文本小部件中执行此操作/ JavaScript的。这是如何做。

从Facebook Share Button HTML开始

我假设您打算使用 Facebook Share Button 因此在您的小部件中将包含HTML代码,如下所示?

<a name="fb_share"></a>
<script src="http://static.ak.fbcdn.net/connect.php/js/FB.Share"
        type="text/javascript">
</script>

使用jQuery和Javascript's windows.location object.property

如果是,那么您可以只需添加以下所有代码进入您的小部件:

<script type="text/javascript">
jQuery(document).ready(function($) {
  $("fb_share").attr("share_url") = encodeURIComponent(window.location);
});
</script>
<a name="fb_share"></a><script src="http://static.ak.fbcdn.net/connect.php/js/FB.Share" type="text/javascript">
</script>

一定要在主题的functions.php文件中排队jQuery

但是,为了使上述代码能够工作,您可能需要将包含在WordPress中的jQuery脚本排入队列中,将以下代码行添加到主题的functions.php中(除非其他一些插件已经这样做了):

wp_enqueue_script('jquery');

Facebook喜欢按钮作为WordPress短代码

具有讽刺意味的是,我只是实施了一个Facebook Like Button作为 短代码 几天前为客户实现,所以我想我也会 分享 与你(双关语)意图。;)您可以看到我们如何从$_SERVER变量获取当前URL。我从/wp-includes/canonical.php'中的redirect_canonical()函数中删除了这个确切的代码。您也可以在主题的functions.php文件中包含它:

add_shortcode('facebook-like','my_facebook_like_button');
function my_facebook_like_button($echo=true) {
  // Generate the HTML required to place a Facebook "Like" button inside a shortcode
  // See Docs: http://developers.facebook.com/docs/reference/plugins/like
  $requested_url  = is_ssl() ? 'https://' : 'http://';
  $requested_url .= $_SERVER['HTTP_Host'];
  $requested_url .= $_SERVER['REQUEST_URI'];  
  $html =<<<HTML
<iframe src="http://www.facebook.com/plugins/like.php?href={$requested_url}&amp;layout=button_count&amp;show_faces=false&amp;width=60&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21&amp;ref=blog"
        scrolling="no" frameborder="0"  allowTransparency="true" style="border:none; overflow:hidden; width:90px; height:25px"></iframe>
HTML;
  if ($echo)
    echo $html;
  else
    return $html;
}

它看起来像什么

这是一个显示用法的屏幕截图。请注意,由于文本小部件 不处理内容过滤器 因此短代码在文本小部件中不起作用。我看起来很快,并没有找到添加可以处理短代码的文本小部件的插件,但是编写一个或者很难编写仅添加Facebook共享或类似按钮的小部件也不难。 FWIW。

WordPress Site Screenshot showing Facebook Like and Buttons as Shortcodes and in Text Widgets

希望这可以帮助!

3
MikeSchinkel

只需使用$ _SERVER变量:

$url = add_query_arg( 'u', $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"], 'http://www.facebook.com/sharer.php' );
2
Joe Hoyle

您无法使文本窗口小部件的内容动态化。例如,获取“可执行PHP小部件”(http://wordpress.org/extend/plugins/php-code-widget/)。现在你可以添加你的文本等包括php代码来插入变量URL。

[编辑]参考 http://developers.facebook.com/docs/reference/plugins/like 。把它放到你的 php代码支持 widget:

  <?php global $post; ?>
<iframe src="http://www.facebook.com/plugins/like.php?href=<?php echo urlencode(get_permalink($post->ID)); ?>&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;action=like&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:60px;"></iframe>
1
Peter

这里有一些完整的代码:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js" type="text/javascript"></script>

<a href="http://Twitter.com/share" class="Twitter-share-button" data-url="" data-count="vertical" data-via="arkliapp">Tweet</a>
<script type="text/javascript" src="http://platform.Twitter.com/widgets.js"></script>
<script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script><fb:like id="fb_like" href="" layout="box_count" show_faces="true" width="55" font=""></fb:like>

<script type="text/javascript">
jQuery(document).ready(function($) {
$("#fb_like").attr("href") = encodeURIComponent(window.location);
$(".Twitter-share-button").attr("data-url") = encodeURLComponent(window.location);
});
</script>
0
Mike Potter