I would have really thought this already existed as a plugin.  I’ve seen the need for lots of churches but also for business sites.  For churches, they often want to list their weekly bulletins on their website.  If a plugin is out there for WP that will do this, I haven’t found it.

But thankfully WP treats media files as posts and has a way to search by type (PDF) so mashing up code from 2 or 3 places and throwing in some PHP magic I’ve written this.  You can put this in a function (as I have) or write a template with it.  In this example you can see at the top that the “$targetword” var is in there…thats the search term used to filter out PDFs that do not contain that word.  My thinking on this is that only PDF files that start with the word “bulletin” (or have that word in them, case insensitive in this instance) will show up.

You could fancy all of this up of course and write some ADMIN code for all of this and built a full plugin with shortcodes and rainbows and exploding pinatas…but I just went “quick’n’dirty” on it.  I will probably have to go back and look at sorting the query to get the order I need but this is a dang good start.  I think so anyway…

function get_attachment_files(){

//the "filter" word...will only show listings with this word in it.
$targetword = "bulletin";

//what we are searching for is basically everything with the type of PDF
$args = array(
    'post_type' => 'attachment',
	'post_mime_type' => 'application/pdf',
    'numberposts' => -1,
    'post_status' => null,
    'post_parent' => null
);

//get everything in an array
$attachments = get_posts($args);

//if there are results...
 if ($attachments) {

	//format as an ordered list
      "); foreach ($attachments as $post) { //get the post title $tpn = $post->post_title; //only show if the target "filter" word is in that result. if (stripos($tpn,$targetword) !== false) { echo ("
    • "); setup_postdata($post); the_attachment_link($post->ID); echo ("
"); } } echo (" "); } }