Hi
unfortunately the site's still in development and not publicly acessible yet.
The author info is stored in a custom db table within the WP database
As an example, there is a page of listing of books in one category that shows a thumbnail of the cover, the title, the author name, the isbn, etc. When a profile exists for an author the name is presented as a clickable link.
The gist of the code for the link is
<a href="<?php bloginfo('url'); ?>/authors-illustrators/profile?profileID=<?php echo $author_profile_id ?>" ><?php echo $author_name; ?></a>
That links it to the author row in the table. I am using WP posts for reviews, so chose to have the author info in a separate table but I could just as easily have created a post for each author and used the post content to hold their profile, and create WP custom fields for each field of author info.
/authors-illustrators/profile is the URL of the WP page I have linked to the custom page template. It is a child page of authors-illustrators, which is why the two levels of URL path there. As you can see, I am passing a query var on that URL. These vars need to be defined to WP or WP strips them off and ignores them.
To define the query var I have this in the theme's functions.php file
add_filter('query_vars', 'my_queryvars' ); // query vars passed on URL
function my_queryvars( $qvars ) {
$qvars[] = 'profileID';
return $qvars;
}
This tells WP to add the var I am passing, profileID, to an array of query vars that WP keeps for its own use.
Then I need to test for and if existing retrieve that value within the custom template (the WP API does it this way instead of passing through $_GET). You can still use $_GET with a different WP function, but this method is cleaner and more aligned with the WP API).
In the custom page template, near the top, I have this code:
$profileID = $wp_query->query_vars['profileID'];
This retrieves the query var from the global WP data structure. If it was found I use that variable to do a lookup of that profile and fill in the variables in the form with the data from that record. So the one custom page template displays thousands of individual profiles.
If the variable is not found, I am using the same template for a different purpose, to display a listing of authors. The code tests for the existence of the var and processes accordingly.
Hopefully you can follow the gist from this example. You can think of your posts as straight data if you want to - WP has default ways of displaying the posts but you are not limited to that. You could enter 1,000 artist posts and display their contents in a different template altogether by retrieving the post content and custom fields as variables in a single template. Then you can arrange it as you like. When looked at this way, a post is just a bunch of fields in a row in some database tables.