Nov 17

Tuesday

Sorting Data from Custom Fields in WordPress

5
Comment(s)


With the redesign of the Ei Site, we wanted to take advantage of certain features native to WordPress, one of which was Custom Fields.

We wanted a simple way to display our client list using Custom Fields. Using built-in WordPress functions, it is pretty simple to pull information from Custom Fields. With Custom Field structure like this:

Name: client
Value: Name|Work_Done|Description|URL

You can use the get_post_meta() function to loop through all of the ‘client’ fields and pull the value for each and display to your page.

ORIGINAL CODE:

<?php
	$allOptions = get_post_meta($post->ID, 'client', false);
	if($allOptions) {

		foreach ($allOptions as $option) {
			$fullValue = explode ("|", $option);
			$name = $fullValue[0];
			$work = $fullValue[1];
			$text = $fullValue[2];
			$url = $fullValue[3];
		}  

	}
?>

The problem comes if you want to control the way the output is displayed. The get_post_meta() function does not provide a SORT property. So in order to control the order of display, we simply added an additional component to the VALUE field, a ’sort order’.

Name: client
Value: Sort|Name|Work_Done|Description|URL

Rather than just display the information in the initial foreach() loop, we stored the data into a new array, based on the SORT item for use later.

NEW CODE:

<?php
	$client_array = array();
	$allOptions = get_post_meta($post->ID, 'client', false);
	if($allOptions) {
		foreach ($allOptions as $option) {
			$fullValue = explode ("|", $option);
			$order = $fullValue[0];
			$client_array[$order] = $option;
		}
	}
	rsort($client_array, SORT_NUMERIC);
?>

With the data now stored in an sorted array, we can now loop through the new array and display the information in any order we want.


View Comments



meda says:

November 29th, 2009 at 7:48 pm


A practical example would be nice for those like me who know very little about php.


Luke Whitson says:

November 29th, 2009 at 7:51 pm


meda, that is the exact code I used. so it is as practical as it gets. what else would you like to see to help you out? let me know and i will be glad to assist.


meda says:

November 30th, 2009 at 2:36 am


Although I didn’t really get what adding SORT does to your array I’d like to see how do you display it on your blog to see if it clear things up.

Also, I see that you sort values within one post but how would you go about sorting posts using custom fields? I’d like to display posts using a date custom fields. The loop would show posts sorted by the dates used in the custom fields. Thx


Sorting image from custom fields « heidzir says:

January 20th, 2010 at 8:30 am


[...] Solution from others: Sorting Data from Custom Fields in WordPress [...]


Ray Gulick says:

May 14th, 2010 at 5:20 pm


Lost me somewhere, too. I don’t understand how to attach the numeric value to a particular custom field. Probably easy, but some of us need a more step-by-step explanation.

Leave a comment




blog comments powered by Disqus