I finally put a bunch of work into the coding of the plugin, and I think it is fairly robust at this point. Whether it makes it into core ( or whether it even should) is up for discussion, but I would like to share what I have.
First, check out the latest code in trunk here: https://plugins.svn.wordpress.org/wp-featured-content/trunk/
To guide development, I made the following list of requirements. It should also be easier for people to follow along when we can all agree on an initial set of facts:
Wherever possible, existing WP functionality and screens will be used. The user should be able to associate posts with Featured Content theme areas as easy as selecting a category or making a post sticky, but, to be more robust, the user should be able to override certain features of a post when it is displayed as a Featured Item in a theme. Example: different title when featured vs what is displayed for a the full post, different image when in a featured module vs the featured image for the post when displayed in single.php.
Post Type / Taxonomy
- A Featured Item uses the featured_item post type
- A featured_item belongs to a Featured Area
- Each Featured Area is a term in the featured_area taxonomy
- Post types can opt in to featured content by adding featured_area taxonomy support
- Themes can opt-in by supporting ‘featured-content’ (the plugin currently brute-forces it)
Creating / Deleting
- Add a post with featured area(s), make sure featured item(s) are created
- Trash the post, delete permanently, make sure featured item(s) are deleted
- Featured item should not have a title when created, it should inherit from the parent post when empty – view in list tables to verify
- If a featured item’s title is edited, it should show that in the list table, unless it is empty
- Add a post with a featured area, item is created. Edit post to belong to a featured area, 2nd featured item should be created.
- Delete one of the featured items, the other should remain, the post should be linked to only one featured area.
Transitioning Post Status
- Add a post in draft status, make sure featured item is in draft status
- Move a post in draft to publish, make sure featured item is moved as well
- If a post was created with 2 featured items and one is trashed: if the term is re-linked to the post, the item in the trash should be untrashed, instead of creating a 3rd item
Trash / Untrash
- Trash a post, make sure the featured item(s) are deleted
- Untrash a post, make sure the featured item(s) are not created
- Trash an existing featured item, make sure post loses tax association
- Untrash an existing featured item, make sure post regains tax association
- Permanently delete existing featured item, make sure post loses tax association
- The Taxonomy box for featured items should be present in Quick Edit
- All saving logic should fire in AJAX save routine for Quick Edit
- All featured items should be re-orderable via the Re-order items screen
- menu_order should be set when items are reordered, only those that change should be sent
- When new items are added to a featured area, they should be appended to the end of the list, not the beginning
- By default, featured item contains the post data of the post it belongs to
- If any fields have been overridden(post_title, post_excerpt), the post data is a merge of the 2
- If the featured item has a featured image, the theme can override by using the property ‘image_id’ to grab the featured image on one of the decorated $posts that is returned when applicable
Yeah, so that is a mouthful. All of these use-cases are listed in the comments at the top of the plugin file as well. There’s been a lot of discussion about new UI. If someone wants to think way outside of the box and introduce new screens, keep the above in mind.