This one might get you started (this one is for the size as you can see since i do value 1 times value 2) (just to give an example of more advanced queries)
global $edl_global_join;
global $edl_global_orderby;
global $wp_query;
function edl_posts_join ($join) {
global $edl_global_join;
if ($edl_global_join) $join .= " $edl_global_join";
return $join;
}
function edl_posts_orderby ($orderby) {
global $edl_global_orderby;
if ($edl_global_orderby) $orderby = $edl_global_orderby;
return $orderby;
}
add_filter('posts_join','edl_posts_join');
add_filter('posts_orderby','edl_posts_orderby');
$edl_global_join =
"JOIN $wpdb->postmeta meta1 ON (meta1.post_id = $wpdb->posts.ID AND meta1.meta_key = 'TOPSPEED')" .
"JOIN $wpdb->postmeta meta2 ON (meta2.post_id = $wpdb->posts.ID AND meta2.meta_key = 'ANOTHER_THING')";
$edl_global_orderby = " meta1.meta_value * meta2.meta_value DESC";
$wp_query = new WP_Query($args);
and then just run the loop I wrote a “CAR class” which among others displays meta fields such as:
$car->display_meta_size();
which is actually the following method in that class:
//
// specific display for size overviews
//
function display_meta_size()
{
$this->mMetaData->GetValuesFromWP();
?>
<table width="100%">
<?php
$this->mMetaData->ShowIcon();
$this->mMetaData->ShowSize();
?>
</table>
<?php
}
where the method GetValuesFromWP() is from the wp metadata class :
// get the values stored in WordPress
function GetValuesFromWP() {
global $post;
$custom = get_post_custom($post->ID);
foreach ($this->mArrMetaDataFields as $str_meta_data_field)
{
$this->MetaDataWpValues[$str_meta_data_field] =
$custom[$str_meta_data_field][0];
}
$this->MetaDataWpValues['SPECIAL'] = $custom['SPECIAL'][0];
}
(so in the join function totally above add the page selection(s))