Download existing plugins and look at the code. That’s how I learn by disecting and seeing the workings of a functional plugin. Also I plan an idea and then learn as I go along. If you get stuck there are plenty of people here who might help. And like @djpaul said you need to understand php as that’s what WP/BP is built on
A good way to start are these 2 pages:
This one specifically for BP:
https://codex.buddypress.org/home/
And this one for WP:
https://codex.wordpress.org/Main_Page
On that last one have a look at the developers documentation.
But as said before, if you don’t know php, then that’s where you need to start.
I actually learned PHP by doing WP development, so I don’t think you have to do it in that order. But you do have to get real good at Googling, and you have to have a lot of patience combing through source code of other plugins, as @modemlooper suggests, and at the source code of BP and WP itself.
@boonebgorges
true. it makes a lot more sense working towards a certain goal. in my case that was also wordpress development, so that’s the way i learned php as well. which wasn’t necessarily the easiest or fastest way to do it. Anyways, I think, having a certain understanding of php makes it so much easier to understand WP, or any other php-based code.
Once I got my hands on Programming PHP, my skills developed a lot faster than by trying to figure out stuff by reading other peoples source code.
Personally, I found the best resource ever for PHP to be php.net — for any function I need to get into, etc. Plus the code snippets people leave on the php.net sites are awesome.
For exploring BP’s available API and how to go about doing anything I’d suggest diving into the Core Code of a “related” (something that can have a bit of similar functionality to what you intend to make) component. Find out what is similar to your intended plugin, and see how that is implemented — it acts as a good starting point to the BP API available.
Use some editor that allows quickly jumping between functions/class definitions from calls to them — it’ll make browsing that much more helpful. (I tend to stick with gVim + exuberant ctags).
read this php tutorial to learn more about creating forms on your site