Submit Search
Upload
My second word press plugin
•
Download as PPTX, PDF
•
1 like
•
336 views
Donghyeok Kang
Follow
MVC 기반 워드프레스 플러그인 개발 개요
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 16
Download now
Recommended
WordPress - Visual Composer - Beyond beginning
WordPress - Visual Composer - Beyond beginning
frankstaude
워드프레스 플러그인 개발 입문
워드프레스 플러그인 개발 입문
Donghyeok Kang
AngularJS - What is it & Why is it awesome ? (with demos)
AngularJS - What is it & Why is it awesome ? (with demos)
Gary Arora
Django for n00bs
Django for n00bs
Jen Zajac
AngularJS introduction
AngularJS introduction
Tania Gonzales
Automated UI Testing
Automated UI Testing
Mikalai Alimenkou
Fullstack JS Workshop
Fullstack JS Workshop
Muhammad Rizki Rijal
Introduction to Angular js 2.0
Introduction to Angular js 2.0
Nagaraju Sangam
Recommended
WordPress - Visual Composer - Beyond beginning
WordPress - Visual Composer - Beyond beginning
frankstaude
워드프레스 플러그인 개발 입문
워드프레스 플러그인 개발 입문
Donghyeok Kang
AngularJS - What is it & Why is it awesome ? (with demos)
AngularJS - What is it & Why is it awesome ? (with demos)
Gary Arora
Django for n00bs
Django for n00bs
Jen Zajac
AngularJS introduction
AngularJS introduction
Tania Gonzales
Automated UI Testing
Automated UI Testing
Mikalai Alimenkou
Fullstack JS Workshop
Fullstack JS Workshop
Muhammad Rizki Rijal
Introduction to Angular js 2.0
Introduction to Angular js 2.0
Nagaraju Sangam
AngularJS Best Practices
AngularJS Best Practices
Betclic Everest Group Tech Team
AngularJS 101 - Everything you need to know to get started
AngularJS 101 - Everything you need to know to get started
Stéphane Bégaudeau
AngularJS application architecture
AngularJS application architecture
Gabriele Falace
Why angular js Framework
Why angular js Framework
Sakthi Bro
Advanced Tips & Tricks for using Angular JS
Advanced Tips & Tricks for using Angular JS
Simon Guest
Gettings started with the superheroic JavaScript library AngularJS
Gettings started with the superheroic JavaScript library AngularJS
Armin Vieweg
Angularjs architecture
Angularjs architecture
Michael He
Angularjs - lazy loading techniques
Angularjs - lazy loading techniques
Nir Kaufman
Plugging into plugins
Plugging into plugins
Josh Harrison
Write your first WordPress plugin
Write your first WordPress plugin
Anthony Montalbano
Creating Extensible Plugins for WordPress
Creating Extensible Plugins for WordPress
Hristo Chakarov
Developing WordPress Plugins : For Begineers
Developing WordPress Plugins : For Begineers
M A Hossain Tonu
gDayX 2013 - Advanced AngularJS - Nicolas Embleton
gDayX 2013 - Advanced AngularJS - Nicolas Embleton
George Nguyen
WordPress-like plugins for Next.js - Sanket Sahu
WordPress-like plugins for Next.js - Sanket Sahu
Kumar Sanket
Webinar: Zend framework Getting to grips (ZF1)
Webinar: Zend framework Getting to grips (ZF1)
Ryan Mauger
Yeoman
Yeoman
arybik
Useful practices of creation automatic tests by using cucumber jvm
Useful practices of creation automatic tests by using cucumber jvm
Anton Shapin
Advanced WordPress Optimization - iGaming Supershow 2012
Advanced WordPress Optimization - iGaming Supershow 2012
Bastian Grimm
Maven plugin guide using Modello Framework
Maven plugin guide using Modello Framework
fulvio russo
CodeIgniter Framework
CodeIgniter Framework
baabtra.com - No. 1 supplier of quality freshers
Plugin Development @ WordCamp Norway 2014
Plugin Development @ WordCamp Norway 2014
Barry Kooij
gDayX - Advanced angularjs
gDayX - Advanced angularjs
gdgvietnam
More Related Content
What's hot
AngularJS Best Practices
AngularJS Best Practices
Betclic Everest Group Tech Team
AngularJS 101 - Everything you need to know to get started
AngularJS 101 - Everything you need to know to get started
Stéphane Bégaudeau
AngularJS application architecture
AngularJS application architecture
Gabriele Falace
Why angular js Framework
Why angular js Framework
Sakthi Bro
Advanced Tips & Tricks for using Angular JS
Advanced Tips & Tricks for using Angular JS
Simon Guest
Gettings started with the superheroic JavaScript library AngularJS
Gettings started with the superheroic JavaScript library AngularJS
Armin Vieweg
Angularjs architecture
Angularjs architecture
Michael He
Angularjs - lazy loading techniques
Angularjs - lazy loading techniques
Nir Kaufman
What's hot
(8)
AngularJS Best Practices
AngularJS Best Practices
AngularJS 101 - Everything you need to know to get started
AngularJS 101 - Everything you need to know to get started
AngularJS application architecture
AngularJS application architecture
Why angular js Framework
Why angular js Framework
Advanced Tips & Tricks for using Angular JS
Advanced Tips & Tricks for using Angular JS
Gettings started with the superheroic JavaScript library AngularJS
Gettings started with the superheroic JavaScript library AngularJS
Angularjs architecture
Angularjs architecture
Angularjs - lazy loading techniques
Angularjs - lazy loading techniques
Similar to My second word press plugin
Plugging into plugins
Plugging into plugins
Josh Harrison
Write your first WordPress plugin
Write your first WordPress plugin
Anthony Montalbano
Creating Extensible Plugins for WordPress
Creating Extensible Plugins for WordPress
Hristo Chakarov
Developing WordPress Plugins : For Begineers
Developing WordPress Plugins : For Begineers
M A Hossain Tonu
gDayX 2013 - Advanced AngularJS - Nicolas Embleton
gDayX 2013 - Advanced AngularJS - Nicolas Embleton
George Nguyen
WordPress-like plugins for Next.js - Sanket Sahu
WordPress-like plugins for Next.js - Sanket Sahu
Kumar Sanket
Webinar: Zend framework Getting to grips (ZF1)
Webinar: Zend framework Getting to grips (ZF1)
Ryan Mauger
Yeoman
Yeoman
arybik
Useful practices of creation automatic tests by using cucumber jvm
Useful practices of creation automatic tests by using cucumber jvm
Anton Shapin
Advanced WordPress Optimization - iGaming Supershow 2012
Advanced WordPress Optimization - iGaming Supershow 2012
Bastian Grimm
Maven plugin guide using Modello Framework
Maven plugin guide using Modello Framework
fulvio russo
CodeIgniter Framework
CodeIgniter Framework
baabtra.com - No. 1 supplier of quality freshers
Plugin Development @ WordCamp Norway 2014
Plugin Development @ WordCamp Norway 2014
Barry Kooij
gDayX - Advanced angularjs
gDayX - Advanced angularjs
gdgvietnam
Making Magento flying like a rocket! (A set of valuable tips for developers)
Making Magento flying like a rocket! (A set of valuable tips for developers)
Ivan Chepurnyi
Creating Your First WordPress Plugin
Creating Your First WordPress Plugin
Brad Williams
Zepplin_Pronko_Magento_Festival Hall 1_Final
Zepplin_Pronko_Magento_Festival Hall 1_Final
Max Pronko
WordPress Plugin development
WordPress Plugin development
Mostafa Soufi
Intro to WordPress Plugin Development
Intro to WordPress Plugin Development
Brad Williams
Using WordPress for Rapid Prototyping
Using WordPress for Rapid Prototyping
Drew Morris
Similar to My second word press plugin
(20)
Plugging into plugins
Plugging into plugins
Write your first WordPress plugin
Write your first WordPress plugin
Creating Extensible Plugins for WordPress
Creating Extensible Plugins for WordPress
Developing WordPress Plugins : For Begineers
Developing WordPress Plugins : For Begineers
gDayX 2013 - Advanced AngularJS - Nicolas Embleton
gDayX 2013 - Advanced AngularJS - Nicolas Embleton
WordPress-like plugins for Next.js - Sanket Sahu
WordPress-like plugins for Next.js - Sanket Sahu
Webinar: Zend framework Getting to grips (ZF1)
Webinar: Zend framework Getting to grips (ZF1)
Yeoman
Yeoman
Useful practices of creation automatic tests by using cucumber jvm
Useful practices of creation automatic tests by using cucumber jvm
Advanced WordPress Optimization - iGaming Supershow 2012
Advanced WordPress Optimization - iGaming Supershow 2012
Maven plugin guide using Modello Framework
Maven plugin guide using Modello Framework
CodeIgniter Framework
CodeIgniter Framework
Plugin Development @ WordCamp Norway 2014
Plugin Development @ WordCamp Norway 2014
gDayX - Advanced angularjs
gDayX - Advanced angularjs
Making Magento flying like a rocket! (A set of valuable tips for developers)
Making Magento flying like a rocket! (A set of valuable tips for developers)
Creating Your First WordPress Plugin
Creating Your First WordPress Plugin
Zepplin_Pronko_Magento_Festival Hall 1_Final
Zepplin_Pronko_Magento_Festival Hall 1_Final
WordPress Plugin development
WordPress Plugin development
Intro to WordPress Plugin Development
Intro to WordPress Plugin Development
Using WordPress for Rapid Prototyping
Using WordPress for Rapid Prototyping
More from Donghyeok Kang
Divi custom post type template
Divi custom post type template
Donghyeok Kang
My first word press plugin
My first word press plugin
Donghyeok Kang
Docker based web hosting
Docker based web hosting
Donghyeok Kang
Flutter Beta but Better and Better
Flutter Beta but Better and Better
Donghyeok Kang
Java Annotation과 MyBatis로 나만의 ORM Framework을 만들어보자
Java Annotation과 MyBatis로 나만의 ORM Framework을 만들어보자
Donghyeok Kang
Curated News Platform
Curated News Platform
Donghyeok Kang
[제1회 루씬 한글분석기 기술세미나] solr로 나만의 검색엔진을 만들어보자
[제1회 루씬 한글분석기 기술세미나] solr로 나만의 검색엔진을 만들어보자
Donghyeok Kang
More from Donghyeok Kang
(7)
Divi custom post type template
Divi custom post type template
My first word press plugin
My first word press plugin
Docker based web hosting
Docker based web hosting
Flutter Beta but Better and Better
Flutter Beta but Better and Better
Java Annotation과 MyBatis로 나만의 ORM Framework을 만들어보자
Java Annotation과 MyBatis로 나만의 ORM Framework을 만들어보자
Curated News Platform
Curated News Platform
[제1회 루씬 한글분석기 기술세미나] solr로 나만의 검색엔진을 만들어보자
[제1회 루씬 한글분석기 기술세미나] solr로 나만의 검색엔진을 만들어보자
Recently uploaded
OOP concepts -in-Python programming language
OOP concepts -in-Python programming language
SmritiSharma901052
KCD Costa Rica 2024 - Nephio para parvulitos
KCD Costa Rica 2024 - Nephio para parvulitos
Victor Morales
TEST CASE GENERATION GENERATION BLOCK BOX APPROACH
TEST CASE GENERATION GENERATION BLOCK BOX APPROACH
Sneha Padhiar
signals in triangulation .. ...Surveying
signals in triangulation .. ...Surveying
sapna80328
Immutable Image-Based Operating Systems - EW2024.pdf
Immutable Image-Based Operating Systems - EW2024.pdf
Drew Moseley
Module-1-(Building Acoustics) Noise Control (Unit-3). pdf
Module-1-(Building Acoustics) Noise Control (Unit-3). pdf
Manish Kumar
Comparative study of High-rise Building Using ETABS,SAP200 and SAFE., SAFE an...
Comparative study of High-rise Building Using ETABS,SAP200 and SAFE., SAFE an...
Erbil Polytechnic University
Artificial Intelligence in Power System overview
Artificial Intelligence in Power System overview
sandhya757531
System Simulation and Modelling with types and Event Scheduling
System Simulation and Modelling with types and Event Scheduling
BootNeck1
Virtual memory management in Operating System
Virtual memory management in Operating System
Rashmi Bhat
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
sdickerson1
FUNCTIONAL AND NON FUNCTIONAL REQUIREMENT
FUNCTIONAL AND NON FUNCTIONAL REQUIREMENT
Sneha Padhiar
ROBOETHICS-CCS345 ETHICS AND ARTIFICIAL INTELLIGENCE.ppt
ROBOETHICS-CCS345 ETHICS AND ARTIFICIAL INTELLIGENCE.ppt
JohnWilliam111370
SOFTWARE ESTIMATION COCOMO AND FP CALCULATION
SOFTWARE ESTIMATION COCOMO AND FP CALCULATION
Sneha Padhiar
Prach: A Feature-Rich Platform Empowering the Autism Community
Prach: A Feature-Rich Platform Empowering the Autism Community
prachaibot
Python Programming for basic beginners.pptx
Python Programming for basic beginners.pptx
mohitesoham12
Turn leadership mistakes into a better future.pptx
Turn leadership mistakes into a better future.pptx
Stephen Sitton
『澳洲文凭』买麦考瑞大学毕业证书成绩单办理澳洲Macquarie文凭学位证书
『澳洲文凭』买麦考瑞大学毕业证书成绩单办理澳洲Macquarie文凭学位证书
rnrncn29
Energy Awareness training ppt for manufacturing process.pptx
Energy Awareness training ppt for manufacturing process.pptx
siddharthjain2303
Input Output Management in Operating System
Input Output Management in Operating System
Rashmi Bhat
Recently uploaded
(20)
OOP concepts -in-Python programming language
OOP concepts -in-Python programming language
KCD Costa Rica 2024 - Nephio para parvulitos
KCD Costa Rica 2024 - Nephio para parvulitos
TEST CASE GENERATION GENERATION BLOCK BOX APPROACH
TEST CASE GENERATION GENERATION BLOCK BOX APPROACH
signals in triangulation .. ...Surveying
signals in triangulation .. ...Surveying
Immutable Image-Based Operating Systems - EW2024.pdf
Immutable Image-Based Operating Systems - EW2024.pdf
Module-1-(Building Acoustics) Noise Control (Unit-3). pdf
Module-1-(Building Acoustics) Noise Control (Unit-3). pdf
Comparative study of High-rise Building Using ETABS,SAP200 and SAFE., SAFE an...
Comparative study of High-rise Building Using ETABS,SAP200 and SAFE., SAFE an...
Artificial Intelligence in Power System overview
Artificial Intelligence in Power System overview
System Simulation and Modelling with types and Event Scheduling
System Simulation and Modelling with types and Event Scheduling
Virtual memory management in Operating System
Virtual memory management in Operating System
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
FUNCTIONAL AND NON FUNCTIONAL REQUIREMENT
FUNCTIONAL AND NON FUNCTIONAL REQUIREMENT
ROBOETHICS-CCS345 ETHICS AND ARTIFICIAL INTELLIGENCE.ppt
ROBOETHICS-CCS345 ETHICS AND ARTIFICIAL INTELLIGENCE.ppt
SOFTWARE ESTIMATION COCOMO AND FP CALCULATION
SOFTWARE ESTIMATION COCOMO AND FP CALCULATION
Prach: A Feature-Rich Platform Empowering the Autism Community
Prach: A Feature-Rich Platform Empowering the Autism Community
Python Programming for basic beginners.pptx
Python Programming for basic beginners.pptx
Turn leadership mistakes into a better future.pptx
Turn leadership mistakes into a better future.pptx
『澳洲文凭』买麦考瑞大学毕业证书成绩单办理澳洲Macquarie文凭学位证书
『澳洲文凭』买麦考瑞大学毕业证书成绩单办理澳洲Macquarie文凭学位证书
Energy Awareness training ppt for manufacturing process.pptx
Energy Awareness training ppt for manufacturing process.pptx
Input Output Management in Operating System
Input Output Management in Operating System
My second word press plugin
1.
My Second WordPress Plugin 강동혁 dongheok@shoplic.kr 2019-02-07
2.
Problems • 워드프레스 플러그인
개발 방법론 부재 • Naming Conflicts
3.
add_action(‘init’, ‘my_plugin_init’); if (
!function_exists(‘my_plugin_init’)) { function my_plugin_init() { echo ‘This is my plugin init.’; } }
4.
add_action(‘my_plugin_action’, ‘my_plugin_action’); if (
!function_exists(‘my_plugin_action’)) { function my_plugin_action() { echo ‘This is my plugin action.’; } }
5.
Solutions • MVC(Model, View,
Controller) • CBD(Component Based Development)
6.
M V C Component M V C Component M V
C Component M V C Component M V C Component PLUGIN
7.
Plugin Packaging plugin-name/ components/ comp1/ views/ models/ controller.php comp2/ plugin-name.php
8.
Model • WordPress Models •
Tables • wp_posts, wp_postmeta, wp_comments, wp_commentmeta, wp_users, wp_usermeta, … • Classes • WP_Post, WP_Comment, WP_User, … • Functions • get_posts(), get_comments(), get_users(), … • Query • WP_Query // Show Posts from Several Authors $query = new WP_Query( array( 'author' => '2,6,17,38' ) );
9.
Simple ORM for
Custom Tables CREATE TABLE `site_domain` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `site_id` bigint(20) DEFAULT NULL, `domain` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL, `primary` tinyint(1) DEFAULT NULL, `https` tinyint(1) DEFAULT NULL, `created_date` datetime DEFAULT NULL, PRIMARY KEY (`id`), KEY `IDX_SITE_ID` (`site_id`) )
10.
class Site_Domain extends
SP_Entity { static $_database = 'sp_hosting'; static $_primary_key = 'id'; static $_column_formats = [ 'id' => '%d', 'site_id' => '%d', 'domain' => '%s', 'primary' => '%d', 'https' => '%d', 'created_date' => '%s', ]; static function get_table() { return 'site_domain'; } } SP_ORM::insert(new Site_Domain([ 'site_id' => $site->id, 'domain' => $_POST['domain’], 'https' => $_POST['https’], 'created_date' => current_time('mysql'), ])); SP_ORM::select(new Site_Domain([ 'site_id'=>$site->id ])); SP_ORM::delete(new Site_Domain([ 'site_id' => $site->id, 'domain' => $_POST['domain’] ]));
11.
Controller • A set
of actions, filters, and shortcodes Abstract_Controller $id init() add_action() add_filter() add_shortcode() view() My_Controller login() class My_Controller extends Absctract_Controller { $id = ‘shoplic’; function init() { $this->add_action(‘login’); } function login() { // 로그인 처리 } } => add_action(‘shoplic_login’, My_Controller::login)
12.
// controller.php class My_Controller
extends Absctract_Controller { $id = ‘shoplic’; function init() { $this->add_shortcode(‘login_form’); } function login_form() { // 로그인 폼 $this->view(‘login_form’, [ ‘message’ => ‘로그인‘ ]); } } add_shortcode(‘shoplic_login_form’, My_Controller::login_form) // login_form.php <h1><?php echo $message; ?></h1> <form> </form> // Editor [shoplic_login_form]
13.
Communication between Components //
comp1/controller.php class Comp1_Controller extends Absctract_Controller { $id = ‘shoplic’; function init() { $this->add_action(‘logout’); } function logout() { // 로그아웃 처리 } } add_action(‘shoplic_logout’, Comp1_Controller::logout) // comp2/controller.php class Comp2_Controller extends Abstract_Controller { $id = ‘wordpress’; function logout() { do_action(‘shoplic_logout’); } }
14.
Prevent Naming Conflicts •
Don’t Do Naming • Use Anonymous Functions(5.3~) & Anonymous Classes(7~)
15.
new class() extends
Abstract_Controller { $id = ‘shoplic’; function init() { $this->add_action(‘login’, function() { // 로그인 처리 }); } }
16.
감사합니다. 강동혁 donghyeok@shoplic.kr
Download now