Notes on making a Digital Garden with WordPress

Andy Sylvester wrote me asking about my digital garden:

I followed links to your site from Dave Winer’s Scripting News site, your digital garden site is cool! I am interested in what theme you started with to create that site.

Andrew Shell has developed some tools for creating feeds for Federated Wiki installations (https://feeds.fedwikiriver.com/). I am interested in your thoughts about how to create feeds for wikis.
Andy Sylvester
andysylvester.com

Thanks, Andy! I hope you don’t mind me writing a full post as a reply instead of an email. I’ve received other questions about this recently and I find it useful to document this stuff so it is searchable and linkable.

If you want to use the theme and templates I’ve set up, I can try to package it up for you. I didn’t want to do that here because it isn’t in a state I feel comfortable releasing publicly, but happy to share it privately and get your feedback on what would be good to add. I consider it an ongoing experiment and subject to change at any time.

Theme and templates

For notes.cagrimmett.com I used the Blockbase theme. I picked that one because it is barebones but has nice Site Editor support, and I didn’t want to fight existing conventions. I wanted something that would stay out of my way but give me modern WP tools.

If I were to do it again, I’d probably use the new Twenty Twenty-Four theme. It is super flexible and has the lastest-and-greatest Site Editor and blocks support.

As you can tell, I’m all-in on the block editor.

If you haven’t used the Site Editor yet, the main way it differs from classic themes is that it gives you the ability to customize templates right in the block editor, which is very powerful.

I customized the templates in the Site Editor for the Blockbase theme, so I thought I’d call those out:

Homepage

I have two lists at the top of my homepage: Recently Created and Recently Updated.

One is a list generated by published date and one is a list generated by post modified date. I like to be able to see not only what is new, but what has been updated recently. I use the more powerful query loop in Generate Blocks to sort by post modified.

In the garden metaphor, I think of these as Planted and Tended.

Page Index

I opted to use Pages instead of Posts because I liked the hierarchy of Pages and thought I’d use that. I think this might have been a mistake and I’m considering moving everything to Posts and forgetting the hierarchy altogether. The hierarchy does make things easy to find, but so would better tags and categories.

I do have some private pages that only I can see when logged in, so there is a section on the homepage for that, too.

This is generated by the Page List block. If I moved to posts, I’d probably have a bunch of query loops for different categories.

Categories

Self explanatory

Tags

Self explanatory

Single Page

At the top I’m trying to surface relevant metadata:

Hierarchy (basically breadcrumbs from the hierarchical pages)

Categories and Tags

Published date

Last Modified date

Some pages have a sidebar with links to child pages to try to show the note’s context within a similar group. I don’t think I’ve nailed this yet.

Pingbacks and trackbacks to surface cross-linking between posts. I don’t think the bottom is the right place for this… I think I should put this in the sidebar instead.

Cross/backlinking are handled via enabling trackbacks and pingbacks on pages.

add_post_type_support( 'page', 'trackbacks' );

I use Webmentions here, too!

Plugins

Tags are topical and freeform, auto-linked by TaxoPress

TaxoPress only has posts turned on by default. You need to go into the settings and enable for pages.

Making use of the GenerateBlocks plugin, which has a great replacement for the core Query Loop block with the ability to customize the query just like you can in code with WP_Query

Breadcrumbs via Breadcrumb NavXT

Redirection to monitor permalink changes so I can easily reorganize things without breaking links.

Webmentions as an addition to pingbacks and trackbacks for the indieweb.

Post Modified Time Block for easily displaying the post modified date on a page

Bookmark Card for nice looking bookmark cards

Child Pages Card for displaying child pages in the sidebar

Feeds

I am interested in your thoughts about how to create feeds for wikis.

I have some thoughts in the WordPress ecosystem, and some cross over to wikis.

WordPress has incredible feed support already. Categories, tags, and search queries have their own feeds, which is quite helpful for people only interested in subscribing to certain topics.

Wikis have categories, so they could have category feeds, too.

Pages do not have feeds by default, but you can add them with this plugin: https://wordpress.org/plugins/rss-includes-pages/

It would be great if RSS feeds could surface updates to existing content, too. I’d like a feed for my recently updated list. My colleagues at Newspack have a plugin that includes an <updated> tag, which is a step in the right direction. It might require a different sorting mechanism for the feed reader. I’ll float it by Dave for FeedLand

Wikis have a great history page, so it is theoretically possible to have an updated element in the feed for the most recent updated time.

Future additions/ongoing work

I want to better surface cross-linking within the site and inbound links from around the internet.

I want neat previews for outgoing links. Transclusion. I have some code for this that Jeremy Felt wrote for perell.com, but need to integrate it.

I want better context. On each page I want to show related content by category and show page ancestry siblings rather than just children. This would be easier if I moved to posts rather than pages.

I want to show revisions and/or changelog to show how notes have changed over time. I’m working with the WordPress Gutenberg team to figure out how to do this.