En av de stora anledningarna till att WordPress har erövrat CMS-världen är dess extrema funktionalitet. Med hjälp av lite enkla hacks kan du trycka upp ditt tema yttligare en nivå.

Lista de populäraste inläggen

Vill du lista dina populäraste inlägg utan att använda något plugin finns det ett väldigt enkelt sätt att göra det på.

<ul>
<?php  $result = $wpdb->get_results("SELECT comment_count,ID,post_title FROM $wpdb->posts ORDER BY comment_count DESC LIMIT 0 , 5");
foreach ($result as $post) {
setup_postdata($post);
$postid = $post->ID;
$title = $post->post_title;
$commentcount = $post->comment_count;
if ($commentcount != 0) { ?>
<li><a href="<?php echo get_permalink($postid); ?>" title="<?php echo $title ?>">

<?php echo $title ?></a> (})</li>
<?php } } ?>
</ul>
?>

Vi hämtar helt enkelt de fem inlägg med flest kommentarer, vilket torde vara de populäraste(eller i alla fall de mest intressanta) och skriver ut dom i en lista, perfekt att använda i en widget.

Flera Widget-paneler

Vill du ha fler än ett widget-område på din wordpress-blogg, exempelvis en i sidebaren och en i footern är det enkelt att lägga till. Öppna upp din functions.php(eller skapa en i din tema-mapp) och lägg till följande:

<?php
if ( function_exists('register_sidebar') )
 register_sidebar(array('name'=>'Sidebar', //  Detta område heter nu Sidebar
'before_widget' => '<li>',
'after_widget' => '</li>',
'before_title' => '<h3>',
'after_title' => '</h3>',
    ));
 if ( function_exists('register_sidebar') )
 register_sidebar(array('name'=>'Footer', // Och detta heter Footer
'before_widget' => '<li>',
'after_widget' => '</li>',
'before_title' => '<h3>',
'after_title' => '</h3>',
));
?>

Nu måste vi hänvisa till dem i sidebar.php samt footer.php också:


sidebar.php

<?php
if ( !function_exists('dynamic_sidebar')
|| !dynamic_sidebar('Sidebar') ) : ?>
// Här kommer alla widgets
<?php endif; ?>

footer.php

<?php
if ( !function_exists('dynamic_sidebar')
|| !dynamic_sidebar('Footer') ) : ?>
// Här kommer alla widgets
<?php endif; ?>

Sådär, superenkelt. När du nu går in på widgets i admin-delen kommer du ha två olika fält att välja mellan.

Anpassa sidan till användarens webbläsare

Med hjälp av wordpress inbyggda webbläsardetektor kan vi enkelt ändra body-klassen och således anpassa våran blogg till användarens webbläsare(hej IE6). Lägg till följande kod i functions.php:

<?php
add_filter('body_class','browser_body_class');
function browser_body_class($classes) {
	global $is_lynx, $is_gecko, $is_IE, $is_opera, $is_NS4, $is_safari, $is_chrome, $is_iphone;

	if($is_lynx) $classes[] = 'lynx';
	elseif($is_gecko) $classes[] = 'gecko';
	elseif($is_opera) $classes[] = 'opera';
	elseif($is_NS4) $classes[] = 'ns4';
	elseif($is_safari) $classes[] = 'safari';
	elseif($is_chrome) $classes[] = 'chrome';
	elseif($is_IE) $classes[] = 'ie';
	else $classes[] = 'unknown';

	if($is_iphone) $classes[] = 'iphone';
	return $classes;
}
?>

Det vi gör sen är att lägga till ett filter(ännu en fantastisk funktion i WP) som set till att namnet på användarens webbläsare hamnas som klass i body-taggen. Detta förutsätter att vi använder body_class()-funktionen.

<body <?php body_class() ?>>

Din egen logga i admin-sektionen

Varför inte ha din egen logga istället för wordpress-loggan i admin-sektionen? Detta kanske framförallt om du gör en hemsida åt ett företag eller dylikt.

Lägg till följande i functions.php:

<?php
add_action('admin_head', 'min_logga');
function min_logga() {
   echo '
      <style type="text/css">
         #header-logo { background-image: url('.get_bloginfo('template_directory').'/images/admin-logga.png) !important; }
      </style>
   ';
}
?>

Använd olika sidebars

Om du har behovet att behöva ha olika sidebars för olika sorters inlägg finns det en bra lösning för detta. Lägg till ett eget fält som du döper till sidebar där du sedan kan specifiera vilken sidebar du vill använda. Låt oss säga att du vill ha en sidebar till en blogg och en till artiklar. Kopiera då din sidebar.php och döp den ena till sidebar-blogg.php och den andra till sidebar-artiklar.php. Lägg till följande i single.php

<?php
$sidebar = get_post_meta($post->ID, "sidebar", true);
get_sidebar($sidebar);
?>

Fyller du nu i artiklar i ditt egna fält, kommer wordpress automatiskt lägga till sidebar-artiklar.php.

Separera kommentarer från trackbacks

Trackbacks är en bra funktion, trots detta är det väldigt jobbigt för användaren som läser kommentarerna att då och då stöta på dessa länkar. För att separera dessa kan du ändra om lite i comments.php.

Leta upp:

foreach ($comments as $comment) : ?>
    // Comments are displayed here
endforeach;
?>

och byt ut det mot:

<ul class="commentlist">
    <?php //Displays comments only
	foreach ($comments as $comment) : ?>
       	<?php $comment_type = get_comment_type(); ?>
       	<?php if($comment_type == 'comment') { ?>
	    <li>//Comment code goes here

	<?php }
    endforeach;
</ul>

<ul>
    <?php //Displays trackbacks only
	foreach ($comments as $comment) : ?>
       	<?php $comment_type = get_comment_type(); ?>
       	<?php if($comment_type != 'comment') { ?>
	    <li><?php comment_author_link() ?>

	<?php }
    endforeach;
</ul>