Developer Diaries – WP Teams and Other Updates

person's left hand
Photo by ål nik on Unsplash

I’m beginning an experiment, and I’m curious if others would be willing to pay for it.

You see, I’m developing a plugin that will allow you to have team pages on the front-end of your site. If you’d like an example use-case, please visit a teams page I coded ages ago, but is still extremely slick looking.

BigWing Interactive’s Teams Page

I no longer have access to the source code, so I figure I’ll just reverse engineer it and build a plugin around it called WP Teams.

Teams Logo
WP Teams Logo

The first instinct is where do I release it when it’s finished. If I charge, what business model do I want to choose. Am I building a plugin again for someone else to buy it off me? Can I release a freemium version in the repo and have add-ons that extend its functionality?

It’s hard to decide. There’s first, a licensing issue. I plan on using Fancybox and Mixitup to enhance the front-end experience like in the animated gif above. A license to include Fancybox in a releasable Open Source project costs about $100 if I remember correctly. I used it in Simple Comment Editing Options for front-end editing.

Here’s an example I did for SCE Options.

I decided to use Bootstrap for the popup in an iframe using admin-ajax.php to control the popup html. Simple Comment Editing Options is by far the biggest money maker of all my products I sell. It’s just that Simple Comment Editing has about 3000 installs. And if only 4% of those users buy SCE Options, that is only 120 buyers throughout the plugin’s cycle. If each customer checks out at $20 a year and keep the subscription, the total would come out to be $2400 extra each year. Not horrible for a side project.

My other side project, Vapor Modules, is not doing so well. I even released a free tier in order to charge for support, and there have been little takers. It’s a little depressing to be honest because I have put a ton of effort into the modules, which there are 80+. Some more useful than others. But some of them are pretty darn cool/useful. And it being free, it’s kinda a no-brainer to go back it up. </advertisement> 🙂

Back to Teams. It’s going to be a huge project. They’re going to have to be:

  • A settings page in the admin area
  • A teams area where you can view and add the teams
  • A sorting area where you can sort the categories, team members, and even the team order itself.

Some requirements that I want to have:

  • Have custom endpoints like WooCommerce and BuddyPress for the team archives (showing all the team members), the team category page, and an individual team member page that can be customized.
  • For adding team members, you’ll start with an empty team landing screen in the admin similar to WooCommerce where it says, “Hey, you don’t have any teams… Create one?”
  • It’ll then have a quick wizard that allows you to create each Team.
  • Once the wizard is completed, you can choose to through the wizard again, or go into edit mode where you add the team members.
  • Each team member can be assigned a category that is non-hierarchical (similar to tags).
  • Each category will have its own landing page and list all team members beneath it.
  • Each team member needs meta information such as:
    • Photo
    • Photo on Hover
    • Job Title
    • Social Networks
    • Biography
    • Website Links
    • First, Middle, Last name
    • Display Name and/or Nickname
    • Phone
    • Email
    • Website
    • Location
    • The ability to add all, delete all, or add custom ones. The custom fields would have to be stored perhaps in a custom WordPress table.
  • Each category will be able to be sorted based on the team. Each team member in each category can be sorted as well.
  • Multisite compatibility (a paid add-on?)
  • A theme selection option. This is where I think we can charge for add-ons if there’s somehow a way to release this in the repo with all the third-party licenses. @thefancyapps @patrickkunka, any help there?
  • Have the option to disable/delete team members, schedule a deletion (in the form the employee or team member gave their notice).
  • Blocks for an author’s individual page that includes block templates that can show all mentioned above meta information.
  • Template override
  • White labeling, which can be an add-on.
  • Preview mode for the front-end without having to leave the admin. This is where I think Fancybox could come into play. It’s perfect for previews.
  • The front-end and preview will be sortable and loaded by Mixitup. MixItUp will be just one piece of the puzzle. I want to allow others to create and sell templates for the plugin. The front-end needs to be flexible to show custom archives, custom template parts for the team member display, and the individual team member page to be customizable via Gutenberg blocks.

So the decision, as I’m developing it, is to work towards the WordPress.org repo as I think a lot of people will enjoy this type of plugin out of the box. And I’d like to team up with another developer or two to build this thing. I can attempt to pay you, but I have to admit that MediaRon is barely breaking even, if not even that, so it might have to be on good faith that you’ll get a percentage of all sales. In other words, we’d be partners. This might be a nice idea that people would be willing to pay extra for because the base project will be so nice and work almost 100% without having to purchase an add-on.

So the idea, if I can make it happen, would be a release on .org with a paid add-on and support model. If themes become popular enough, we can list third-party affiliates (makers of the theme) a place on a marketplace/developer portal for approved third-party developers. I already have an affiliate plugin installed called SliceWP that I’m testing against AffiliateWP. So far I’ve been very impressed with SliceWP’s support compared to AffiliateWP’s (btw, the re-design of Vapor Modules was based on AffiliateWP’s excellent design). And the user experience in SliceWP is way better. Perhaps I’ll write a review? I just need enough affiliates on both sites to be able to have an accurate experience. Want to help me and sign up for both?

Don’t worry, you have nothing to lose. I won’t spam you. I haven’t emailed my MailChimp list in more than two months. I figure I have better stuff to say here and I’m no marketer.

Back to Teams. It’s going to be difficult. The rewrite rules themselves are going to be an issue. I’ll have to see how Woo and BuddyPress handles it. I’m still not sure how to handle the URL structure or data structure when there are multiple teams.

I’ll also need to think about third-party integrations. What can the plugin be compatible with? Such as membership plugins, multilingual plugins, existing profile directory plugins (have an import/export, which can be a paid add-on).

Work on WP Teams So Far

I’ve set up Webpack to handle my basic JS and SCSS files. I’m eventually going to configure Webpack to handle the Gutenberg blocks I’ll need for the profile blocks. I’ve never had to set up Webpack for that before, so I’m not sure how difficult it would be to mimic the functionality of Create Guten Block; .@MrAhmadAwais makes it incredibly easy to start and create a Gutenberg block.

But blocks are way into the future. I don’t even want to think about them right now. The first priority is the admin panel.

I really like WP Rocket’s admin panel.

WP Rocket Administrative Panel
WPRocket’s Admin Panel

I asked on Twitter if there was an admin panel CSS library for WordPress.

The answer was no. .@psahalot, I think your team is perfecting for developing a sale-able Admin UI library for WordPress. This will become increasingly important as the WordPress admin moves more towards Gutenberg, so it’ll be a huge project in itself, and not something I can contribute to on my own, although I would do my best.

By the way, if you’re curious how I’m highlighting my share text, it’s from my plugin Highlight and Share.

And above is yet another plugin I used and help develop called Plugin Info Card.

Sorry, I’m full of advertisements today 🙂

Anyways, here’s a rough draft of the Teams admin.

Teams Top Level Menu Item
Teams Top Level Menu Item
Teams Admin Settings Panel
Teams Admin Settings Panel

I have the license, image sizes, and white label portions done. White labeling is turning out to be more complicated than I thought, so it’s going to likely be its own paid add-on.

The actual “Add Teams” page will be coded in React because of all the moving pieces. It’ll have these main screens:

  • The team listing page
  • The team landing page when there are no teams
  • The edit team wizard
  • The edit team view where there will be UI components for adding, editing and deleting team members
  • Perhaps a separate view for the endpoints rather than including them in the admin settings as shown above

Each will be fairly complicated. Then we’ll have to have some of sorting mechanism. Luckily I wrote a few plugins that do that pretty well already.

The decision needs to be made whether to use those plugins for the sorting, or to bake it into the plugin itself. Perhaps as an add-on? Seems like base functionality right now.

Once the back-end is complete, or ideally both front-end and back-end could be developed in parallel with the front-end saying, “Yo, I need this option or data.” And the back-end saying, “Eh, but sure okay.”

If it’s just me, it’ll be just me talking to myself 🙂

Other Projects

I just released tutorial for adding icons to Gutenberg block categories. Gutenberg Times was happy to create a tweet specifically for it and I appreciate that very much. They had to look up my name, twitter handle, and post after all. That’s a bit of work for a tweet. So mucho props and thanks!

I had my Ajax in WordPress Auto Updates Pull-Request accepted.

https://github.com/www/mediaron_279/public/wp-autoupdates/pull/61

This is a gif of what it does.

Auto-updates Ajax Behavior

The team of the featured plugin made me feel very welcome, especially for my first time ever contributing to the WordPress GitHub repository. If the plugin is successfully merged into core for WordPress 5.5, or 5.6 if we’re unlucky, I’ll have another notch in the contributing to Core belt. I think it would be the first time I contributed to Core since 4.7. It’s been a while.

I renamed Custom Post Types Block to Custom Query Blocks.

The plugin has quite a history, and it’s a good read. We’re also looking for volunteers to test and provide enhancement ideas for the plugin. Just sayin’.

And finally, I wrote two articles:

The former, I wrote a plugin for that demonstrates how I plan to use the team’s license page. Feel free to take it for a spin and try out the supplied license key.

The block categories post, I kinda wrote for Paid Memberships Pro. I work with @pmproplugin full-time as a support engineer in the morning and early afternoon and absolutely love the job and team. I think I might have found a second family. We’re all in it together, and there is no such thing as being annoyed from being asked a question because you’re in it to help each other through thick and thin. And let’s be honest, things are thick and thin at the same time right now.

The Future

I’m going to be honest. I’m going to charge for my thoughts. The first viewing of these developer diaries will be free so you can at least see my ranting process. After that, I ask for $10 a year. It’ll also be a good time to try SliceWP and Paid Memberships Pro together. I’m still not sure how the two work together, because, gasp, I need affiliates to know for sure.

Okay, so I’ve put in more product placement than a Michael Bay movie. So let’s end this here. Feel free to leave any comments and I’ll be sure to respond.

Thanks for reading and I’m looking forward to writing the next installments, which I’ll find time on the weekends for.

Ronald Huereca
Ronald Huereca

Ronald Huereca

Ronald has been part of the WordPress community since 2006, starting off writing and eventually diving into WordPress plugin development and writing tutorials and opinionated pieces.

No stranger to controversy and opinionated takes on tough topics, Ronald writes honestly when he covers a topic.

Leave a Comment