Pre-Filtering CPT Items by Taxonomy in WordPress
In the Oxygen Facebook group a user asked:
Looking to have an archive page for a CPT (locations). Where all members will login and visit. Upon visiting the page, they should only see posts that have a custom tax that matches their membership product.
This members-only tutorial provides the steps to
- create a membership product using WP-Members
- assign a membership to a user (subscriber)
locationCustom Post Type having a
Sample location items: House 1, House 2, House 3, House 4, House 5 and House 6.
Sample taxonomy terms: Miami, New York, Tulsa.
Of these, House 3 and House 6 are tagged as Miami.
Let's say a user,
miami-user has been given product access to
When this user is viewing example.com/locations/ he/she should only see House 3 and House 6 because these CPT entries have the taxonomy term that matches the user's membership.
Install and activate WP-Members.
Settings > WP-Members > Other Settings: Tick "Enable Products".
Configure other settings as needed.
Go to Memberships and add a new product named say, "Miami" (to follow along with the tutorial).
Add a new test subscriber user named say
location post type using CPT UI or otherwise.
Set Has Archive to True.
locations as the post type archive slug.
customer taxonomy attached to Locations.
Create a few sample taxonomy terms: Miami, New York, Tulsa.
Add a few sample location CPT items: House 1, House 2, House 3, House 4, House 5 and House 6.
Set Miami as the location for House 3 and House 6.
Note: This tutorial not only works when a CPT has one taxonomy term set, but also when more than one term has been set.
Set up a Template that applies to
location CPT archive.
If using Oxygen, add an Easy Posts component and ensure that query type is left as Default.
With a simplified Template PHP and CSS, it should show all the CPT items like this:
Install and activate Code Snippets plugin.
Go to Snippets > Add New.
Title: Pre-Filter Locations by Customer(s)
This is a premium members-only content.
To view the rest of the content, please sign up for membership ($47/month or $599 one-time).
Already a member? Log in below or here.