it-swarm-pt.tech

Acessando o URL atual em um widget de texto para um botão de compartilhamento do Facebook?

Estou criando um widget"Compartilhar esta página"- que precisa pegar o URL atual e anexá-lo a um URL do Facebook como este:

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

Estou usando um widget de texto normal. Como posso acessar o URL atual e colocá-lo no link de compartilhamento?

2
Rikard

@ user653 está correto, você não pode fazê-lo em um widget de texto com PHP mas você pode fazê-lo em um widget de texto usando JQuery / Javascript. Veja como.

Começando com o HTML do botão de compartilhamento do Facebook

Eu suponho que você pretende usar o Facebook Share Button e assim terá código HTML no seu widget que ficará assim?

<a name="fb_share"></a>
<script src="http://static.ak.fbcdn.net/connect.php/js/FB.Share"
        type="text/javascript">
</script>

Use jQuery e Javascript's windows.location object.property

Se sim, então você podeapenas adicionar todo o seguinte códigono seu widget:

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

Certifique-se de Enfileirar jQuery no arquivo functions.php do seu tema

No entanto, para que o código acima funcione, você provavelmente precisará enfileirar o script jQuery incluído no WordPress e adicionar a seguinte linha de código ao functions.php do seu tema (a menos que algum outro plugin já esteja fazendo isso):

wp_enqueue_script('jquery');

Facebook como botão como um shortcode WordPress

Ironicamente eu apenas implementei umBotão Curtir do Facebookcomo Shortcode alguns dias atrás para um cliente, então eu pensei que eu também share with você (trocadilho.;) Você pode ver como conseguimos o URL atual da variável $_SERVER. Copiei esse código exato da função redirect_canonical() em /wp-includes/canonical.php'. Você também pode incluir isso no arquivo functions.php do seu tema:

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

O que isso parece

Aqui está uma captura de tela mostrando o uso. Observe que, como os widgets de texto não processam os filtros de conteúdo , portanto, o shortcode não funciona em um widget de texto. Eu olhei rapidamente e não encontrei um plugin que adiciona widgets de texto que podem processar códigos de acesso, mas não seria difícil escrever um, ou difícil de escrever um widget que adiciona apenas um botão Facebook Share ou Like. FWIW.

WordPress Site Screenshot showing Facebook Like and Buttons as Shortcodes and in Text Widgets

Espero que isto ajude!

3
MikeSchinkel

Apenas use as variáveis ​​$ _SERVER:

$url = add_query_arg( 'u', $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"], 'http://www.facebook.com/sharer.php' );
2
Joe Hoyle

Você não pode tornar o conteúdo de um widget de texto dinâmico assim. Obter "Executável PHP widget" (http://wordpress.org/extend/plugins/php-code-widget/), por exemplo. Agora você pode adicionar seu texto, incluindo o código php para inserir o URL da variável.

[edit] Ref http://developers.facebook.com/docs/reference/plugins/like . Coloque isso no seu códigophp suportandowidget:

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

Aqui está um código completo para você:

<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