Here is a summary of tweaking made for the prototype of the theme to make a ds106 assignment bank for your own uses. I managed to do this Friday afternoon while waiting for my truck to be serviced; I have to return tomorrow, so maybe the Ford dealership in Star Valley, Arizona is good for coding. They do have a dog there named “Lucky”.
On the index page for all assignment types, i added counts for the number of assignments within each type, for now just in brackets nest to the name:
I’m starting to get a better handle inside of the way wordpress taxonomies work (fancy geek name for the data that includes tags and categories).
$assignmenttypes = get_terms( 'assignmenttypes', array( 'orderby' => 'name', 'order' => 'ASC', 'hide_empty'=> 0, ) );
Here, assignmentypes is a custom taxonomy to include the names of all the kinds of assignments (“Music”, “Gardening”, “Cooking”) – here we need to run a query to get them as data objects that we loop through to build the index. Eventually, it will be a theme option for how to order them, perhaps alphabetically, perhaps by order added, perhaps even by the number of assignments within each.
Speaking fo that, I was able to get a way to count the number of custom post types within each taxonomy term, so we can put a count next to each:
foreach ($assignmenttypes as $atype) { // get the number of post types that use this term $items = get_objects_in_term( $atype->term_id, 'assignmenttypes'); echo ''; }
Each assignmenttype is an object from which we can use for output, so $atype->slug helps us build the url, $atype->name the title, $atype->description the info added as a description (like a category). The function get_objects_in_term provides a way to get the number of things that use that term as an array, so we can echo the number with a count() call.
In the interest of the different ways the site might be used, and to allow easy editing of the introduction text, I changed up how I was templating this one. Before I made it the front of the site using it in a front-page.php template.
Instead now, it is a simple page template (page-front.php). If used as the entry to the site, you would create a new page, and select this as a template. Then in the WordPress Reading settings, you would use the option to set the home of the site to a static page (this one).

(click image for full size)
What this means is you could have an index of all the assignments as an ordinary wordpress page, not necessarily the front of the site; the index could be a normal blog flow (say for a course site that would have the assignment bank as an interior feature).
This also means the introduction and even title is something you would enter as normal page content. I also thought it will be useful for this screen, and maybe widgets elsewhere, to start making some shortcodes so you could each the number of assignments, number of examples in the bank. These are easy to do in the functions.php file:
/*************** SHORT CODES *****************/ // short code for number of assignments in the bank add_shortcode('thingcount', 'getThingCount'); function getThingCount() { return wp_count_posts('assignments')->publish; } // short code for number of examples in the bank add_shortcode('examplecount', 'getExampleCount'); function getExampleCount() { return wp_count_posts('examples')->publish; }
Yes, the layouts are not too stylized now and are ripe with placeholders for things like icons:
I am thinking of leaving it pretty un-styled, but set up classes so it would be easy to add your own CSS. Or maybe set up something in the Theme Customization API for styling things like the divs for each assignment, or maybe a system for having preset sub theme styles or …
I would like to have a customization option for the size of the icons. I have a one size added as one created for each upload for both the index page and the individual assignment page; as a them option, you could then define the shapes/sizes of the icons (and also the width of social media embeds).
Now, I have to dive into some means to have the assignment submission form working…
This is one in a series of posts documenting the creating of a WordPress theme that can give you a version of the ds106 Assignment Bank for your own purposes.
Comments