it-swarm-ru.tech

Доступ к текущему URL в текстовом виджете для кнопки "Поделиться" на Facebook?

Я создаю "Поделиться этой страницей" - виджет, который должен захватить текущий URL и добавить его к URL-адресу Facebook следующим образом:

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

Я использую обычный текстовый виджет. Как я могу получить доступ к текущему URL и вставить его в ссылку для обмена?

2
Rikard

@ user653 правильно, вы не можете сделать это в текстовом виджете с помощью PHP, но вы можете сделать это в текстовом виджете, используя JQuery / Javascript. Вот как.

Начиная с кнопки "Поделиться" в Facebook

Я предполагаю, что вы планируете использовать кнопку Facebook Share и, таким образом, в вашем виджете будет 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>

Не забудьте поставить в очередь jQuery в файле functions.php вашей темы

Однако для того, чтобы вышеуказанный код работал, вам, вероятно, потребуется поставить в очередь включенный скрипт jQuery, поставляемый в комплекте с WordPress, и добавить следующую строку кода в functions.php вашей темы (если какой-либо другой плагин уже не делает этого):

wp_enqueue_script('jquery');

Кнопка "Мне нравится" в Facebook как шорткод WordPress

По иронии судьбы только что я реализовалFacebook Like Buttonкак Shortcode несколько дней назад для клиента, поэтому я подумал, что я также поделиться с вами (каламбур) предназначен.;) Вы можете увидеть, как мы получили текущий URL из переменной $_SERVER. Я получил этот точный код из функции redirect_canonical() в /wp-includes/canonical.php'. Вы также можете просто включить это в файл 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 Share или Like. 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