So, let’s say that you have multiple sites and multiple places you publish content and you’d like to bring all into one so you’ve got a “hub”. Or…

Let’s say that your publishing model is content curation and you bring in content from multiple sources into one.

There are many different scenarios where you may want to automatically import content from external sources into one site.

In my case, I recently resurrected David Risley dot com to serve as the “hub” for my company. Seeing as it will be a hub, it will obviously link out to my other sites. Part of that is that I decided to set up a system to automatically import content from my other media properties and link out to them.

Listing of articles from multiple sources, categorized and filtered

On my site, this is new so there’s not a lot there yet. But, as of now, it is importing (automatically) content from Blog Marketing Academy, The Morning WP, and Happily RV. As I may add additional media properties down the road, they can easily be added.

Also, while it is totally optional, I also put in these little filter dropdowns so that users can filter by media property and/or content type.

So, let me show you how I built this.

The Plugins I Used To Build This

I used 2 plugins, primarily, to build this feature.

The first is Feedzy.

Feedzy WordPress plugin

Feedzy’s basic function is to import content from RSS feeds into WordPress. This isn’t just about showing an embedded RSS widget (although it can do that, too). The idea is to actually import the content from that RSS feed into your database as blog posts using the settings and mapping you set up beforehand.

Now, you could stop with just Feedzy if you don’t need/want the filtering options to work as I have them. Feedzy will import the content and you can map to specific categories. You can then display blog posts on your site just like you normally would.

In my case, I also made use of FacetWP.

FacetWP Logo

FacetWP does a lot, but at it’s core it is a filtering plugin. It can be used to set up search and filter options for any content type in WordPress. The other thing that I like about FacetWP is that the filters will work without reloading the entire page.

So, let’s dive into how this worked…

Building The RSS Import

The import process works on the back of RSS feeds. In my case, I was going to bring in 2 sources from BeeHiiv and one from WordPress. BeeHiiv powers both The Morning WP and Happily RV while the Blog Marketing Academy is, of course, using WordPress.

You can that I have 3 feeds set up in Feedzy:

Post Imports In Feedzy

Now, I set up each of these feeds to be imported as standard blog posts. That is because David Risley dot com isn’t going to have a blog of it’s own so there’s no risk of conflict. If the site were to have it’s own blog as well, I would import these external posts into a custom post type instead.

Before I set up any imports, I wanted to set up the category structure for the posts. These categories will be used for the filtering options for source and content type.

Category structure used for imports

There are two filtering options I intended here: site and type. So, those are the two parent categories and then each has sub-categories for the various options.

My more WordPress-saavy readers may wonder why I did it this way. I could have indeed set up this using custom taxonomies, of course. However, this structure works well with the way Feedzy works. Feedzy doesn’t have support for assigning multiple custom taxonomies. It simply supports post categories. So, rather than figure out how to modify that, I just rolled with what I know I could pull off easily.

OK, let’s build an RSS import. Go to set up a new import in Feedzy.

First, set up your source RSS feed for the import:

Feedzy - RSS Source

As you can see, I used the URL for the RSS feed for Blog Marketing Academy for this site. For the two BeeHiiv properties, I generated RSS feed addresses inside of my account.

Next, you can optionally set up filters.

Feedzy - Filters

Now, I didn’t use any filters because I want to import every article from my own site. However, the idea here is that you could filter high-volume content sources by keywords and only import content that fits your criteria. You can also focus on a particular timeframe if you like.

Now, here’s where most of the work happens. The next step is to set up how you want the posts to get mapped into your WordPress database.

Feedzy - Map Content

I am importing as standard blog posts on this particular site. If you wanted to use a custom post type, you would choose that instead.

For each field, you can use Feedzy’s dynamic tags to insert content into the proper fields. It is actually pretty self-explanatory. Note that I am selecting the categories that match the RSS source. So, in the case of the BMA RSS feed, I picked “Blog Marketing Academy” and “Article” as the categories. On the other hand, when I am setting up one of the BeeHiiv newsletters, I would pick “Newsletter” as a category.

Also note that I am putting the item description in as the post content. I could very easily import the entire article and completely duplicate the article. Feedzy provides a bunch of dynamic tags so you can customize what’s imported. However, I had no interest in copying the article to my other site. I simply wanted to list it and then link back to the original source.

In the final step of the import setup, you tell it how many items to import at once and whether you want anything to be deleted. Easy enough.

Save the settings and your import is now set up.

Testing & Purging The Feed

Once the import has been set up, it will run on automatic moving forward. You can control the schedule in the Feedzy settings, but default is once per hour.

Right after setting up the import, though, you want to make sure it works as intended. So, you can hit the “Run Now” button and it will do it’s thing.

Feedzy - Run Now button

You can then go and check out what it imported and whether the posts went into the database as intended.

If something isn’t right and you want to change the settings, no problem. First, just go edit the import and make the changes you want. When you’re done, you will then “Purge And Reset” the feed and then run it again.

Feedzy - Purge & Reset

The “purge” function will automatically remove the posts that it imported, reset things, and allow you to start from scratch.

Linking To The External URL And Not Internally

Since I’m importing these things into blog posts, any display of the content on the site would naturally want to link to the local blog post.

Now, if you’re setting up a content curation situation, that’s probably exactly what you want. This setup can actually help you rapidly create content on your own site using content curation from other sources.

In my case, however, I want to link out to the external source rather than the “copy”. There’s not much value in linking to a “blog post” on that is, really, nothing but a quick description of a full article elsewhere.

So, I put in a little blurb of PHP code that would actually overwrite the usual post link with the custom item URL from Feedzy. That code is:

add_filter('post_link', function( $url, $id ){
    $feed_url = get_post_meta( $id->ID, 'feedzy_item_url', true );
    if ( !empty( $feed_url) )
        $url = $feed_url;
    return $url;
}, 99, 2);

You can either drop that into your theme’s functions.php file or, like me, just include it using a plugin like Code Snippets.

Now, when I show these blog posts on the site, it will link out to the external source article rather than internal linking to itself.

Setting Up The Filters & Display

As I said before, you could just as easily stop right here and not set up filters. Filters indeed make things a bit more complicated. Without filters, you could just set up blog post display on the site just like normally.

But, leave it to me to go the extra mile. 😉 So, filters it is.

As I said, I used FacetWP for this. I’m sure I could have used other methods, but this is how I went about it.

To start, here’s the final look of the display of all this on the front-end again:

Listing of articles from multiple sources, categorized and filtered

Those 3 items at the top are the filtering options. In the lingo of FacetWP, these are called facets. The ones I am using are:

  • Source: Set to be a dropdown and pulling data from the category list. In this case, pulling all “child” categories from the parent category of “Site”.
  • Type: Set to be a dropdown and pulling data from the category list. In this case, pulling all “child” categories from the parent category of “Type”.
  • Reset Search. Using the facet type of “Reset”, which is programmed to reset the form and remove any filters the user may have selected.

Here you can see the list of facets I have set up in FacetWP:

FacetWP - Facets used for post filtering

And here are the settings for the “Source” facet:

FacetWP - facet settings

The only nerdy part of this is the “parent term”. It requires usage of the ID number of the parent category. So, you’ve got to get that ID number.

FacetWP offers a lot of options for much more advanced filter forms. All kinds of different facet types other than dropdowns. But, my needs are simple for this particular form.

Next up, I needed to build a “Listing” with FacetWP. This is what will actually show the posts on the front-end of the website and then react to the filter options.

FacetWP has it’s own built-in little visual builder for building these things. And once you’ve build a listing view, that view will have a corresponding shortcode. Drop that shortcode onto your site and everything will just… work.

The visual builder for Listings is rather simplistic and it might take a little trial and error to get the result to look the way you want. In my case, the listing of blog posts was going to be quite simple (see below). I put it into 2 columns, too.

FacetWP - Visual Builder

So, at this point, I have built 3 facets and 1 listing. The 3 facets are meant to put filters on the listing. All 4 items are represented by shortcodes. So, all that is left is to drop these shortcodes into my page design how I want it all to look. Here’s how it looks in the blocks builder as I designed my homepage:

Setup in the block builder

In order to tweak the design a bit, I used a little bit of custom CSS on it. But, the result is, once again…

Listing of articles from multiple sources, categorized and filtered

How You Could Use This

Obviously, this write-up is all about how I built this specific setup on my own site. But, it is all about what YOU can do with your own site.

If you are similar to me in that you have one “hub” site where you’d like to simply list content from your other sites, then this setup could be built almost as a clone and you’d get it done.

Another viable method of content creation these days is curation, though. Where you monitor a market lots of information sources and you find the best stuff to bring to your audience’s attention. This setup would work very well for you if you’re a content curator.

In fact, if you’re a content curator, you probably don’t even need or want FacetWP. Just use Feedzy only and set up your source feeds the way you want. Maybe even use some keyword filters to import only the content you are most interested in. Leave out the little PHP code which overwrites the source URL so you can link to your own post. Lastly, set Feedzy to leave the post in draft rather than publish it. Then, you can go in, fully develop the post on your own and then publish when it is ready.

Want This Done For You?

Want to get this built for you and just not mess with it yourself? Not a problem. I’ve got the blueprint built up already and could get it set up on your site fairly rapidly.

Make sure you have 1 service credit on your member account. If you don’t have one, just go buy at least one. Then, submit a tech service request and tell me you want the curation blueprint. I’ll have it set up for you on your site pretty quickly. Plugins will be included, so no worries there.

Got A Question? Need Some Assistance?

Have a question about this article? Need some help with this topic (or anything else)? Send it in and I’ll get back to you personally. If you’re OK with it, I might even use it as the basis of future content so I can make this site most useful.

Question – Lead Form