WordPress gebruikersprofiel uitbreiden

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:


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

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:

//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');

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:


//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;
}

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.

, , , , ,

Over Ruben Woudsma

In het dagelijks leven werkzaam als IT Specialist (Test manager, scrum master of product owner). Daarnaast ben ik actief als raadslid namens voor het CDA in de gemeente Huizen. Ook actief in de protestantse kerk te Huizen, in het bestuur van kinderboerderij Huizen en lid van de identiteitscommissie PCBS De Parel.

3 reacties op “WordPress gebruikersprofiel uitbreiden”

  1. online 30 maart 2010 om 08:07 # Beantwoorden

    veel geleerd

Trackbacks/Pingbacks

  1. Adding Custom User Meta to WordPress User Profiles » This Electronic Life » WordPress, Digital Publishing, and Web Design » Daniel J. Quinn - 21 november 2009

    […] how he figured out sorting the custom meta fields outside the profile. Check it out in Dutch: http://rubenwoudsma.nl/wordpress-gebruikersprofiel-uitbreiden/ var addthis_pub="djamesquinn"; var addthis_brand = "DQuinn.net"; var addthis_config = { […]

  2. WordPress: Modify author base slug with group information - 10 juli 2013

    […] As mentioned in the comment this set of groups can best be done via a global variable of constant value, so it can also be assigned to a user profile. This can be done via the earlier published code snippet. […]

Geef een reactie