I would still use the WordPress uploader, but you'll need to modify it to make it work. So say you want gpx files (assuming this is what you mean).
When you upload something, WordPress looks at it's file extension and based on a set of allowable mime types lets the upload go through or blocks it. Those allowed mime types are fetched by the function
get_allowed_mime_types which, like nearly everything in WordPress, provides a filter to modify things.
upload_mimes in this case.
We can hook in and allow
.gpx files. Mime types are specified in an associative array of
regex_pattern => mime_type format.
So to add gpx:
* Allow the uploading of .gpx files.
* @param array $mimes The allowed mime types in file extension => mime format
* @return array
$mimes['gpx'] = 'application/xml';
There are quite a few file types that WordPress recognizes and allows. If you need more, add them like the above.
As far as auto adding the file links to the content. That's easy enough. Hook into
the_content get the associated attachments, spit them out.
$attachments = get_posts(array(
'post_parent' => $post->ID,
'post_type' => 'attachment',
'post_mime_type' => 'application/xml',
'nopaging' => true,
$list = '<ul class="gpx-list">';
foreach($attachments as $a)
$list .= '<li>' . wp_get_attachment_link($a->ID) . '</li>';
$list .= '</ul>';
return $c . $list;
The above in a plugin.