Enige tijd geleden ben ik begonnen met de ontwikkeling van verkiezingswebsite voor CDA Huizen. Aangezien ik niet kon volstaan met een standaard WordPress website heb ik een aantal plugins toegevoegd voor een correcte werking hiervan. Zo heb ik voor een overzicht van de kandidaten gekozen om deze als auteurs op te voeren. Hierdoor liep ik tegen een tweetal problemen aan, te weten:

  1. Het biografieveld in je profiel is erg klein en daarbij niet makkelijk te bewerken;
  2. Er is onvoldoende informatie om de kandidaatinformatie te plaatsen.

Voor wat betreft het eerste punt heb ik gekozen om de plugin “Rich Text Biography” te installeren. Deze werkt prima. Later las ik in een discussie tussen Hiranthi Molhoek en Remkus de Vries dat het ook nog een tip om code hiervoor aan je functions.php toe te voegen.

Voor wat betreft het tweede punt heb ik een andere oplossing gekozen omdat hiervoor naar mijn idee geen eenvoudige plugins aanwezig waren.  Op basis van een bericht van Daniel Quinn heb ik een eigen plugin gemaakt met daarin specifieke velden die aan ons doel voldeden. Al met al was dit redelijk eenvoudig, de crux zat hem in het feit om een overzicht te krijgen van de auteurs die gesorteerd werd op een van de extra velden, hiervoor is de volgende code toegevoegd aan de template functions.php:

[php]

function osort(&$oarray, $p) {
usort($oarray, create_function(‘$a,$b’, ‘if ($a->’ . $p . ‘== $b->’ . $p .’) return 0; return ($a->’ . $p . ‘< $b->’ . $p .’) ? -1 : 1;’));
}

[/php]

Verder is er een apart template aangemaakt om een overzicht te verkrijgen van de auteurs met een eigen sortering waarin de bovenstaande functie wordt gebruikt, zie hiervoor onderstaande code:

[php] //Query the WordPress Userdatabase
$order = ‘user_nicename’;
$user_ids = $wpdb->get_col("SELECT $wpdb->users.ID FROM $wpdb->users ORDER BY $order");

//Add all the userdata information to an array
foreach($user_ids as $user_id) :
$user = get_userdata($user_id);
$user->full_name = ucwords(strtolower(trim($user->last_name))) . ‘ ‘ . ucwords(strtolower(trim($user->first_name)));
$aUsers[] = $user;
endforeach;

//Call the osort (template function) to sort the users array
osort($aUsers, ‘listposition’);
[/php]

Vervolgens was het mogelijk om met een foreach loop door de array() te lopen om de gegevens gesorteerd op ‘listposition’  te tonen met de volgende code:

[php]

//Loop through array to display users in a specific order
foreach ( $aUsers as $user )
{
echo $user->listposition . ‘. ‘ . $user->user_firstname . ‘ ‘ . $user->user_lastname;
echo $user->maritalstatus;
echo $user->religion;
}

[/php]

De gebruikte extra $user velden zijn slechts een selectie en dienen alleen ter illustratie. In WordPress profielbeheer en in het template ziet het er dan als volgt uit:

Voorbeeld aangepast gebruikersprofielVoorbeeld aangepast template

De specifieke bestanden die ik heb gemaakt zijn de plugin cda-custom-user-meta en de template memberlist. Doe er je voordeel mee en wanneer je nog opmerkingen hebt of suggesties geef deze dan door.

WordPress gebruikersprofiel uitbreiden
Getagd op:                     

3 gedachten over “WordPress gebruikersprofiel uitbreiden

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *