Intereting Posts
Каков правильный способ интеграции wordpress с другим php-приложением? Автоматическое отключение через X минут Как создать плагин, который включает в себя все другие плагины? Настройка контактной формы db-плагина Преобразование всех ссылок на YouTube для встраивания Задержка переключения HyperDB Как отменить навигацию в конце сообщения Какой лучший плагин Captcha для регистрации? CPT: если в столбце больше X изображений, используйте разбиение на страницы Установите сжатие JPEG для определенных размеров пользовательских изображений Почему сообщения WordPress Importer не обновляются? Я бы хотел, чтобы single.php действовал так же, как index.php Как играть в видео без использования плагина? Отображение «измененной даты» в WordPress Двадцать четырнадцать Как отобразить открытый профиль пользователя с двумя дополнительными полями? (Включая исходный код GitHub)

Доступ к текущему 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>