Go from a Wordpress + Discourse structure to a Discourse site only?

Hi!

Before reading what follows, you may have a look to Moved from PluXml and phpBB to Wordpress and Discourse, my all-new experience 🎉 but that’s not mandatory, I’ll do a recap.

What we have right now.

WP is connected to Discourse through WP Discourse. WP is also the DiscourseConnect Client, and the WP news are automatically published to Discourse in a dedicated category. That’s all the plugin does for us.

  • The WP website is primarily focused on the news and static information pages.

  • The Discourse forum is… A forum. Where the community meets, talks, and organizes stuff at times.


The Question

I asked myself: “What really is the purpose of the website? The added value is low, and a lot of the site’s features could be made in Discourse. So, why bother with two platforms?”

Note that I’m just at the beginning of my thinking. But I’m starting to think that could be a good idea to get rid of Worpdress in our case.

So, what are the benefits of the website? It has a clean, news-focused layout. It has small features that seem nice but are maybe useless. The sports federation Facebook iframe. A magazine button. The forum’s recent activity.
The event calendar (a custom solution).
And many static pages of information about unicycle stuff.

What of that can’t be done in Discourse? Pretty much nothing.

The main concern would be how to make the news more visible on our forum. There isn’t new info every week, but they are important in the French unicycling community and they should be visible.

I discussed this with two involved people in this forum/site. They think that getting rid of WP could be a good idea if we don’t lose anything important that the website gives to us.

The technical stuff.

  • The custom Discourse header would stay as it is.

  • The news could use News Plugin đź“°. Not as the main page, because the forum’s content wouldn’t be available until we click on some “forum” button (like Elektronauts) and we want to emphasize the online community activity as well. I’ve not tried the news plugin yet though.

  • However, we’d like to have some news on the forum’s home page. I remember seeing a plugin or a theme component that was showing some posts in a banner on top of the topics, but I can be wrong. Is there an existing solution to that? The best use for us, I think, would be to have something like the 3 last news with a thumbnail and an excerpt on the top of the home page, below the header, and that we could toggle this banner so it doesn’t bother us if we have already read these topics.

  • The website’s static pages could be either topics or published pages.

  • The wiki could use Discourse’s wiki feature.

  • We don’t need the newsletter (Discourse’s digest would replace this), and my co-admin sees no real purpose to the sports federation embedded facebook posts stream, as well as some other things.

  • We have an event category (custom solution), which is a bit empty these days, but has its usefulness, and we’d like to keep the kind of event category with specific features.

I’ve seen and tried several events/calendar plugins by the past:

Some were a bit awkward to understand or configure, and my needs were a bit different when I tried them, so I should try again.

Pros and cons of keeping only Discourse

Pros

  • No more potential issues with WP, its many extensions/themes/custom clumsy code [1] and WP/Discourse compatibility when publishing posts.
  • Only one platform to consider and focus on

  • All the data will be organized in a single database, making things simpler if we need to move all our stuff one day (even Discourse isn’t eternal… Or is it? :yum:)

Cons

  • Bit of work to “move” some stuff from WP to Discourse

  • Need to find proper solutions for a few features

  • Need to set-up 301 redirections

Your opinion, thoughts, advice

I think I’ve explained well what I aim for. I’d be glad to hear any suggestions, advice, etc, about this possible transition from WP+D to D.


  1. you don’t want to look at it; don’t even try to think about it, I’m already ashamed ↩︎

6 Likes

I think this would probably boil down to how much traffic each site generates, and your budget.

Discourse can absolutely do all of the above, but if you’re serving a ton of content to anonymous users on the WordPress site your cost per page view is significantly lower.

A $5 VPS configured correctly can serve millions of read-only page views pretty effortlessly, that’s where WordPress excels. The same traffic would need considerably more resources were it served via Discourse. WordPress is still an incredibly effective tool if you care about such stuff. Configured correctly it’s also pretty excellent for curating the content you serve up to search engines.

I have one customer who currently pays DO about $100/month for the two. When we investigated moving things wholesale to Discourse the running costs would have been an order of magnitude greater, it’s safe to say that piece of work didn’t go ahead.

3 Likes

Great concerns. I should I have mentioned info about that.

This is a very niche website. The traffic is low by essence. It doesn’t cost anything in bandwidth or disk space or anything. Both sites run smoothly on my VPS along other web stuff and I’m doing all of this as volunteer work. :slight_smile:

The SEO aspect would be interesting to study though. I didn’t thought about that. :thinking:

2 Likes

currenty uses a strapi headless CMS backend + nextjs frontend hosted on vercel.

It also has a discourse forum attached to it:

I am also thinking about ditching the strapi backend completely and just using discourse as a headless CMS.

so this problem could be solved by hosting the “landing page” / most visited pages in a headless fashion on something like vercel.
Even in its current form Discourse could almost work as a headless CMS: We can just attach .json to the topic url and get the markdown / raw post data.

The only issue would be permanent links, curated topic lists and a publishing + permission system for authors and editors. Part of it could be done with groups and categories, but it would be nice if there was just one article / preview article category.

Maybe we should build a plugin for that :thinking:

@Canapin thanks for the topic! Great read :grinning: :+1:

4 Likes

That assumes it’s only the front page which is serving semi-static content. In my above example the site has over 10k posts and pages.

1 Like
export const getStaticProps: GetStaticProps = async ({params}) => {
  // Run API calls in parallel
  const id = params?.id

  if (!id) {
    return {
      redirect: {
        destination: '/',
        permanent: false,
        // statusCode: 301
      },
    }
  }
  const qs = require('qs');
  const query = qs.stringify({
    populate: '*', 
  }, {
    encodeValuesOnly: true, // prettify URL
  });
  const article = await fetchAPI("/api/articles/" + params.id + "?"+ query)
  if (!article.data) {
    return {
      redirect: {
        destination: '/',
        permanent: false,
        // statusCode: 301
      },
    }
  }

  return {
    props: { article },
    revalidate: 1,
  }
}

I use this code in the nextjs frontend to fetch the articles. So it will cache the article for 1 second and then revalidate. So the discourse instance would only get one 1 request per second if we used this method.

It is imaginable to do this not just for a special category that is managed by a special group of users of authors and editors.
It could be done for all content. The strapi backend of monerochan.news also provides markdown (just like discourse). So we could use the exact same code to fetch the post data ( just attach .json to the normal topic url) and display it.
Obviously the interactive features of discourse would be missing in this case. But we could just put a button there which says something like: comment! and this will redirect to the discourse page. Nextjs pages also load super quickly and are SEO friendly.

so I guess there are two situations: 1. A news site with a special category that gets curated by authors and editors. 2. A normal discourse forum with user generated content.
There could also be a mixture of the two cases.

In both cases building a headless frontend could have a lot of benefits.

1 Like

If you have trouble doing any of the above using the News Plugin, Landing Pages Plugin, Events Plugin for any of the above you can always just let me know. I’d be happy to help you.

Regarding the events plugin, you should reach out because we’re currently looking for more use cases to implement for our soon to be released v2. Fill out this wizard:

2 Likes

This is an interesting idea if I understand it well. Basically, you’d keep your forum as it is, and additionally have a homemade website in which the content would come from the forum’s data through Discourse’s API. Is that right?

@Stephen, WordPress has indeed fair points.

WP loads very quickly especially if you’re using a cache system, whereas Discourse needs to load the entire app, which always takes a while when you open it.

My site https://monocycle.info loads fast and navigating from page to page is almost instant.

The idea of removing WordPress is for several reasons that I listed, but I forgot to add that I’d like to make the forum more visible, and more obvious. I want people to see that there’s an active community as soon as they land on the site.
Registering and posting on Discourse is an enjoyable and painless experience both on desktop and mobile.

I could keep WP for the homepage only (or not much more), and move most content to Discourse’s topics/published pages.

Nice! I need to have another look at your plugin before filling out your wizard so I know exactly what features it provides and how it works overall. :+1:

1 Like

What about bringing more community content on to the wordpress site? Raise visibility that way.

Any more specific idea? When we land on the home page, we have a “Discussions” link and a list of the last created topics.

Yes! This is exactly what I mean! There is also not much that needs to be done on the discourse side! If you attach .json to any topic link, you already have the api!
Take a look at this topic we are currently talking in for example:
https://meta.discourse.org/t/go-from-a-wordpress-discourse-structure-to-a-discourse-site-only/247273/8.json?include_raw=true

notice the .json and include_raw=true at the end. This is how you can even get the markdown of the post in addition to the “cooked” html.

Strapi also uses a markdown editor, so I can literally use the same code as before.

2 Likes

That made me littéralement made me jump on my chair. From what I understood by using: .json and include_raw=true with a sort of automation (n8n) we could technically re-route all discourse in a Hugo by pushing the meta tag and the markdown directly into a git repository??

1 Like