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:
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.