web-dev-qa-db-ja.com

Facebook共有ボタンのテキストウィジェットの現在のURLにアクセスする

"このページを共有する" - 現在のURLを取得する にする必要があるウィジェットを作成しています。

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

私は通常のテキストウィジェットを使っています。現在のURLにアクセスして共有リンクに配置するにはどうすればよいですか。

2
Rikard

@ user653は正しいです。PHPを使用してテキストウィジェットで実行することはできませんが、 -を使用してテキストウィジェットで実行できますJQuery /Javascript。方法は次のとおりです。

Facebook共有ボタン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');

WordPressショートコードとしてのFacebook Likeボタン

皮肉なことに、クライアントに対してFacebook Like ButtonShortcode として実装したので、私もshare(punpun。;)現在のURLの取得方法は、$_SERVER変数から確認できます。 /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

テキストウィジェットのコンテンツをそのように動的にすることはできません。たとえば、 "Executable PHP widget"(http://wordpress.org/extend/plugins/php-code-widget/)を入手してください。これで、可変URLを挿入するためのphpコードを含むテキストなどを追加できます。

[編集]参照 http://developers.facebook.com/docs/reference/plugins/like 。これをあなたのphp code supportウィジェットに入れてください:

  <?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