Using the Download Monitor plugin allows me to categorize files, so I put my files in there instead of the Media Library. I organize files into categories based on which pages I want to display them. Then, I use a text widget with a custom shortcode to display files per category per page.
In my theme’s functions.php:
// Enable shortcodes in text widgets
add_filter('widget_text', 'do_shortcode');
// Custom shortcode:
add_shortcode('downloads_by_page', 'downloads_by_page');
function downloads_by_page($atts) {
$atts = shortcode_atts(
array(
'pages' => array(),
'category' => -1, // ID of a Download Monitor category
'format' => '5' // ID of a Download Monitor output format
),
$atts
);
$pages = $atts['pages'];
if (is_string($pages)) {
$pages = explode(',', $pages);
}
if (is_page($pages)) {
// 'downloads' shortcode comes with Download Monitor:
// http://mikejolley.com/projects/download-monitor/
return do_shortcode('[downloads query="category=' . $atts['category'] .
'&orderby=title&order=asc" format="' . $atts['format'] . '"]');
}
return '';
}
In a text widget in my sidebar:
// Category 3 refers to the ID of the Download Monitor category that has cat-related files
// Pages is a comma-separated list of page names or IDs
[downloads_by_page category="3" pages="About Cats,All Animals"]
[downloads_by_page category="4" pages="About Dogs,All Animals,Canine Facts"]