it-swarm.com.de

Zugreifen auf die aktuelle URL in einem Text-Widget für einen Facebook Share Button?

Ich erstelle ein "Share this Page" - Widget, das die aktuelle URL abrufen und an eine Facebook-URL anhängen muss:

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

Ich verwende ein normales Text-Widget. Wie kann ich auf die aktuelle URL zugreifen und sie in den Freigabelink einfügen?

2
Rikard

@ user653 ist korrekt, Sie können es nicht in einem Text-Widget mit PHP tun, aber Sie können es in einem Text-Widget mit JQuery / Javascript. Hier ist wie.

Beginnend mit dem Facebook Share Button HTML

Ich gehe davon aus, dass Sie beabsichtigen, den Facebook Share Button zu verwenden und daher HTML-Code in Ihrem Widget haben, der so aussieht?

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

Verwenden Sie jQuery und Javascript's windows.location object.property

Wenn ja, können Sie einfach den folgenden Code hinzufügen in Ihr 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>

Stellen Sie sicher, dass Sie jQuery in der functions.php-Datei Ihres Themas einreihen

Damit der obige Code funktioniert, müssen Sie wahrscheinlich das in WordPress enthaltene jQuery-Skript in die Warteschlange einreihen. Fügen Sie jedoch die folgende Codezeile in den functions.php Ihres Themas ein (es sei denn, ein anderes Plugin tut dies bereits):

wp_enqueue_script('jquery');

Facebook Like Button als WordPress Shortcode

Ironischerweise habe ich vor ein paar Tagen einenFacebook Like Buttonals Shortcode für einen Kunden implementiert, also dachte ich, ich würde auch share mit dir (pun beabsichtigt.;) Sie können sehen, wie wir die aktuelle URL aus der Variablen $_SERVER erhalten haben. Ich habe genau diesen Code aus der Funktion redirect_canonical() in /wp-includes/canonical.php' entfernt. Sie können dies auch einfach in die functions.php-Datei Ihres Themas aufnehmen:

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

Wie es aussieht

Hier ist ein Screenshot, der die Verwendung zeigt. Da Text-Widgets die Inhaltsfilter nicht verarbeiten funktioniert der Shortcode in einem Text-Widget nicht. Ich habe schnell gesucht und kein Plugin gefunden, das Text-Widgets hinzufügt, die Shortcodes verarbeiten können, aber es wäre nicht schwierig, eines zu schreiben, oder ein Widget, das nur Facebook Share- oder Like-Buttons hinzufügt. FWIW.

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

Hoffe das hilft!

3
MikeSchinkel

Verwenden Sie einfach die Variablen $ _SERVER:

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

Sie können den Inhalt eines Text-Widgets nicht so dynamisch gestalten. Holen Sie sich zum Beispiel "Executable PHP widget" (http://wordpress.org/extend/plugins/php-code-widget/). Jetzt können Sie Ihren Text usw. einschließlich PHP-Code hinzufügen, um die variable URL einzufügen.

[edit] Ref http://developers.facebook.com/docs/reference/plugins/like . Fügen Sie dies in Ihren PHP-Code ein, der Widget unterstützt:

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

Hier ist ein vollständiger Code für Sie:

<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