Я создаю "Поделиться этой страницей" - виджет, который должен захватить текущий URL и добавить его к URL-адресу Facebook следующим образом:
http://www.facebook.com/sharer.php?u=http://myurl.com/a-specific-page
Я использую обычный текстовый виджет. Как я могу получить доступ к текущему URL и вставить его в ссылку для обмена?
@ user653 правильно, вы не можете сделать это в текстовом виджете с помощью PHP, но вы можете сделать это в текстовом виджете, используя JQuery / Javascript. Вот как.
Я предполагаю, что вы планируете использовать кнопку Facebook Share и, таким образом, в вашем виджете будет HTML-код, который будет выглядеть следующим образом?
<a name="fb_share"></a>
<script src="http://static.ak.fbcdn.net/connect.php/js/FB.Share"
type="text/javascript">
</script>
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, и добавить следующую строку кода в functions.php
вашей темы (если какой-либо другой плагин уже не делает этого):
wp_enqueue_script('jquery');
По иронии судьбы только что я реализовал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}&layout=button_count&show_faces=false&width=60&action=like&font=verdana&colorscheme=light&height=21&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.
Надеюсь это поможет!
Просто используйте переменные $ _SERVER:
$url = add_query_arg( 'u', $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"], 'http://www.facebook.com/sharer.php' );
Вы не можете сделать содержимое текстового виджета таким динамическим. Получить, например, "Исполняемый 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)); ?>&layout=standard&show_faces=false&width=450&action=like&colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:60px;"></iframe>
Вот полный код для вас:
<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>