You may want to put some text here

Handige WordPress snippets voor programmeurs

In dit artikel zal ik enkele van mijn PHP snippets laten zien die wel eens handig kunnen zijn tijdens het maken van WordPress templates. Het handigste is als je dit artikel afprint of in de favorieten van je browser zet. Zo heb je dit artikel altijd bij de hand als je nog eens een nieuwe WordPress template gaat maken. Ik heb in ieder geval al heel wat uurtjes zoekwerk kunnen besparen door gebruik te maken van deze snippets.

1. Parent categorie ophalen

Met deze snippet haal je de hoofdcategorie van een bericht op. Stel dat je een categorie structuur hebt als: Programmeren > PHP, en je hebt het artikel onder de categorie PHP staan, dan zal dit script Programmeren teruggeven.

$category = (get_the_category());
$curr_category = $category[0];
while($curr_category->category_parent != 0){
	$curr_category = get_category($curr_category->category_parent);
}

De variable $curr_category bevat nu de naam van de hoofdcategorie.

2. Artikel/Reactie bewerken link

Een zeer korte maar zeker niet nutteloze snippet is de volgende.

<?php edit_post_link("bewerk artikel"); ?>

Deze snippet toont een link aan ingelogde bezoekers, die als je erop klikt de gebruiker de mogelijkheid geeft om het artikel te bewerken. Een gelijkaardige snippet heb je voor het bewerken van reacties.

<?php edit_comment_link("bewerk reactie"); ?> 

3. Gebruikersnaam weergeven

Deze snippet toont de naam van de huidige gebruiker.

global $current_user;
get_currentuserinfo();
echo $current_user->display_name;

Het is mogelijk om deze code zo te gebruiken, maar handig is dit zeker niet. Daarom is het beter om een extra functie hiervoor aan te maken in je functions.php bestand. Dit bestand vindt je onder wp-content/themes/[theme-naam]/functions.php. Als dit bestand nog niet bestaat dan maak je dit aan. Open functions.php en voeg onderaan dit bestand de volgende functie toe.

function get_user_name()
{
    global $current_user;
    get_currentuserinfo();
    return $current_user->display_name;
}

Slaag dit bestand op en nu kan je in het vervolg in je template gebruik maken van:

<?php echo get_user_name(); ?>

om de gebruikersnaam van de huidige gebruiker te tonen.

4. Gebruikersniveau

In WordPress kan je een “role” geven aan verschillende gebruikers. Dit kan bijvoorbeeld administrator, author, subscriber, … zijn. Deze snippet geeft terug wat de role van de huidig ingelogde gebruiker is.
Deze functie voeg je ook weer toe aan functions.php, zoals je met de vorige snippet deed.

function get_user_level(){
    global $user_level;
    get_currentuserinfo() ;
    return $user_level;
}

5. Lijst van afbeeldingen in een artikel

Deze functie geef je als parameter een tekst mee en hij zal een array teruggeven met als inhoud alle afbeeldingen die voorkomen in die tekst. Voeg deze functie ook weer toe aan het functions.php bestand.

function get_images($string){
	$images = array();
	preg_match_all('/(img|src)=("|')[^"'>]+/i', $string, $media);
	$data=preg_replace('/(img|src)("|'|="|=')(.*)/i',"$3",$media[0]);
	foreach($data as $url)
	{
		$info = pathinfo($url);
		if (isset($info['extension']))
		{
			if (($info['extension'] == 'jpg') ||
			($info['extension'] == 'jpeg') ||
			($info['extension'] == 'gif') ||
			($info['extension'] == 'png'))
			array_push($images, $url);
		}
	}
	return $images;
}

6. the_content() in een variable

Zoals je mischien wel weet is het zo dat als je de functie the_content() aanroept, dat de inhoud van het artikel meteen getoond wordt.

Als je nu de inhoud van dit artikel in een variable wilt opslaan dan doe je dit als volgt:

ob_start();
the_content();
$content = ob_get_clean();
ob_flush();

Na het uitvoeren van bovenstaande code wordt de inhoud van het artikel in de variable $content opgeslagen zonder dat dit meteen op het scherm getoond wordt.

Er is ook nog een andere manier om dit te doen, namelijk  met behulp van de $post variable.

$content = $post->post_content;

Deze is zoals je zelf kan zien wel wat eleganter.

7. Widgets toevoegen aan je templates

Om in je template gebruik te kunnen maken van widgets voeg je eerst volgende code toe aan je functions.php bestand.

if (function_exists('register_sidebar')){
	register_sidebar(array('name'=>'Sidebar1',
	'before_widget' => '',
	'after_widget' => '',
	'before_title' => '<h4>',
	'after_title' => '</h4>',
	));
	register_sidebar(array('name'=>'Sidebar2',
	'before_widget' => '',
	'after_widget' => '',
	'before_title' => '<h4>',
	'after_title' => '</h4>',
	));
}

Het is belangrijk dat iedere register_sidebar block een unieke naam heeft, net zoals in dit voorbeeld: Sidebar1 en Sidebar2. Het is ook mogelijk dat je meer dan 2 sidebars gaat gebruiken. Als je nu in het CMS bij Appearance > Widgets gaat kijken dan zou je daar de verschillende widgets plaatsen moeten zien (Sidebar1, Sidebar2).

In je template zelf gebruik je de volgende code om de plaats van de sidebar te bepalen.

<?php if ( !function_exists('dynamic_sidebar')
|| !dynamic_sidebar('Sidebar1') ) : ?>
<?php endif; ?>

De functie zelf mag dan wel register_sidebar noemen, maar het is perfect mogelijk om deze widgets in de header of footer van je templates te gebruiken.

8. Bestanden includen

Het includen van bestanden kan ook wel eens van pas komen. Zo kan je de template in verschillende blokken (lees als: php bestanden) opdelen. Door gebruik te maken van includes kan je de template dan opbouwen met de verschillende blokken.

<?php include (TEMPLATEPATH . '/blok.php'); ?>

9. Gepagineerd de artikels tonen uit categorie x

Iets wat ik heel vaak gebruik is het tonen van artikels uit een bepaalde categorie opgedeeld in enkele pagina’s. Hiervoor kan je de volgende code gebruiken.

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts(array(
	'paged'	=> $paged,
	'cat'	=> '33'
));
while (have_posts()) : the_post();
the_title();
the_content('[...]');
endwhile;
next_posts_link('&laquo; Older Entries');
echo " - ";
previous_posts_link ('Recent Entries &raquo;');

10. Shortcodes gebruiken

Een shortcode kan je zien als een string tussen vierkantehaakjes die vervangen wordt door een andere string.

Dit is bijvoorbeeld handig om een shortcode [adsense] te maken die vervangen wordt door een adsense advertentie. Zo kan je deze shortcode in je artikels gebruiken en moet je dus geen javascript in je artikels zelf gaan verwerken.

Om een nieuwe shortcode aan te maken ga je naar je functions.php bestand en voeg je daar de volgende code toe.

function adsense() {
    return 'plaats hier de adsense javascript';
}
add_shortcode('ad', 'adsense');

Als je nu in je artikel de volgende shortag [ad] plaatst, dan zal deze vervangen worden door de string “plaats hier de adsense javascript”. Deze tekst vervang je uiteraard in de adsense-functie door de adsense javascript code die je wilt gebruiken.

Het is ook mogelijk om extra attributen mee te geven met een shortcode. Hieronder ziet u een voorbeeld:

function makeUrl($atts, $content=null) {
	extract(shortcode_atts(array(
		"href" => 'http://'
	), $atts));
	return '<a href="'.$href.'">'.$content.'</a>';
}
add_shortcode("url", "makeUrl");

Als je nu in je artikel de volgende code plaatst, dan zal deze vervangen worden door een link.

[url href="http://www.computerfaq.be"]ComputerFAQ[/url]

Ik geef toe dat het bovenstaande een vrij onnuttige shortcode is, maar het is dan ook een voorbeeld.

The Author of this post is Wim Mostmans

Wim Mostmans heeft een eigen webontwikkeling bedrijf Sitebase waar hij voltijds voor werkt. Hij beheert ook nog enkele websites waaronder deze en een Computerforum. Blijf op de hoogte van waar Wim mee bezig is door hem te volgen op Twitter.

Leave a Comment