it-swarm-es.com

¿Accediendo a la URL actual en un widget de texto para un botón de compartir de Facebook?

Estoy creando un"Compartir esta página"- widget que necesita para capturar la URL actual y adjuntarla a una URL de Facebook como esta:

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

Estoy usando un widget de texto regular. ¿Cómo puedo acceder a la URL actual y ponerla en el enlace para compartir?

2
Rikard

@ user653 es correcto, no puede hacerlo en un widget de texto con PHP pero puede hacerlo en un widget de texto usando JQuery / Javascript. Así es cómo.

Comenzando con el botón de compartir de Facebook HTML

Supongo que planea usar el botón Facebook Share y, por lo tanto, ¿tendrá un código HTML en su widget que se verá así?

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

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

En caso afirmativo, puedesimplemente agregar todo el siguiente códigoa su 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>

Asegúrese de poner en cola jQuery en el archivo functions.php de su tema

Sin embargo, para que el código anterior funcione, probablemente deba poner en cola el script jQuery incluido con WordPress, agregue la siguiente línea de código en el functions.php de su tema (a menos que algún otro complemento lo esté haciendo):

wp_enqueue_script('jquery');

Facebook Me gusta el botón como un código corto de WordPress

Irónicamente, solo implementé unFacebook Like Buttonas a Shortcode Hace unos días para un cliente, así que pensé que también compartir con usted (juego de palabras;;) Puede ver cómo obtuvimos la URL actual de la variable $_SERVER. Asfixié este código exacto de la función redirect_canonical() en /wp-includes/canonical.php'. También puedes incluir esto en el archivo functions.php de tu 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;
}

Lo que parece

Aquí hay una captura de pantalla que muestra el uso. Tenga en cuenta que, dado que los widgets de texto no procesan los filtros de contenido , el código abreviado no funciona en un widget de texto. Busqué rápidamente y no encontré un complemento que agregue widgets de texto que puedan procesar códigos cortos, pero no sería difícil escribir uno, o difícil escribir un widget que simplemente agregue un botón Compartir o Me gusta de Facebook. FWIW.

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

¡Espero que esto ayude!

3
MikeSchinkel

Solo usa las variables $ _SERVER:

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

No se puede hacer que el contenido de un widget de texto sea tan dinámico. Obtenga "Executable PHP widget" (http://wordpress.org/extend/plugins/php-code-widget/), por ejemplo. Ahora puede agregar su texto, etc., incluido el código php para insertar la URL variable.

[editar] Ref http://developers.facebook.com/docs/reference/plugins/like . Ponga esto en su códigophp compatible conwidget:

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

Aquí hay un código completo para usted:

<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