I WordPress 2.5 introducerades shortcodes men det är nog många som fortfarande inte vet riktigt vad det är och vad man kan använda det till.
Shortcodes tillåter dig exempelvis att skriva [gallery] direkt i ett blogginlägg, och så visas alla bilder som hör till det inlägget som en liten kontaktkarta.
Man kan givetvis definiera egna shortcodes, genom att skriva en funktion i ett plugin eller i functions.php och sen koppla en shortcode till den funktionen.
Exempel 1
function bloginfo_shortcode( $atts ) { extract(shortcode_atts(array( 'key' => '', ), $atts)); return get_bloginfo($key); } add_shortcode('bloginfo', 'bloginfo_shortcode');
Funktionen add_shortcode registrerar en ny shortcode, och i exemplet ovan betyder det att om man skriver [bloginfo] i ett inlägg, så kommer funktionen bloginfo_shortcode() att anropas. Just i det här exemplet ska man dessutom skicka med en parameter, det ser ut så här: [bloginfo key=”template_url”]
(Exemplet kommer från Blue Anvil)
Exempel 2
Jag har i ett tidigare inlägg visat hur man kan koppla en spotifylista till en wordpress-post, en metod som jag använder på http://topp30.se.
Jag vill utnyttja det faktum att listorna nu ligger som egna fält, och skapa en sida med alla spotifylistor i en lång (nåja) HTML-lista.
Steg ett är att definiera en funktion som hämtar alla inlägg med ”spotify-fält” och sen generera en lista av dem.
Nästa steg är att koppla en shortcode till den funktionen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | // [spotifylist] - shortcode function
function spotify_sc_func($atts) {
ob_start();
?>
<ul id="spotifylist">
<?php
global $wpdb, $post;
$querystr = "
SELECT wposts.*
FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta
WHERE wposts.ID = wpostmeta.post_id
AND wpostmeta.meta_key = 'spotify'
AND wposts.post_status = 'publish'
AND wposts.post_date < NOW()
ORDER BY wposts.post_type, wposts.post_date DESC
";
$pageposts = $wpdb->get_results($querystr, OBJECT);
?>
<?php if ($pageposts): ?>
<?php foreach ($pageposts as $post): ?>
<?php setup_postdata($post); ?>
<?php $spotify = get_post_custom_values("spotify"); ?>
<li><?php echo the_title(); ?>: <a href='<?php echo $spotify[0]; ?>'>spotify</a> | <a href="<?php the_permalink(); ?>">text</a></li>
<?php endforeach; ?>
<?php else : ?>
<h2 class="center">Not Found</h2>
<p class="center">Sorry, but you are looking for something that isn't here.</p>
<?php endif; ?>
</ul>
<?php
$output = ob_get_contents();
ob_end_clean();
return $output;
}
add_shortcode('spotifylist', 'spotify_sc_func'); |
Nu återstår bara att skapa en sida som använder vår nya shortcode.

Och resultatet ser blir det här
Läs också Mastering WordPress Shortcodes på Smashing Magazine.

















