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?
@ 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.
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>
Javascript's windows.location
object.propertyWenn 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>
functions.php
-Datei Ihres Themas einreihenDamit 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');
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}&layout=button_count&show_faces=false&width=60&action=like&font=verdana&colorscheme=light&height=21&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;
}
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.
Hoffe das hilft!
Verwenden Sie einfach die Variablen $ _SERVER:
$url = add_query_arg( 'u', $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"], 'http://www.facebook.com/sharer.php' );
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)); ?>&layout=standard&show_faces=false&width=450&action=like&colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:60px;"></iframe>
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>