Intereting Posts
Добавить блог на домашнюю страницу WP Вручную Пользовательский запрос пользователя – orderby meta_key (возможно, не существует) Как правильно подготовить инструкцию% LIKE% SQL? Я не могу включить файл на странице настроек плагина изменение меню имен разделов темы темы – двадцатьeleven Установить статическую страницу / сообщение из другого блога в той же сети Как получить данные пользователя в функции обратного вызова для pre_user_nicename? Можем ли мы начать сеанс с другого сайта php на сайт блога wordpress? get_page_by_title () ничего не возвращает Как перевести эту строку – вопрос синтаксиса PHP `tinyMCE не определен` после переноса сайта на сервер Проблема, возникшая при попытке сохранить приватный веб-сайт Защита wp-config приводит к утечке конфиденциальной информации по wp-настройкам Использование логотипа во втором месте в двадцать семнадцать Ошибка CDATA для RSS-канала

Доступ к текущему URL-адресу в текстовом виджете для кнопки «Facebook»?

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

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

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

Solutions Collecting From Web of "Доступ к текущему URL-адресу в текстовом виджете для кнопки «Facebook»?"

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

Начиная с Facebook Share Button HTML

Я предполагаю, что вы планируете использовать кнопку 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 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 в качестве короткого кода несколько дней назад для клиента, поэтому я решил поделиться с вами (каламбур.). Вы можете видеть, как мы получили текущий 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, показывающий Facebook как и кнопки в виде коротких кодов и текстовых виджетов

Надеюсь это поможет!

Просто используйте переменные $ _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-адрес переменной.

[edit] Ref http://developers.facebook.com/docs/reference/plugins/like . Поместите это в свой php-код, поддерживающий виджет:

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

Вот вам полный код:

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