SlideShare a Scribd company logo
1 of 99
Download to read offline
an easy start guide for
Plugin Development
WordPress Meet-up!
on 2014/05/29!
in Bangkok, Thailand!
by Shinichi Nishikawa
about Me
❖ ผมชื่อชิน (Shinichi Nishikawa)!
❖ อยู่ที่กรุงเทพฯปีครึ่ง

Lived in Bangkok for half a year!
❖ สร้าง themes และ plugin ให้ลูกค้า

Building themes and plugins for customers!
❖ ผมชอบเขียนบล็อก เขียนหนังสือเกี่ยวกับ WordPress และจัด
WordPress Events ที่ญี่ปุ่นด้วย.

I write blogs with WP, I write books of WP, I ran WP events
Challenge
❖ ผมจะสอนวิธีทำpluginอย่างง่าย

I will try to explain how to make plugins as easy as
possible.!
❖ หากคุณมีคำถาม คุณถามได้ทุกเวลา

Don’t hesitate to ask questions any time!!
❖ คุณสามารถดาวน์โหลด presentation และ codesนี้ได้

Presentation and codes online will be uploaded.
Menu
❖ plugin ขั้นพื้นฐาน

Plugin basic!
❖ WordPress ทำงานอย่างไร

How WordPress works!
❖ plugin ทำงานกับ WordPress อย่างไร

How plugins work together with WordPress!
❖ ผมมีตัวอย่างpluginง่ายๆ3แบบ ที่จะทำให้คุณเข้าใจ

You will see 3 example plugins and understand them
After session
❖ คุณสามารถจะทำpluginอย่างง่ายได้

You can make a simple plugin!
❖ คุณจะรู้ว่าpluginทำหน้าที่อะไร

You will know what plugins do!
❖ คุณจะชอบWordPressมากขึ้น

You will be more interested in WordPress core
Enquete
❖ ใครทำWordPress Themeได้บ้าง

Anyone who can make WP Theme?!
❖ ใครทำPluginได้บ้าง

Anyone who can make WP Plugin?!
❖ ใครรู้จักphpบ้าง

Who knows php?
plugin คือ อะไร

What is a plugin?
What is a plugin?
❖ Tool to extend WordPress functionality!
❖ Without changing Core codes!
❖ Over 30,000 plugins at WordPress.org/plugins/
ต้องมีอะไรบ้าง
What do we need?
What do we need?
a WordPress
Get a clean install of a WordPress.
What do we need?
php, html, css, js
Plugins are written in php.!
!
Many plugins have html & css.!
!
Some plugins have Javascript.
php / basics
❖ variables!
✓ $a!
✓ $hubba!
✓ $posts
❖ functions!
function my_func() {

do_something();

}
❖ others!
✓ if!
✓ foreach!
✓ array
php / template tags
❖ the_title()!
❖ the_permalink()!
❖ the_date()!
❖ the_content()
❖ wp_title()!
❖ body_class()!
❖ get_post_thumbnail_id()!
❖ wp_nav_menu()
basic
wp-content/plugins/easy-plugin.php
WPจะรู้ว่านี่เป็นplugin.
WP knows it’s a plugin.
This comment is called plugin
header.
wp-admin/plugins.php
WP shows the plugin “Plugin Name: ” comes here.
More Plugin Header
<?php!
/*!
Plugin Name: Plugin ง่าย มาก!!
Plugin URI: http://nskw-style.com/my-plugin!
Description: plugin แรกของผม!
Version: 0.1!
Author: Shinichi Nishikawa!
Author URI: http://nskw-style.com!
License: GPLv2 or later!
Text Domain: easiest!
*/
wp-admin/plugins.php
WP shows the plugin
Those are required if you
want your plugin to be in
wordpress.org site.
ตัวอย่าง
Examples
ผมทำตัวอย่าง plugin 3 แบบ!
I made 3 plugins for tonight.
คุณจะเข้าใจใน 30 นาที!
!
It may seem difficult but!
you’ll understand in 30 minutes.
1 ใจเย็นๆ
<?php!
/*!
Plugin Name: ใจเย็นๆ!
Description: Tell people to take it easy.!
*/
1 ใจเย็นๆ
2 สุภาพ
<?php!
/*!
Plugin Name: สุภาพ!
Description: This plugin make all content polite.!
*/
2 สุภาพ
3 สบายใจ login
<?php!
/*!
Plugin Name: สบายใจ login!
Description: This plugin make login screen happy.!
*/
plugin.com/wp-login.php
3 สบายใจ login
Plugins have codes like,!
!
add_action( ‘location’, ‘function’ );!
or!
add_filter( ‘location’, ‘function’ );!
Let’s see how 3 plugins work.
I will explain the concept of plugin!
and!
we come back to these examples.
Concept of Plugin
We need to know how!
WordPress works.
WordPress Process
WordPress Process
WordPress process
WordPress Process
request: example.com/category/food
User sees the page.
WordPress process
WordPress Process
request: example.com/category/food
User sees the page.
Get DB info from
wp-config.php
connect to DB
WordPress Process
request: example.com/category/food
User sees the page.
Get DB info from
wp-config.php
connect to DB
load core functions
load plugins
load functions.php
WordPress Process
request: example.com/category/food
User sees the page.
Get DB info from
wp-config.php
connect to DB
load core functions
load plugins
load functions.php
query from URL
get post(s)
data from DB
WordPress Process
request: example.com/category/food
User sees the page.
Get DB info from
wp-config.php
connect to DB
load core functions
load plugins
load functions.php
template file
decided.
(category.php)
query from URL
get post(s)
data from DB
category.php!
header.php
loop
sidebar.php
footer.php
WordPress Process
request: example.com/category/food
User sees the page.
WordPress process
WordPress Process
request: example.com/wp-admin/post-new.php
User sees the page.
WordPress process
WordPress Processes can be …
!
✓ displaying home page
✓ displaying admin page
✓ displaying login page
✓ or any other things WordPress does
WordPress Process
request: example.com/wp-login.php
User sees the page.
WordPress process
WordPress Processes can be …
!
✓ displaying home page
✓ displaying admin page
✓ displaying login page
✓ or any other things WordPress does
That’s how WordPress works.
Now, the question is!
!
“how can plugins work!
with the process of WordPress?”
I need to talk about “Hooks”,!
the Secret Key of WordPress.
Hooks
WordPress process
Hooks
WordPress process
Hooks?
❖ Plugins access to hooks to put extra functions
to WordPress!
❖ There are 2 types of hooks.!
✓ Filter Hooks!
✓ Action Hooks
Hooks
Filter Hooks
WordPress process
Action Hooks
Actions!
&!
Filters
action
❖ Action is to do something.!
✓ to echo something!
✓ to save something!
✓ to redirect somewhere
filter
❖ Filter is to change something!
✓ change original text to your text!
✓ change original html to your html!
✓ change original php values to your values.
How hooks look like
apply_filters( ‘location1’, $value );
do_action( ‘location2’ );
filter hook
action hook
How hooks look like
❖ apply_filters( ‘location_name’, $value );!
❖ do_action( ‘location_name’ );
case: in Templates
apply_filters( ‘the_content’, $value );
do_action( ‘wp_footer’ );
ex ) example.com/about
filter hook
action hook
case: login screen
apply_filters( ‘login_message’, $value );
do_action( ‘login_footer’ );
ex ) example.com/wp-login.php
filter hook
action hook
case: admin pages
apply_filters( ‘admin_body_class’, $value );
do_action( ‘admin_head’ );
ex ) example.com/wp-admin/
filter hook
action hook
There are many hooks
name1 name2 name3 name5 name6 name7name4
there are
1,000+ filter hooks & 500+ action hooks
in WordPress
How to hook
How to register
apply_filters( ‘location1’, $value ); do_action( ‘location2’ );
Hooking Filters & Actions
❖ add_filter( ‘location’, ‘your_func_name’ );!
❖ add_action( ‘location’, ‘your_func_name’ );
Hooking Filters & Actions
❖ add_filter( ‘location’, ‘your_func_name’ );

function your_func_name( $default ) {



// do something



return $new;



}
Hooking Filters & Actions
❖ add_action( ‘location’, ‘your_func_name’ );

function your_func_name(){



// do something



}
Register filter
add_filter( ‘location1’, ‘func1’ );
function func1($value){
// make a filter here
return $value
}
apply_filters( ‘location1’, $value ); do_action( ‘location2’ );
Register action
add_action( ‘location2’, ‘func2’ );
function func2(){
// do something
}
apply_filters( ‘location1’, $value ); do_action( ‘location2’ );
Plugin Hook Concept
add_filter( ‘location1’, ‘func1’ );
function func1($value){
// make a filter here
return $value
}
add_action( ‘location2’, ‘func2’ );
function func2(){
// do something
}
apply_filters( ‘location1’, $value ); do_action( ‘location2’ );
Plugin Hook Concept
Plugin is a set of add_action() & add_filter()
add_filter( ‘location1’, ‘func1’ );
function func1($value){
// make a filter here
return $value
}
add_action( ‘location2’, ‘func2’ );
function func2(){
// do something
}
apply_filters( ‘location1’, $value ); do_action( ‘location2’ );
Plugin Hook Concept
Large plugins have many functions in them.
apply_filters( ‘location1’, $value ); do_action( ‘location2’ );
we go back to example plugins
ใจเย็นๆ
ใจเย็นๆ
request: example.com/category/food
User sees the page.
Get DB info from
wp-config.php
connect to DB
load core functions
load plugins
load functions.php
template file
decided.
(category.php)
query from URL
get post(s)
data from DB
category.php!
header.php
loop
sidebar.php
footer.php
wp_head();
wp_footer();
สุภาพ
สุภาพ
สุภาพ
request: example.com/category/food
User sees the page.
Get DB info from
wp-config.php
connect to DB
load core functions
load plugins
load functions.php
template file
decided.
(category.php)
query from URL
get post(s)
data from DB
category.php!
header.php
loop
sidebar.php
footer.php
apply_filters(
‘the_content’,
$content
);
สุภาพ
a little advanced
This is also possible.
สบายใจ login
สบายใจ login
สบายใจ login
request: example.com/wp-login.php
User sees the page.
check cookies
see ssl
condition
check errors
show logo
& message<html>
</head>
show <form>
do_action(‘login_footer’);
!
in plugin: echo <video>
display login footer
do_action(‘login_head’);
!
in plugin: echo <style>
สบายใจ login
More things you can do with
plugins.
add favicon to admin pages
change excerpt “[…]”
Hide admin notice of upgrades
shortcode
Resources
Resources
❖ Codex!
✓ http://codex.wordpress.org/Writing_a_Plugin!
✓ http://codex.wordpress.org/Plugin_API!
✓ http://codex.wordpress.org/Plugin_Resources!
❖ wordpress.org!
✓ http://developer.wordpress.org/reference/
Next meet-up!
!
“How to build theme properly”!
and!
“How to sell it on WordPress.com”
แนะนำหัวข้อที่น่าสนใจได้นะครับ!
Any suggestions for coming meet-up?

More Related Content

What's hot

Plugin development wpmeetup010
Plugin development wpmeetup010Plugin development wpmeetup010
Plugin development wpmeetup010Barry Kooij
 
Outside-in Development with Cucumber and Rspec
Outside-in Development with Cucumber and RspecOutside-in Development with Cucumber and Rspec
Outside-in Development with Cucumber and RspecJoseph Wilk
 
greach 2014 marco vermeulen bdd using cucumber jvm and groovy
greach 2014 marco vermeulen bdd using cucumber jvm and groovygreach 2014 marco vermeulen bdd using cucumber jvm and groovy
greach 2014 marco vermeulen bdd using cucumber jvm and groovyJessie Evangelista
 
Continuous Deployment at Etsy
Continuous Deployment at EtsyContinuous Deployment at Etsy
Continuous Deployment at EtsyPremshree Pillai
 
Ako na vlastne WP temy
Ako na vlastne WP temyAko na vlastne WP temy
Ako na vlastne WP temyJuraj Kiss
 
WordPress Theme Development for Designers
WordPress Theme Development for DesignersWordPress Theme Development for Designers
WordPress Theme Development for Designerselliotjaystocks
 
Workshop On WP-CLI
Workshop On WP-CLIWorkshop On WP-CLI
Workshop On WP-CLIAjit Bohra
 
How To Write a WordPress Plugin
How To Write a WordPress PluginHow To Write a WordPress Plugin
How To Write a WordPress PluginAndy Stratton
 
WordPress Realtime - WordCamp São Paulo 2015
WordPress Realtime - WordCamp São Paulo 2015WordPress Realtime - WordCamp São Paulo 2015
WordPress Realtime - WordCamp São Paulo 2015Fernando Daciuk
 
Getting big without getting fat, in perl
Getting big without getting fat, in perlGetting big without getting fat, in perl
Getting big without getting fat, in perlDean Hamstead
 
Grand Rapids PHP Meetup: Behavioral Driven Development with Behat
Grand Rapids PHP Meetup: Behavioral Driven Development with BehatGrand Rapids PHP Meetup: Behavioral Driven Development with Behat
Grand Rapids PHP Meetup: Behavioral Driven Development with BehatRyan Weaver
 
WordPress Structure and Best Practices
WordPress Structure and Best PracticesWordPress Structure and Best Practices
WordPress Structure and Best Practicesmarkparolisi
 
Drupal 8: Huge wins, a Bigger Community, and why you (and I) will Love it
Drupal 8: Huge wins, a Bigger Community, and why you (and I) will Love itDrupal 8: Huge wins, a Bigger Community, and why you (and I) will Love it
Drupal 8: Huge wins, a Bigger Community, and why you (and I) will Love itRyan Weaver
 
jQuery For Developers Stack Overflow Dev Days Toronto
jQuery For Developers Stack Overflow Dev Days TorontojQuery For Developers Stack Overflow Dev Days Toronto
jQuery For Developers Stack Overflow Dev Days TorontoRalph Whitbeck
 
Continuous Deployment at Scale, PHPConfAsia 2016
Continuous Deployment at Scale, PHPConfAsia 2016Continuous Deployment at Scale, PHPConfAsia 2016
Continuous Deployment at Scale, PHPConfAsia 2016Premshree Pillai
 
Week 9 - Introduction to Child Themes
Week 9  - Introduction to Child ThemesWeek 9  - Introduction to Child Themes
Week 9 - Introduction to Child Themeshenri_makembe
 
Introduction to VueJS & The WordPress REST API
Introduction to VueJS & The WordPress REST APIIntroduction to VueJS & The WordPress REST API
Introduction to VueJS & The WordPress REST APICaldera Labs
 
JD17NL Joomla! Overrides and alternate layouts
JD17NL Joomla! Overrides and alternate layoutsJD17NL Joomla! Overrides and alternate layouts
JD17NL Joomla! Overrides and alternate layoutsHans Kuijpers
 

What's hot (20)

Plugin development wpmeetup010
Plugin development wpmeetup010Plugin development wpmeetup010
Plugin development wpmeetup010
 
Outside-in Development with Cucumber and Rspec
Outside-in Development with Cucumber and RspecOutside-in Development with Cucumber and Rspec
Outside-in Development with Cucumber and Rspec
 
greach 2014 marco vermeulen bdd using cucumber jvm and groovy
greach 2014 marco vermeulen bdd using cucumber jvm and groovygreach 2014 marco vermeulen bdd using cucumber jvm and groovy
greach 2014 marco vermeulen bdd using cucumber jvm and groovy
 
Continuous Deployment at Etsy
Continuous Deployment at EtsyContinuous Deployment at Etsy
Continuous Deployment at Etsy
 
Ako na vlastne WP temy
Ako na vlastne WP temyAko na vlastne WP temy
Ako na vlastne WP temy
 
WordPress Theme Development for Designers
WordPress Theme Development for DesignersWordPress Theme Development for Designers
WordPress Theme Development for Designers
 
Workshop On WP-CLI
Workshop On WP-CLIWorkshop On WP-CLI
Workshop On WP-CLI
 
How To Write a WordPress Plugin
How To Write a WordPress PluginHow To Write a WordPress Plugin
How To Write a WordPress Plugin
 
WordPress Realtime - WordCamp São Paulo 2015
WordPress Realtime - WordCamp São Paulo 2015WordPress Realtime - WordCamp São Paulo 2015
WordPress Realtime - WordCamp São Paulo 2015
 
Getting big without getting fat, in perl
Getting big without getting fat, in perlGetting big without getting fat, in perl
Getting big without getting fat, in perl
 
Rebrand WordPress Admin
Rebrand WordPress AdminRebrand WordPress Admin
Rebrand WordPress Admin
 
Grand Rapids PHP Meetup: Behavioral Driven Development with Behat
Grand Rapids PHP Meetup: Behavioral Driven Development with BehatGrand Rapids PHP Meetup: Behavioral Driven Development with Behat
Grand Rapids PHP Meetup: Behavioral Driven Development with Behat
 
WordPress Structure and Best Practices
WordPress Structure and Best PracticesWordPress Structure and Best Practices
WordPress Structure and Best Practices
 
Drupal 8: Huge wins, a Bigger Community, and why you (and I) will Love it
Drupal 8: Huge wins, a Bigger Community, and why you (and I) will Love itDrupal 8: Huge wins, a Bigger Community, and why you (and I) will Love it
Drupal 8: Huge wins, a Bigger Community, and why you (and I) will Love it
 
jQuery For Developers Stack Overflow Dev Days Toronto
jQuery For Developers Stack Overflow Dev Days TorontojQuery For Developers Stack Overflow Dev Days Toronto
jQuery For Developers Stack Overflow Dev Days Toronto
 
Continuous Deployment at Scale, PHPConfAsia 2016
Continuous Deployment at Scale, PHPConfAsia 2016Continuous Deployment at Scale, PHPConfAsia 2016
Continuous Deployment at Scale, PHPConfAsia 2016
 
Week 9 - Introduction to Child Themes
Week 9  - Introduction to Child ThemesWeek 9  - Introduction to Child Themes
Week 9 - Introduction to Child Themes
 
Jquery tutorial
Jquery tutorialJquery tutorial
Jquery tutorial
 
Introduction to VueJS & The WordPress REST API
Introduction to VueJS & The WordPress REST APIIntroduction to VueJS & The WordPress REST API
Introduction to VueJS & The WordPress REST API
 
JD17NL Joomla! Overrides and alternate layouts
JD17NL Joomla! Overrides and alternate layoutsJD17NL Joomla! Overrides and alternate layouts
JD17NL Joomla! Overrides and alternate layouts
 

Viewers also liked

Building GPE: What We Learned
Building GPE: What We LearnedBuilding GPE: What We Learned
Building GPE: What We Learnedrajeevdayal
 
Best Practices in Plugin Development (WordCamp Seattle)
Best Practices in Plugin Development (WordCamp Seattle)Best Practices in Plugin Development (WordCamp Seattle)
Best Practices in Plugin Development (WordCamp Seattle)andrewnacin
 
Building an Eclipse plugin to recommend changes to developers
Building an Eclipse plugin to recommend changes to developersBuilding an Eclipse plugin to recommend changes to developers
Building an Eclipse plugin to recommend changes to developerskim.mens
 
jQuery Plugin Creation
jQuery Plugin CreationjQuery Plugin Creation
jQuery Plugin Creationbenalman
 
The Open-source Eclipse Plugin for Force.com Development, Summer ‘14
The Open-source Eclipse Plugin for Force.com Development, Summer ‘14The Open-source Eclipse Plugin for Force.com Development, Summer ‘14
The Open-source Eclipse Plugin for Force.com Development, Summer ‘14Salesforce Developers
 
Plugin jQuery, Design Patterns
Plugin jQuery, Design PatternsPlugin jQuery, Design Patterns
Plugin jQuery, Design PatternsRobert Casanova
 
Eclipse Overview
Eclipse Overview Eclipse Overview
Eclipse Overview Lars Vogel
 
A Simple Plugin Architecture for Wicket
A Simple Plugin Architecture for WicketA Simple Plugin Architecture for Wicket
A Simple Plugin Architecture for Wicketnielsvk
 
Configuration as Code: The Job DSL Plugin
Configuration as Code: The Job DSL PluginConfiguration as Code: The Job DSL Plugin
Configuration as Code: The Job DSL PluginDaniel Spilker
 
Creating a Plug-In Architecture
Creating a Plug-In ArchitectureCreating a Plug-In Architecture
Creating a Plug-In Architectureondrejbalas
 

Viewers also liked (10)

Building GPE: What We Learned
Building GPE: What We LearnedBuilding GPE: What We Learned
Building GPE: What We Learned
 
Best Practices in Plugin Development (WordCamp Seattle)
Best Practices in Plugin Development (WordCamp Seattle)Best Practices in Plugin Development (WordCamp Seattle)
Best Practices in Plugin Development (WordCamp Seattle)
 
Building an Eclipse plugin to recommend changes to developers
Building an Eclipse plugin to recommend changes to developersBuilding an Eclipse plugin to recommend changes to developers
Building an Eclipse plugin to recommend changes to developers
 
jQuery Plugin Creation
jQuery Plugin CreationjQuery Plugin Creation
jQuery Plugin Creation
 
The Open-source Eclipse Plugin for Force.com Development, Summer ‘14
The Open-source Eclipse Plugin for Force.com Development, Summer ‘14The Open-source Eclipse Plugin for Force.com Development, Summer ‘14
The Open-source Eclipse Plugin for Force.com Development, Summer ‘14
 
Plugin jQuery, Design Patterns
Plugin jQuery, Design PatternsPlugin jQuery, Design Patterns
Plugin jQuery, Design Patterns
 
Eclipse Overview
Eclipse Overview Eclipse Overview
Eclipse Overview
 
A Simple Plugin Architecture for Wicket
A Simple Plugin Architecture for WicketA Simple Plugin Architecture for Wicket
A Simple Plugin Architecture for Wicket
 
Configuration as Code: The Job DSL Plugin
Configuration as Code: The Job DSL PluginConfiguration as Code: The Job DSL Plugin
Configuration as Code: The Job DSL Plugin
 
Creating a Plug-In Architecture
Creating a Plug-In ArchitectureCreating a Plug-In Architecture
Creating a Plug-In Architecture
 

Similar to An easy guide to Plugin Development

Plugin development demystified 2017
Plugin development demystified 2017Plugin development demystified 2017
Plugin development demystified 2017ylefebvre
 
Javascript and jQuery PennApps Tech Talk, Fall 2014
Javascript and jQuery PennApps Tech Talk, Fall 2014Javascript and jQuery PennApps Tech Talk, Fall 2014
Javascript and jQuery PennApps Tech Talk, Fall 2014Kathy Zhou
 
Intro to WordPress Plugins
Intro to WordPress PluginsIntro to WordPress Plugins
Intro to WordPress Pluginszamoose
 
How to create your own WordPress plugin
How to create your own WordPress pluginHow to create your own WordPress plugin
How to create your own WordPress pluginJohn Tighe
 
Plugging into plugins
Plugging into pluginsPlugging into plugins
Plugging into pluginsJosh Harrison
 
Creating Your First WordPress Plugin
Creating Your First WordPress PluginCreating Your First WordPress Plugin
Creating Your First WordPress PluginBrad Williams
 
CUCUMBER - Making BDD Fun
CUCUMBER - Making BDD FunCUCUMBER - Making BDD Fun
CUCUMBER - Making BDD FunSQABD
 
Collective.amberjack ploneconf2010
Collective.amberjack ploneconf2010Collective.amberjack ploneconf2010
Collective.amberjack ploneconf2010Massimo Azzolini
 
Creating Extensible Plugins for WordPress
Creating Extensible Plugins for WordPressCreating Extensible Plugins for WordPress
Creating Extensible Plugins for WordPressHristo Chakarov
 
Plugin Development Practices
Plugin Development PracticesPlugin Development Practices
Plugin Development Practicesdanpastori
 
Wordcamp 2010 presentation
Wordcamp 2010 presentationWordcamp 2010 presentation
Wordcamp 2010 presentationJonny Allbut
 
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20Michael Lihs
 
Write your first WordPress plugin
Write your first WordPress pluginWrite your first WordPress plugin
Write your first WordPress pluginAnthony Montalbano
 
Power of mu plugins
Power of mu pluginsPower of mu plugins
Power of mu pluginsMikel King
 
Twig for Drupal 8 and PHP | Presented at OC Drupal
Twig for Drupal 8 and PHP | Presented at OC DrupalTwig for Drupal 8 and PHP | Presented at OC Drupal
Twig for Drupal 8 and PHP | Presented at OC Drupalwebbywe
 
Theming Wordpress with Adobe
Theming Wordpress with AdobeTheming Wordpress with Adobe
Theming Wordpress with AdobeGrace Solivan
 
Hardcore URL Routing for WordPress - WordCamp Atlanta 2014 (PPT)
Hardcore URL Routing for WordPress - WordCamp Atlanta 2014 (PPT)Hardcore URL Routing for WordPress - WordCamp Atlanta 2014 (PPT)
Hardcore URL Routing for WordPress - WordCamp Atlanta 2014 (PPT)Mike Schinkel
 

Similar to An easy guide to Plugin Development (20)

Using PHP
Using PHPUsing PHP
Using PHP
 
Plugin development demystified 2017
Plugin development demystified 2017Plugin development demystified 2017
Plugin development demystified 2017
 
Javascript and jQuery PennApps Tech Talk, Fall 2014
Javascript and jQuery PennApps Tech Talk, Fall 2014Javascript and jQuery PennApps Tech Talk, Fall 2014
Javascript and jQuery PennApps Tech Talk, Fall 2014
 
Intro to WordPress Plugins
Intro to WordPress PluginsIntro to WordPress Plugins
Intro to WordPress Plugins
 
How to create your own WordPress plugin
How to create your own WordPress pluginHow to create your own WordPress plugin
How to create your own WordPress plugin
 
Mojolicious
MojoliciousMojolicious
Mojolicious
 
Plugging into plugins
Plugging into pluginsPlugging into plugins
Plugging into plugins
 
Creating Your First WordPress Plugin
Creating Your First WordPress PluginCreating Your First WordPress Plugin
Creating Your First WordPress Plugin
 
CUCUMBER - Making BDD Fun
CUCUMBER - Making BDD FunCUCUMBER - Making BDD Fun
CUCUMBER - Making BDD Fun
 
Django Girls Tutorial
Django Girls TutorialDjango Girls Tutorial
Django Girls Tutorial
 
Collective.amberjack ploneconf2010
Collective.amberjack ploneconf2010Collective.amberjack ploneconf2010
Collective.amberjack ploneconf2010
 
Creating Extensible Plugins for WordPress
Creating Extensible Plugins for WordPressCreating Extensible Plugins for WordPress
Creating Extensible Plugins for WordPress
 
Plugin Development Practices
Plugin Development PracticesPlugin Development Practices
Plugin Development Practices
 
Wordcamp 2010 presentation
Wordcamp 2010 presentationWordcamp 2010 presentation
Wordcamp 2010 presentation
 
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
 
Write your first WordPress plugin
Write your first WordPress pluginWrite your first WordPress plugin
Write your first WordPress plugin
 
Power of mu plugins
Power of mu pluginsPower of mu plugins
Power of mu plugins
 
Twig for Drupal 8 and PHP | Presented at OC Drupal
Twig for Drupal 8 and PHP | Presented at OC DrupalTwig for Drupal 8 and PHP | Presented at OC Drupal
Twig for Drupal 8 and PHP | Presented at OC Drupal
 
Theming Wordpress with Adobe
Theming Wordpress with AdobeTheming Wordpress with Adobe
Theming Wordpress with Adobe
 
Hardcore URL Routing for WordPress - WordCamp Atlanta 2014 (PPT)
Hardcore URL Routing for WordPress - WordCamp Atlanta 2014 (PPT)Hardcore URL Routing for WordPress - WordCamp Atlanta 2014 (PPT)
Hardcore URL Routing for WordPress - WordCamp Atlanta 2014 (PPT)
 

More from Shinichi Nishikawa

GPL: WordPress 4つの自由と ビジネスモデル / WordCamp Tokyo 2015 講演スライド
GPL: WordPress 4つの自由と ビジネスモデル / WordCamp Tokyo 2015 講演スライドGPL: WordPress 4つの自由と ビジネスモデル / WordCamp Tokyo 2015 講演スライド
GPL: WordPress 4つの自由と ビジネスモデル / WordCamp Tokyo 2015 講演スライドShinichi Nishikawa
 
Learning from theme review requirements
Learning from theme review requirementsLearning from theme review requirements
Learning from theme review requirementsShinichi Nishikawa
 
WordPress community and events in Japan. presented at #wp10 meet up in Bangko...
WordPress community and events in Japan. presented at #wp10 meet up in Bangko...WordPress community and events in Japan. presented at #wp10 meet up in Bangko...
WordPress community and events in Japan. presented at #wp10 meet up in Bangko...Shinichi Nishikawa
 
WordCamp Seoul: WordPress Based web services in Japan / WordCamp 서울 : 일본에서 워드...
WordCamp Seoul: WordPress Based web services in Japan / WordCamp 서울 : 일본에서 워드...WordCamp Seoul: WordPress Based web services in Japan / WordCamp 서울 : 일본에서 워드...
WordCamp Seoul: WordPress Based web services in Japan / WordCamp 서울 : 일본에서 워드...Shinichi Nishikawa
 
2013年3月16日のWordBench大阪
2013年3月16日のWordBench大阪2013年3月16日のWordBench大阪
2013年3月16日のWordBench大阪Shinichi Nishikawa
 
アプリケーションプラットフォームとしてのWordPressの序論。ころぐとBookPressを事例に!WordBench福岡の資料!20130323
アプリケーションプラットフォームとしてのWordPressの序論。ころぐとBookPressを事例に!WordBench福岡の資料!20130323アプリケーションプラットフォームとしてのWordPressの序論。ころぐとBookPressを事例に!WordBench福岡の資料!20130323
アプリケーションプラットフォームとしてのWordPressの序論。ころぐとBookPressを事例に!WordBench福岡の資料!20130323Shinichi Nishikawa
 
電子出版プラットフォーム『BookPress』にみるAWSと電子出版の素敵な関係
電子出版プラットフォーム『BookPress』にみるAWSと電子出版の素敵な関係電子出版プラットフォーム『BookPress』にみるAWSと電子出版の素敵な関係
電子出版プラットフォーム『BookPress』にみるAWSと電子出版の素敵な関係Shinichi Nishikawa
 
子育てとブログを考える「ころぐ講演」
子育てとブログを考える「ころぐ講演」子育てとブログを考える「ころぐ講演」
子育てとブログを考える「ころぐ講演」Shinichi Nishikawa
 
WordPressでウェブサービスを作ろう! #wbNagoya
WordPressでウェブサービスを作ろう! #wbNagoyaWordPressでウェブサービスを作ろう! #wbNagoya
WordPressでウェブサービスを作ろう! #wbNagoyaShinichi Nishikawa
 
CodaでClipを使ってWordPress開発を早くするススメ。
 CodaでClipを使ってWordPress開発を早くするススメ。 CodaでClipを使ってWordPress開発を早くするススメ。
CodaでClipを使ってWordPress開発を早くするススメ。Shinichi Nishikawa
 
第三章ナビゲーション &lt; 第4回デザイニング・インターフェース勉強会
第三章ナビゲーション &lt; 第4回デザイニング・インターフェース勉強会第三章ナビゲーション &lt; 第4回デザイニング・インターフェース勉強会
第三章ナビゲーション &lt; 第4回デザイニング・インターフェース勉強会Shinichi Nishikawa
 
WordCampTokyo2012 開催のお知らせとスタッフ募集
WordCampTokyo2012 開催のお知らせとスタッフ募集WordCampTokyo2012 開催のお知らせとスタッフ募集
WordCampTokyo2012 開催のお知らせとスタッフ募集Shinichi Nishikawa
 
WordPressマルチサイト機能を使ってブログポータルを作ってみよう!
WordPressマルチサイト機能を使ってブログポータルを作ってみよう!WordPressマルチサイト機能を使ってブログポータルを作ってみよう!
WordPressマルチサイト機能を使ってブログポータルを作ってみよう!Shinichi Nishikawa
 
4時間まったりWordPressテーマ作成講座
4時間まったりWordPressテーマ作成講座4時間まったりWordPressテーマ作成講座
4時間まったりWordPressテーマ作成講座Shinichi Nishikawa
 
WordPress中級者への道!テンプレートタグはどう動くのか!?
WordPress中級者への道!テンプレートタグはどう動くのか!?WordPress中級者への道!テンプレートタグはどう動くのか!?
WordPress中級者への道!テンプレートタグはどう動くのか!?Shinichi Nishikawa
 
WordPressの管理画面を徹底カスタマイズ!
WordPressの管理画面を徹底カスタマイズ!WordPressの管理画面を徹底カスタマイズ!
WordPressの管理画面を徹底カスタマイズ!Shinichi Nishikawa
 

More from Shinichi Nishikawa (20)

WordPress Community in Japan
WordPress Community in JapanWordPress Community in Japan
WordPress Community in Japan
 
GPL: WordPress 4つの自由と ビジネスモデル / WordCamp Tokyo 2015 講演スライド
GPL: WordPress 4つの自由と ビジネスモデル / WordCamp Tokyo 2015 講演スライドGPL: WordPress 4つの自由と ビジネスモデル / WordCamp Tokyo 2015 講演スライド
GPL: WordPress 4つの自由と ビジネスモデル / WordCamp Tokyo 2015 講演スライド
 
Learning from theme review requirements
Learning from theme review requirementsLearning from theme review requirements
Learning from theme review requirements
 
Child Theme
Child ThemeChild Theme
Child Theme
 
Wordpress Community in Japan
Wordpress Community in JapanWordpress Community in Japan
Wordpress Community in Japan
 
WordPress community and events in Japan. presented at #wp10 meet up in Bangko...
WordPress community and events in Japan. presented at #wp10 meet up in Bangko...WordPress community and events in Japan. presented at #wp10 meet up in Bangko...
WordPress community and events in Japan. presented at #wp10 meet up in Bangko...
 
WordCamp Seoul: WordPress Based web services in Japan / WordCamp 서울 : 일본에서 워드...
WordCamp Seoul: WordPress Based web services in Japan / WordCamp 서울 : 일본에서 워드...WordCamp Seoul: WordPress Based web services in Japan / WordCamp 서울 : 일본에서 워드...
WordCamp Seoul: WordPress Based web services in Japan / WordCamp 서울 : 일본에서 워드...
 
2013年3月16日のWordBench大阪
2013年3月16日のWordBench大阪2013年3月16日のWordBench大阪
2013年3月16日のWordBench大阪
 
アプリケーションプラットフォームとしてのWordPressの序論。ころぐとBookPressを事例に!WordBench福岡の資料!20130323
アプリケーションプラットフォームとしてのWordPressの序論。ころぐとBookPressを事例に!WordBench福岡の資料!20130323アプリケーションプラットフォームとしてのWordPressの序論。ころぐとBookPressを事例に!WordBench福岡の資料!20130323
アプリケーションプラットフォームとしてのWordPressの序論。ころぐとBookPressを事例に!WordBench福岡の資料!20130323
 
電子出版プラットフォーム『BookPress』にみるAWSと電子出版の素敵な関係
電子出版プラットフォーム『BookPress』にみるAWSと電子出版の素敵な関係電子出版プラットフォーム『BookPress』にみるAWSと電子出版の素敵な関係
電子出版プラットフォーム『BookPress』にみるAWSと電子出版の素敵な関係
 
子育てとブログを考える「ころぐ講演」
子育てとブログを考える「ころぐ講演」子育てとブログを考える「ころぐ講演」
子育てとブログを考える「ころぐ講演」
 
WordPressでウェブサービスを作ろう! #wbNagoya
WordPressでウェブサービスを作ろう! #wbNagoyaWordPressでウェブサービスを作ろう! #wbNagoya
WordPressでウェブサービスを作ろう! #wbNagoya
 
WordCamp Tokyo 2012 Concept
WordCamp Tokyo 2012 ConceptWordCamp Tokyo 2012 Concept
WordCamp Tokyo 2012 Concept
 
CodaでClipを使ってWordPress開発を早くするススメ。
 CodaでClipを使ってWordPress開発を早くするススメ。 CodaでClipを使ってWordPress開発を早くするススメ。
CodaでClipを使ってWordPress開発を早くするススメ。
 
第三章ナビゲーション &lt; 第4回デザイニング・インターフェース勉強会
第三章ナビゲーション &lt; 第4回デザイニング・インターフェース勉強会第三章ナビゲーション &lt; 第4回デザイニング・インターフェース勉強会
第三章ナビゲーション &lt; 第4回デザイニング・インターフェース勉強会
 
WordCampTokyo2012 開催のお知らせとスタッフ募集
WordCampTokyo2012 開催のお知らせとスタッフ募集WordCampTokyo2012 開催のお知らせとスタッフ募集
WordCampTokyo2012 開催のお知らせとスタッフ募集
 
WordPressマルチサイト機能を使ってブログポータルを作ってみよう!
WordPressマルチサイト機能を使ってブログポータルを作ってみよう!WordPressマルチサイト機能を使ってブログポータルを作ってみよう!
WordPressマルチサイト機能を使ってブログポータルを作ってみよう!
 
4時間まったりWordPressテーマ作成講座
4時間まったりWordPressテーマ作成講座4時間まったりWordPressテーマ作成講座
4時間まったりWordPressテーマ作成講座
 
WordPress中級者への道!テンプレートタグはどう動くのか!?
WordPress中級者への道!テンプレートタグはどう動くのか!?WordPress中級者への道!テンプレートタグはどう動くのか!?
WordPress中級者への道!テンプレートタグはどう動くのか!?
 
WordPressの管理画面を徹底カスタマイズ!
WordPressの管理画面を徹底カスタマイズ!WordPressの管理画面を徹底カスタマイズ!
WordPressの管理画面を徹底カスタマイズ!
 

Recently uploaded

Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Mark Simos
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesBernd Ruecker
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxAna-Maria Mihalceanu
 
Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Karmanjay Verma
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesManik S Magar
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructureitnewsafrica
 
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...BookNet Canada
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...itnewsafrica
 

Recently uploaded (20)

Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance Toolbox
 
Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
 
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
 

An easy guide to Plugin Development