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

2

Estoy creando un "Compartir esta página" : un widget que debe 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?

    
pregunta MikeSchinkel 01.09.2010 - 16:57

4 respuestas

3

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

Comenzando con el HTML del botón de compartir de Facebook

Supongo que planeas usar el Botón de compartir de Facebook y, por lo tanto, tendrá HTML código en tu 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>

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

Si es así, puedes simplemente agregar todo el siguiente código a tu 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úrate de poner en cola jQuery en el archivo functions.php de tu tema

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

wp_enqueue_script('jquery');

Botón Me gusta de Facebook como código corto de WordPress

Irónicamente, solo implementé un Botón Me gusta de Facebook como Shortcode hace unos días para un cliente, así que pensé que también lo compartiría contigo (juego de palabras;;) Puedes 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 puede incluir esto en el archivo functions.php de su 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;
}

Cómo se ve

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 , por lo que el código corto 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.

Espero que esto ayude!

    
respondido por el MikeSchinkel 01.09.2010 - 21:00
2

Solo usa las variables $ _SERVER:

$url = add_query_arg( 'u', $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"], 'http://www.facebook.com/sharer.php' );
    
respondido por el Joe Hoyle 01.09.2010 - 17:14
1

No se puede hacer que el contenido de un widget de texto sea tan dinámico. Obtenga "Widget PHP ejecutable" (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. enlace . Ponga esto en su código php de soporte :

  <?php global $post; ?>
<iframe src="http://www.facebook.com/plugins/like.php?href=<?phpechourlencode(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>
    
respondido por el Peter 01.09.2010 - 17:43
0

Aquí hay un código completo para ti:

<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><scriptsrc="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>
    
respondido por el Mike Potter 08.06.2011 - 16:42

Lea otras preguntas en las etiquetas