web-dev-qa-db-fra.com

Accéder à l'URL actuelle dans un widget texte pour un bouton de partage Facebook?

Je crée un "Partager cette page" - widget qui doit récupérer l'URL actuelle et ajoutez-le à une URL Facebook comme ceci:

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

J'utilise un widget texte normal. Comment puis-je accéder à l'URL actuelle et la placer dans le lien de partage?

2
Rikard

@ user653 est correct, vous ne pouvez pas le faire dans un widget texte avec PHP mais vous pouvez le faire dans un widget texte en utilisant JQuery /Javascript. Voici comment.

À partir du bouton de partage Facebook HTML

Je suppose que vous prévoyez d'utiliser le bouton de partage Facebook et que vous aurez ainsi du code HTML dans votre widget. ça va ressembler à ça?

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

Utilisez jQuery et Javascript's windows.location object.property

Si oui, vous pouvez simplement ajouter tout le code suivant dans votre 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>

Assurez-vous de mettre en file d'attente jQuery dans le fichier functions.php de votre thème.

Cependant, pour que le code ci-dessus fonctionne, vous devrez probablement mettre en file d'attente le script jQuery inclus avec WordPress, ajoutez la ligne de code suivante dans le functions.php de votre thème (à moins qu'un autre plugin ne le fasse déjà):

wp_enqueue_script('jquery');

Facebook Like Button comme un shortcode WordPress

Ironiquement, j'ai implémenté un bouton Facebook Like en tant que Shortcode il y a quelques jours pour un client, je pensais donc que je partagerais aussi avec vous (jeu de mots voulu;;). Vous pouvez voir comment nous avons obtenu les informations actuelles. URL de la variable $_SERVER. J'ai effacé ce code exact de la fonction redirect_canonical() dans /wp-includes/canonical.php'. Vous pouvez aussi simplement inclure ceci dans le fichier functions.php de votre thème:

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

À quoi il ressemble

Voici une capture d'écran montrant l'utilisation. Notez que puisque les widgets de texte ne traitent pas les filtres de contenu , le shortcode ne fonctionne donc pas dans un widget de texte. J'ai regardé rapidement et je n'ai pas trouvé de plug-in qui ajoute des widgets de texte pouvant traiter des codes abrégés, mais il ne serait pas difficile d'en écrire un, ou difficile d'écrire un widget qui ajoute simplement un bouton Facebook Partager ou un bouton J'aime. FWIW.

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

J'espère que cela t'aides!

3
MikeSchinkel

Utilisez simplement les variables $ _SERVER:

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

Vous ne pouvez pas rendre le contenu d'un widget de texte aussi dynamique. Obtenez par exemple "Widget Executable PHP" (http://wordpress.org/extend/plugins/php-code-widget/). Maintenant, vous pouvez ajouter votre texte, etc., y compris le code php pour insérer la variable URL.

[edit] Réf http://developers.facebook.com/docs/reference/plugins/like . Mettez ceci dans votre code php supportant le widget :

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

Voici un code complet pour vous:

<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