I’ve done some work on making a shortcode for displaying Discourse topics. At this point, it only displays the first post in the topic, it doesn’t display any of the comments. It gives you the option of displaying the full post content, an excerpt, or just the title and some metadata about the topic.
The styles I’m using here are rough, but this gives you an idea of how it could work. Adding a couple of shortcodes like this:
The shortcodes can be added anywhere you like within a post.
This isn’t yet available in the version of the plugin that’s in the WordPress repository. If the basic idea seems correct I can add it to the repo in the next few days.
My problem is that I have manually created Discourse topics for old blog posts and then simply put a link to the forum at the end of the post:
Obviously this is sub-optimal because it doesn’t show any of the comments on the blog and gives no indication of engagement.
What I hoped to do is install the WP Discourse plugin and use it for any new blog posts but also go back to old posts and manually link the posts with the forum topics with the hope that they would display the same way as any new post would (ie. showing the comments directly on the blog post). Does this make sense?
Yes it does. I’ve moved this discussion to an existing topic. There seem to be two separate feature requests in this topic: linking posts in a way that will pull the Discourse comments to WordPress, and just adding a Discourse topic link to a WordPress post.
It is possible to link an existing post to an existing topic so that the Discourse comments are displayed on WordPress. This is based on what @joebuhlig does in the PR in this topic, but with some changes to the Discourse meta box. When the WordPress post editor for a post that is not linked to Discourse is opened, it will first look like this:
Selecting Create new Topic displays this:
Selecting Link to Existing Topic displays this:
After either creating a topic, or linking to an existing topic, the metabox displays this:
Selecting the Unlink Post checkbox removes the Discourse metadata from the post so that it no longer displays Discourse comments.
The biggest issue with doing this is that it’s not possible to set the Discourse topic embed_url for topics that already exist on Discourse. That could be made to work, but would require some changes to the Discourse code.
This is exactly what I was after. I don’t understand what the Discourse topic embed_url would do and whether I would need it but I’m looking forward to trying this out, once the PR is merged. Thanks!
Thanks Simon! Yes that is along the lines of what I am trying to do.
Being able to display any post within the topic (instead of just the first) would also be super cool and helpful.
Thank you for the helpful reply.
So just to be clear, I cannot use this shortcode yet? I tried adding [discourse_topic topic_id=1259 excerpt_length=45] to one of my wordpress posts but nothing was displayed.
I am assuming that what I am pointing to below is the topic ID?