WordPress / Learn

WordPress.org Learn - The canonical source for the code and content behind https://learn.WordPress.org
274 stars 101 forks source link

Learning Pathway: Intermediate Plugin Developer #2044

Open jonathanbossenger opened 11 months ago

jonathanbossenger commented 11 months ago

Learning Pathway: Intermediate Plugin Developer

The intermediate plugin developer has the fundamental knowledge needed to develop for WordPress gained in the Beginner Developer Learning Pathway and has decided to focus on plugin development.

See the all the Developer pathways outlined in this document.

It is estimated that a single content creator working full-time on this content, at an average of 2.5 video lessons per week, will take approximately 21 weeks to complete all the lessons in this learning pathway.

The estimated date for completion is 28 February 2025 (see https://github.com/WordPress/Learn/issues/2044#issuecomment-2426732529).

Call for contributors post: https://make.wordpress.org/training/2024/07/30/call-for-contributors-intermediate-plugin-developer-learning-pathway/

Public GitHub repository for all lesson scripts: https://github.com/wptrainingteam/learn-wp-content/ Location of scripts for this learning pathway: https://github.com/wptrainingteam/learn-wp-content/tree/main/plugin-developer-learning-pathway

Production status

7/51 lessons published (13.72%)

jonathanbossenger commented 9 months ago

Note: Once the Interactivity API has landed in core, add it to this learning pathway

jonathanbossenger commented 8 months ago

Related: Custom Database Tables

jonathanbossenger commented 7 months ago

Consider adding a new module on advanced WP REST API Authentication covering

jonathanbossenger commented 7 months ago

Update, moved the Roles and Capabilities module from the beginner pathway to here. Moved the lesson on enqueuing CSS and JS to the Introduction to plugin development module in the beginner pathway.

jonathanbossenger commented 7 months ago

Consider adding an advanced WP REST API module covering

jonathanbossenger commented 4 months ago

Consider including #2461

jonathanbossenger commented 4 months ago

How can we include The Storybook into the module on advanced block development

jonathanbossenger commented 4 months ago

Note to self, once #1984 is launched, re-review the modules/lessons in this pathway, to ensure the content is still relevant.

eirichmond commented 4 months ago

@jonathanbossenger I believe I've seen a response to my question in another Learning Pathway issue, but I would like to clarify it here as well. Firstly, I must say that this proposal appears to be a comprehensive and valuable Learning Pathway for plugin development. My question is: are you proposing to complete this project individually, or is there an opportunity for others, like myself, to contribute a single module collaboratively? Apologies if this seems like a basic question; I just want to ensure I understand the commitment required.

jonathanbossenger commented 4 months ago

@eirichmond great question.

I would greatly appreciate any and all help I can get :grin:

As a team, one of our primary goals for the Learning Pathways project is to create "clear, user-friendly pathway for learners of different levels, roles, and use-cases.".

This, and the other developer-focused pathways, form part of that goal.

As you may have seen from the beginner and theme developer , the more folks we can onboard to help us create this content, the faster it gets created.

an opportunity for others, like myself, to contribute a single module collaboratively?

I also wanted to highlight this point. I think it's important for each module to be self-contained. This means it would be ideal if the design and presentation of all the lessons in any specific module were the same. You will see this in the Introduction to WordPress themes module that Cynthia created for the beginner pathway and any of the modules she worked on in the theme developer pathway.

So if possible, it would be great if individual collaborators were able to take ownership of a specific module, instead of only working on specific lessons.

Final note, the planned deadline for this learning pathway is the end of 2025, so we do have some time. Please only take on that which you feel you have time for, it's important to me that contributors are able to balance life, work, and their volunteer contributions.

jonathanbossenger commented 3 months ago
jonathanbossenger commented 3 months ago

Module: Administration Menus

Objective:

Lessons

Module: Settings

Objective:

Lessons

Module: Shortcodes

Objective:

Lessons

jonathanbossenger commented 3 months ago

Content creation resources

Documentation

Example Module/lessons

Beginner Developer Module 4: WordPress Hooks

Title GitHub Issue Script URL Lesson URL
WordPress Hooks #2079 Script Lesson
WordPress Action Hooks #2080 Script Lesson
WordPress Filter Hooks #2081 Script Lesson
Working with hooks #2209 Script Lesson
jonathanbossenger commented 3 months ago

To anyone interested in contributing to this learning pathway, please share in which of the areas listed in the original post you think you'd be able to help out with?

  1. Scriptwriting: Research lesson topics and write draft scripts that meet the lesson’s learning outcomes.
  2. Voice recording: Taking an existing script and recording the audio portion of a video lesson.
  3. Video editing: Merging a script with a voice recording and compiling a clear and engaging video lesson.
  4. Content creation: Taking an existing script (or researching and writing your own) and producing an entire video lesson
  5. Reviewing: Watching a completed video lesson and reviewing it for technical accuracy.
courtneyr-dev commented 3 months ago

Hey @olafleur-godaddy when you are back, tagging you in based upon some of our chats at WordCamp Canada and thinking you might be interested in some of this area.

CrochetFeve0251 commented 3 months ago

Hey @jonathanbossenger ,

I saw you were looking for some contributors.

I would be glad to help.

Concerning module 2 about custom hooks, I am wondering about something. Should we talk about the fact filters are not returning a guaranteed type? (I didn't saw it mentioned anywhere in the documentation)

I think that could help them adopt good practices from the standard and not spend hours trying to figure out what is the problem in their code when it comes from a wrong callback on the website from a client.

I also did some page about that topic here which explains the issue and how we are currently solving this at WP Media. Maybe it could inspire us for this tutorial.

jonathanbossenger commented 3 months ago

Hey @CrochetFeve0251

Thanks for your interest. Perhaps you could leave the comment on the issue for the Custom Hooks lesson, and we can discuss it further there?

courtneyr-dev commented 3 months ago

I've asked the plugin review team to especially take a peek at Modules 15 & 16 https://wordpress.slack.com/archives/C1LBM36LC/p1722373446911739

thisismyurl commented 3 months ago

@jonathanbossenger, I'd be interested in contributing if you're still looking for a developer with a background in plugin development.

DevinWalker commented 3 months ago

Hey hey! I'm also interested in contributing.

tarecord commented 3 months ago

Hey @jonathanbossenger, I'm totally down, this sounds right up my alley 🤘🏼

jonathanbossenger commented 3 months ago

Thanks for your interest @thisismyurl @DevinWalker @tarecord

To anyone interested in contributing to this learning pathway, please share in which of the areas listed in the original post you think you'd be able to help out with?

  1. Scriptwriting: Research lesson topics and write draft scripts that meet the lesson’s learning outcomes.
  2. Voice recording: Taking an existing script and recording the audio portion of a video lesson.
  3. Video editing: Merging a script with a voice recording and compiling a clear and engaging video lesson.
  4. Content creation: Taking an existing script (or researching and writing your own) and producing an entire video lesson
  5. Reviewing: Watching a completed video lesson and reviewing it for technical accuracy.

Please also indicate if there are any modules above that you have a strong desire to collaborate on.

CrochetFeve0251 commented 3 months ago

@jonathanbossenger

For my part, I can help on:

  1. Scriptwriting: Research lesson topics and write draft scripts that meet the lesson’s learning outcomes.
  2. Reviewing: Watching a completed video lesson and reviewing it for technical accuracy.

For Voice recording: Taking an existing script and recording the audio portion of a video lesson I can try to make as well, but I am not sure about the quality so far.

Concerning modules, I think I would be more useful in theses:

I can help on other parts, but I think that it is where I have the most experience.

jonathanbossenger commented 3 months ago

@CrochetFeve0251, that all sounds great to me.

For Voice recording: Taking an existing script and recording the audio portion of a video lesson I can try to make as well, but I am not sure about the quality so far.

I understand, we can experiment with this, and see how it goes.

For now, shall we start with you scriptwriting the lessons in Module 2: Advanced hooks? I'd rather focus on assigning one set of lessons at a time, that try to overload you with too many lessons at once.

webcreativeng commented 2 months ago

For me, I can help with either of the following, whatever is needed.

In terms of modules preferred, I think I can start with whatever module has scripts ready so that there's some form of order.

Let me know how this sounds!

Cheers!

jonathanbossenger commented 2 months ago

Thank you to everyone who's shown interest in helping create this plugin developer learning pathway.

Throughout the rest of this week, I will update all lesson issues with more detailed lesson information, including prerequisite knowledge, learning outcomes, and any relevant documentation or external links.

Once that is done, we can start assigning lessons to folks. Please make sure to review all the modules and lessons and indicate your interest. The most straightforward way to do this is to comment on the lesson issues directly. This is also a great place to ask questions.

I will also be hosting a Content Creator Coffee hour on Tuesday, the 13th of August, at 14:00 UTC (see details in the training team calendar). This is an informal session where we meet to chat about content creation for Learn WordPress. I am planning to share a short overview of my content creation process in that call, so if you are free, please consider joining.

agiljulio commented 2 months ago

Hi, I'm interested in working on Module 1 👍

CrochetFeve0251 commented 2 months ago

Thank you to everyone who's shown interest in helping create this plugin developer learning pathway.

Throughout the rest of this week, I will update all lesson issues with more detailed lesson information, including prerequisite knowledge, learning outcomes, and any relevant documentation or external links.

Once that is done, we can start assigning lessons to folks. Please make sure to review all the modules and lessons and indicate your interest. The most straightforward way to do this is to comment on the lesson issues directly. This is also a great place to ask questions.

I will also be hosting a Content Creator Coffee hour on Tuesday, the 13th of August, at 14:00 UTC (see details in the training team calendar). This is an informal session where we meet to chat about content creation for Learn WordPress. I am planning to share a short overview of my content creation process in that call, so if you are free, please consider joining.

@jonathanbossenger I will be there to talk, starting to working on the script made me discover I am not 100% sure what to produce. (How long should it be, which tone to use, etc ) Btw that might be good practice to have an example from a script, so we all respect more or less the same standards when creating our own scripts.

jonathanbossenger commented 2 months ago

@CrochetFeve0251 100%. I will share some links with you on the first lesson, we have both handbook pages you can follow, and I can share some example scripts from previous lessons I've worked on.

olafleur-godaddy commented 2 months ago

Hey @olafleur-godaddy when you are back, tagging you in based upon some of our chats at WordCamp Canada and thinking you might be interested in some of this area.

Yes @courtneyr-dev , I would be glad to help however I can! :)

jonathanbossenger commented 2 months ago

I wanted to share that the Content Creator Coffee hour planned for today has been moved to next Tuesday, August 20, at 14:00 UTC. (see details in the training team calendar)

jonathanbossenger commented 2 months ago

Thank you for your interest @olafleur-godaddy

To anyone interested in contributing to this learning pathway, please share in which of the areas listed in the original post you think you'd be able to help out with?

  1. Scriptwriting: Research lesson topics and write draft scripts that meet the lesson’s learning outcomes.
  2. Voice recording: Taking an existing script and recording the audio portion of a video lesson.
  3. Video editing: Merging a script with a voice recording and compiling a clear and engaging video lesson.
  4. Content creation: Taking an existing script (or researching and writing your own) and producing an entire video lesson
  5. Reviewing: Watching a completed video lesson and reviewing it for technical accuracy.

Please also indicate if there are any modules above that you have a strong desire to collaborate on.

jonathanbossenger commented 2 months ago

For me, I can help with either of the following, whatever is needed.

  • Video editing: Merging a script with a voice recording and compiling a clear and engaging video lesson.
  • Content creation: Taking an existing script (or researching and writing your own) and producing an entire video lesson
  • Reviewing: Watching a completed video lesson and reviewing it for technical accuracy.

In terms of modules preferred, I think I can start with whatever module has scripts ready so that there's some form of order.

Let me know how this sounds!

Cheers!

@webcreativeng thanks for the update.

At the moment, @agiljulio has shown interest in working on video editing for module 1, and @CrochetFeve0251 is keen to work on research and script writing for module 2. How would you feel about collaborating on module 2 with @CrochetFeve0251?

CrochetFeve0251 commented 2 months ago

For me, I can help with either of the following, whatever is needed.

  • Video editing: Merging a script with a voice recording and compiling a clear and engaging video lesson.
  • Content creation: Taking an existing script (or researching and writing your own) and producing an entire video lesson
  • Reviewing: Watching a completed video lesson and reviewing it for technical accuracy.

In terms of modules preferred, I think I can start with whatever module has scripts ready so that there's some form of order. Let me know how this sounds! Cheers!

@webcreativeng thanks for the update.

At the moment, @agiljulio has shown interest in working on video editing for module 1, and @CrochetFeve0251 is keen to work on research and script writing for module 2. How would you feel about collaborating on module 2 with @CrochetFeve0251?

@jonathanbossenger as the meeting was moved up by a week, feel free to share the links you were talking about here, so I can take a lot at them, and we won't be waiting an extra week.

jonathanbossenger commented 2 months ago

@jonathanbossenger as the meeting was moved up by a week, feel free to share the links you were talking about here, so I can take a lot at them, and we won't be waiting an extra week.

@CrochetFeve0251 100%. To make it easily accessible to everyone, I've added it in a comment in this issue: https://github.com/WordPress/Learn/issues/2044#issuecomment-2241092736.

The comment contains links to the Lessons section of the Training Team handbook, a Google doc summarising my personal lesson creation process, and an example module from the Beginner Developer Learning Pathway. The table includes links to the GitHub issues where the content was created for each lesson in the example module, links to my lesson scripts, and the final lesson on Learn WordPress.

My suggestion is that you start on your first script for the #2700 lesson and share your first draft in the comments of that lesson issue. I'll happily review it and provide feedback.

jonathanbossenger commented 2 months ago

In order to help with notifying folks of updates to the development of this learning pathway, I have assigned everyone who indicated their interest to this tracking issue. If you don't want to be notified of updates to this issue, please let me know, and I will unassign you.

jonathanbossenger commented 2 months ago

Today, I created an unplanned lesson on PHP code structure, which aims to introduce beginners to using classes in PHP.

The main reason behind this lesson is to introduce the concept of classes in PHP, as one of the examples of avoiding naming collisions in plugins is to use a class with static methods.

The Advanced developer learning pathway has an entire module on Object Oriented PHP development for WordPress, (which still needs to be fleshed out) and so it's probably best to leave the bulk of that learning in that module, but introduce some basic concepts here.

If anyone would like to review the script, it's linked in the lesson issue. Please feel free to leave your feedback in the comments on that issue.

CrochetFeve0251 commented 2 months ago

Today, I created an unplanned lesson on PHP code structure, which aims to introduce beginners to using classes in PHP.

The main reason behind this lesson is to introduce the concept of classes in PHP, as one of the examples of avoiding naming collisions in plugins is to use a class with static methods.

The Advanced developer learning pathway has an entire module on Object Oriented PHP development for WordPress, (which still needs to be fleshed out) and so it's probably best to leave the bulk of that learning in that module, but introduce some basic concepts here.

If anyone would like to review the script, it's linked in the lesson issue. Please feel free to leave your feedback in the comments on that issue.

Mmmm while it is a good idea to actually teach them how to prevent clashes between plugins or themes, I am wondering if teaching them to use namespaces wouldn't be a better option rather than using a unique class name.

That would make them learn only one notion instead of learning a first one then having to change it with another which is the modern way of doing it.

eirichmond commented 2 months ago

Just realised I might have put my comment on the wrong thing >< it's been a while since revisiting this and there has been some awesome work done here, it's great 👍 I'd be more than happy to take on one of these modules to show an example of how I would create a video with graphic elements to demonstrate what I can contribute to this?

jonathanbossenger commented 2 months ago

Mmmm while it is a good idea to actually teach them how to prevent clashes between plugins or themes, I am wondering if teaching them to use namespaces wouldn't be a better option rather than using a unique class name.

@CrochetFeve0251 I agree with you there. While I was working on the script for #2696 I realised that the documentation on doesn't even include namespaces, probably because it was written in a time before namespaces were common place. So I'm going to include namespaces as a solution in #2696, and look at getting the docs updated at the same time.

jonathanbossenger commented 2 months ago

Just realised I might have put my comment on the wrong thing >< it's been a while since revisiting this and there has been some awesome work done here, it's great 👍 I'd be more than happy to take on one of these modules to show an example of how I would create a video with graphic elements to demonstrate what I can contribute to this?

Thanks @eirichmond. At the moment we do have video creators paired with script writers for the first two modules, but I will certainly reach out to you if we have more scripts that need video creation.

jonathanbossenger commented 2 months ago

Update on learning pathway deadline.

I want to share an update on the proposed deadline for this learning pathway.

In the original description of this issue, I indicated it would take approximately 20 weeks to complete all the lessons in this learning pathway. With the original call for contributors post shared on 30 July 2024, 20 weeks would mean aiming for completion on 13 December 2024.

Since then, additional lessons have been added to the pathway, bringing the total up to 53 lessons (from the original 50). This means we need approximately another week, pushing the deadline to 20 December 2024.

From now on, I will ask all contributors to share their ETAs for whatever they are working on in the individual GitHub issues so that we can plan specific tasks and work towards completion by this date. I will also post monthly updates on progress here at the end of every month. These updates will be shared with the training team during weekly training meetings at the start of every new month.

MichelleBlanchette commented 1 month ago

Including myself here on the main thread. 👋

I'm happy to help with reviewing for technical accuracy, proper language, typos, offering suggestions, and maybe even writing scripts for any lessons as needed to help us meet the December deadline.

If you need anything, just @ me.

This is my first time contributing to Training, but I'm excited to finally have the chance to help!

Cheers!

MichelleBlanchette commented 1 month ago

@jonathanbossenger I just realized there's no mention of making plugins compatible with WordPress multisite installations, unless I'm missing something.

Should a lesson be added to quickly note some considerations that plugin developers should be aware of? There's particularly considerations when it comes to custom database tables and uninstalling data across all subsites, so maybe it could be a lesson under that module.

jonathanbossenger commented 1 month ago

Hi @MichelleBlanchette thanks for your interest.

I'm happy to help with reviewing for technical accuracy, proper language, typos, offering suggestions, and maybe even writing scripts for any lessons as needed to help us meet the December deadline.

Currently, modules 1-3 have script writers, so feel free to comment on any of the lessons from module 4 onward, if you'd like to write scripts for them.

I just realized there's no mention of making plugins compatible with WordPress multisite installations, unless I'm missing something.

There is a lesson on developing for multisite in the Multisite module on the Beginner developer learning pathway

If there's anything you feel is missing from those lessons, you're welcome to suggest it. However, it might have to wait until there's an available content creator or once this learning pathway's content wraps up.

jonathanbossenger commented 1 month ago

Content update: 2024-09-12

I've moved two lessons, #2708 and #2764 into a TBD (to be determined) section.

Once these modules/lessons are fleshed out better, we could perhaps add them to the learning pathway later.

jonathanbossenger commented 1 month ago

There seems to be a limit to how many contributors can be assigned to a single GitHub issue. Therefore, I will only assign people to this tracking issue who are currently actively working on individual lesson content. If you want to receive updates on this issue, please consider subscribing.

jonathanbossenger commented 1 month ago

A note to all contributors to this (and any other developer-focused content for learn.wordpress.org): for the past year or so, I've been maintaining a GitHub repository of all my notes and scripts (online workshops, lessons, courses, etc). I find it easier to maintain these scripts in markdown in GitHub to allow for better collaboration.

Today I moved this repository to the wptrainingteam GitHub organisation, so that it's available more publicly. If you are working on content for learn.wordpress.org, and you'd like to use this repository as well, please go ahead and fork it, and start creating PRs.

https://github.com/wptrainingteam/learn-wp-content

If you want to add your lessons in this pathway to that repository, all the plugin developer lesson scripts are available here https://github.com/wptrainingteam/learn-wp-content/tree/main/plugin-developer-learning-pathway

MichelleBlanchette commented 1 month ago

@jonathanbossenger I'd like to claim Module 7: Custom Databases if it's available. I can do all the writing and video recording for it—possibly even the video editing, too. But I'll definitely be happy to receive any feedback and reviews along the way.

I'm actually interested in several of the other module topics, too, but I'll just have to see how long it takes me and how much time I have to work on these, so I'll just claim the one for now. 🙂

jonathanbossenger commented 1 month ago

I'd like to claim Module 7: Custom Databases if it's available.

@MichelleBlanchette it's yours! 🎉 I will assign you to the first lesson.