SlideShare a Scribd company logo
1 of 25
Building Applications with
WordPress
Steve Bruner
WordCamp NYC
July 17, 2016
Me…Steve Bruner
WordPress Developer 10+ years
Active community member
WordPress NYC Meetup: since August 2008
WordCamp NYC: 2009, 2010, 2012, 2014
Co-Developer of: Piklist [plugin]
Rapid Development Framework
Build powerful websites and applications with WordPress
WordCamp NYC 2009
Presented a Contact Manager Theme:
RoloPress
Piklist.com
Examples
WooCommerce
Easy Digital Downloads
CiviCRM
BuddyPress
Invoicing
Contact Manager
Internal Workflow
....As WP Engine continues its torrid growth amidst strong customer demand, it has to
keep finding ways to deliver world-class support to every customer every day. That
means continually improving existing tools and building new ones – quickly.
“I have a laundry list of about 40
WordPress dev projects just for this quarter,”
Hoanshelt said. “So whenever my team is gearing up for the next one, my Project
Manager jokes, ‘Just Piklist it.’”
Piklist Customer Success: WP Engine
https://piklist.com/case-study/piklist-customer-success-wp-engine/
Process
1. Build a minimal viable product (MVP)
2. Measure for user behavior
3. Learn for the next iteration
Disable Front-end
Why?
Do you need a theme for your application?
wp-admin is:
Secure
Responsive
Controlled environment
Disable Front-end
How?
function my_no_front_end() {
if( !is_admin() ) {
wp_redirect( admin_url() );
exit;
}
}
add_action( 'wp', 'my_no_front_end' );
Change Admin Menu
Why?
Does your application need the default WordPress items?
A cleaner admin is easier to navigate.
Don’t make your users work around WordPress.
How?
Plugin: https://wordpress.org/plugins/admin-menu-editor/
Manipulate: global $menu, $submenu;
Replace Core Settings Pages
Why?
Do the default settings pages make sense for your application?
A cleaner admin is easier to navigate.
Replace Core Settings Pages
How?
Plugin: https://wordpress.org/plugins/admin-menu-editor/
Remove page: remove_submenu_page()
Just hides it. Redirect to your new page.
Add new page: add_submenu_page()
Do not use settings api… saves as a serialized array.
Use update_option()
Create Roles and Capabilities
Why?
Usually different than standard blog roles.
How?
Plugin: Members
Members
Disable Author Pages
Why?
Employees are now authors.
Don’t need their own pages.
How?
Plugin: Disable Author Pages
Custom Post Statuses
Why?
Default statuses may not be appropriate for your application.
e.g. “Publish”, “Draft”, etc.
Examples: “New Order”, “Received”, “Shipped”, etc.
How?
register_post_status()
Registers new post status, but doesn’t change admin UI
Validate and Sanitize Fields
Why?
Garbage in… garbage out.
Trust no one.
How?
sanitize_* functions
wp_kses functions
esc_ * functions
Validate with conditionals.
Javascript not as secure as server-side validation
Save Empty Fields
Why?
Empty fields are a value.
Makes it easy to loop over data.
Consistency in your object.
“If you choose not to
decide, you still have
made a choice”
Rush - Freewill
Understand your data
Why?
Make sure it is in a useable format.
You may want to query it.
How?
Save data normally:
One row per field.
Maybe a serialized array is not the best choice?
Name your meta keys something meaningful.
Look in your database…make sure you understand the data.
Tooltip Help
Why?
Explain expected field input.
Give users independence.
Fewer support calls.
How?
jQuery UI
CSS
Dashboard Widgets
Why?
Provide application overview: Sales, Open Orders, etc.
Tailor to logged in user.
How?
https://codex.wordpress.org/Dashboard_Widgets_API
Piklist
piklist.com
Custom post statuses
Field validation and sanitization
Tooltip help
Dashboard widgets
Replace core settings pages
Display fields based on post status/user role
Infinite repeater fields.
Object relationships
Multiple user roles
Widgets and shortcodes
And much more...
Twitter: @sbruner
Website: piklist.com

More Related Content

What's hot

Angular.js Talk at the November Meetup of the BerlinJS User Group
Angular.js Talk at the November Meetup of the BerlinJS User GroupAngular.js Talk at the November Meetup of the BerlinJS User Group
Angular.js Talk at the November Meetup of the BerlinJS User GroupManuel Kießling
 
Single page application
Single page applicationSingle page application
Single page applicationArthur Fung
 
Single page applications
Single page applicationsSingle page applications
Single page applicationsDiego Cardozo
 
Single page application and Framework
Single page application and FrameworkSingle page application and Framework
Single page application and FrameworkChandrasekar G
 
Muhammad azamuddin introduction-to-reactjs
Muhammad azamuddin   introduction-to-reactjsMuhammad azamuddin   introduction-to-reactjs
Muhammad azamuddin introduction-to-reactjsPHP Indonesia
 
Automated perf optimization - jQuery Conference
Automated perf optimization - jQuery ConferenceAutomated perf optimization - jQuery Conference
Automated perf optimization - jQuery ConferenceMatthew Lancaster
 
Angular vs React: Building modern SharePoint interfaces with SPFx
Angular vs React: Building modern SharePoint interfaces with SPFxAngular vs React: Building modern SharePoint interfaces with SPFx
Angular vs React: Building modern SharePoint interfaces with SPFxDimcho Tsanov
 
Choosing a JavaScript Framework
Choosing a JavaScript FrameworkChoosing a JavaScript Framework
Choosing a JavaScript FrameworkTim Rayburn
 
Learning Single page Application chapter 1
Learning Single page Application chapter 1Learning Single page Application chapter 1
Learning Single page Application chapter 1Puguh Rismadi
 
jQuery Keynote - Fall 2010
jQuery Keynote - Fall 2010jQuery Keynote - Fall 2010
jQuery Keynote - Fall 2010jeresig
 
Single Page Application presentation
Single Page Application presentationSingle Page Application presentation
Single Page Application presentationJohn Staveley
 
Mvvm knockout vs angular
Mvvm knockout vs angularMvvm knockout vs angular
Mvvm knockout vs angularBasarat Syed
 
AngularJS + React
AngularJS + ReactAngularJS + React
AngularJS + Reactjustvamp
 

What's hot (20)

Angular.js Talk at the November Meetup of the BerlinJS User Group
Angular.js Talk at the November Meetup of the BerlinJS User GroupAngular.js Talk at the November Meetup of the BerlinJS User Group
Angular.js Talk at the November Meetup of the BerlinJS User Group
 
Single page application
Single page applicationSingle page application
Single page application
 
Single page applications
Single page applicationsSingle page applications
Single page applications
 
Single page application and Framework
Single page application and FrameworkSingle page application and Framework
Single page application and Framework
 
A team 43 C
A team 43 CA team 43 C
A team 43 C
 
Muhammad azamuddin introduction-to-reactjs
Muhammad azamuddin   introduction-to-reactjsMuhammad azamuddin   introduction-to-reactjs
Muhammad azamuddin introduction-to-reactjs
 
Automated perf optimization - jQuery Conference
Automated perf optimization - jQuery ConferenceAutomated perf optimization - jQuery Conference
Automated perf optimization - jQuery Conference
 
Angular vs React: Building modern SharePoint interfaces with SPFx
Angular vs React: Building modern SharePoint interfaces with SPFxAngular vs React: Building modern SharePoint interfaces with SPFx
Angular vs React: Building modern SharePoint interfaces with SPFx
 
Spa with angular
Spa with angularSpa with angular
Spa with angular
 
Choosing a JavaScript Framework
Choosing a JavaScript FrameworkChoosing a JavaScript Framework
Choosing a JavaScript Framework
 
Learning Single page Application chapter 1
Learning Single page Application chapter 1Learning Single page Application chapter 1
Learning Single page Application chapter 1
 
Unit testing
Unit testingUnit testing
Unit testing
 
Single Page Applications
Single Page ApplicationsSingle Page Applications
Single Page Applications
 
jQuery Keynote - Fall 2010
jQuery Keynote - Fall 2010jQuery Keynote - Fall 2010
jQuery Keynote - Fall 2010
 
Learn react the right way
Learn react the right way  Learn react the right way
Learn react the right way
 
Single Page Application presentation
Single Page Application presentationSingle Page Application presentation
Single Page Application presentation
 
Mvvm knockout vs angular
Mvvm knockout vs angularMvvm knockout vs angular
Mvvm knockout vs angular
 
Jquery
JqueryJquery
Jquery
 
AngularJS + React
AngularJS + ReactAngularJS + React
AngularJS + React
 
Jquery
JqueryJquery
Jquery
 

Similar to Building applications with WordPress [WordCamp NYC 2016]

ASP.NET MVC 5 Building Your First Web Application (A Beginner S Guide
ASP.NET MVC 5  Building Your First Web Application (A Beginner S GuideASP.NET MVC 5  Building Your First Web Application (A Beginner S Guide
ASP.NET MVC 5 Building Your First Web Application (A Beginner S GuideAlicia Buske
 
Junaid Saghir updated cv (3)
Junaid Saghir updated cv (3)Junaid Saghir updated cv (3)
Junaid Saghir updated cv (3)Junaid Saghir
 
Rajat Kanti Gupta
Rajat Kanti GuptaRajat Kanti Gupta
Rajat Kanti GuptaRajat Gupta
 
Rutgers - FrontPage 98 (Advanced)
Rutgers - FrontPage 98 (Advanced)Rutgers - FrontPage 98 (Advanced)
Rutgers - FrontPage 98 (Advanced)Michael Dobe, Ph.D.
 
Bdd with Cucumber and Mocha
Bdd with Cucumber and MochaBdd with Cucumber and Mocha
Bdd with Cucumber and MochaAtish Narlawar
 
Microsoft WebMatrix Platform Overview
Microsoft WebMatrix Platform OverviewMicrosoft WebMatrix Platform Overview
Microsoft WebMatrix Platform OverviewSpiffy
 
The web - What it has, what it lacks and where it must go - keynote at Riga D...
The web - What it has, what it lacks and where it must go - keynote at Riga D...The web - What it has, what it lacks and where it must go - keynote at Riga D...
The web - What it has, what it lacks and where it must go - keynote at Riga D...Robert Nyman
 
Progressive Web Application by Citytech
Progressive Web Application by CitytechProgressive Web Application by Citytech
Progressive Web Application by CitytechRitwik Das
 
Using WordPress as a web application platform
Using WordPress as a web application platformUsing WordPress as a web application platform
Using WordPress as a web application platformJoe Querin
 
Chicago ALM User Group - Nov 2014 - Application Insights 101
Chicago ALM User Group - Nov 2014 - Application Insights 101Chicago ALM User Group - Nov 2014 - Application Insights 101
Chicago ALM User Group - Nov 2014 - Application Insights 101Angela Dugan
 
The web - What it has, what it lacks and where it must go - Bulgaria Web Summ...
The web - What it has, what it lacks and where it must go - Bulgaria Web Summ...The web - What it has, what it lacks and where it must go - Bulgaria Web Summ...
The web - What it has, what it lacks and where it must go - Bulgaria Web Summ...Robert Nyman
 
Lean Development: Design Through Iterative Experiments
Lean Development: Design Through Iterative ExperimentsLean Development: Design Through Iterative Experiments
Lean Development: Design Through Iterative ExperimentsSalesforce Developers
 
Seminar: Become a Reliable Web Programmer
Seminar: Become a Reliable Web ProgrammerSeminar: Become a Reliable Web Programmer
Seminar: Become a Reliable Web ProgrammerAchmad Solichin
 
SummerTerm_PPT.pptx
SummerTerm_PPT.pptxSummerTerm_PPT.pptx
SummerTerm_PPT.pptxUday742276
 
Office Add ins community call-February 2019
Office Add ins community call-February 2019Office Add ins community call-February 2019
Office Add ins community call-February 2019Microsoft 365 Developer
 
M365 global developer bootcamp 2019 Intro to SPFx Version
M365 global developer bootcamp 2019 Intro to SPFx VersionM365 global developer bootcamp 2019 Intro to SPFx Version
M365 global developer bootcamp 2019 Intro to SPFx VersionThomas Daly
 

Similar to Building applications with WordPress [WordCamp NYC 2016] (20)

ASP.NET MVC 5 Building Your First Web Application (A Beginner S Guide
ASP.NET MVC 5  Building Your First Web Application (A Beginner S GuideASP.NET MVC 5  Building Your First Web Application (A Beginner S Guide
ASP.NET MVC 5 Building Your First Web Application (A Beginner S Guide
 
Junaid Saghir updated cv (3)
Junaid Saghir updated cv (3)Junaid Saghir updated cv (3)
Junaid Saghir updated cv (3)
 
Rajat Kanti Gupta
Rajat Kanti GuptaRajat Kanti Gupta
Rajat Kanti Gupta
 
Rutgers - FrontPage 98 (Advanced)
Rutgers - FrontPage 98 (Advanced)Rutgers - FrontPage 98 (Advanced)
Rutgers - FrontPage 98 (Advanced)
 
Bdd with Cucumber and Mocha
Bdd with Cucumber and MochaBdd with Cucumber and Mocha
Bdd with Cucumber and Mocha
 
Asp.net Web Development.pdf
Asp.net Web Development.pdfAsp.net Web Development.pdf
Asp.net Web Development.pdf
 
Microsoft WebMatrix Platform Overview
Microsoft WebMatrix Platform OverviewMicrosoft WebMatrix Platform Overview
Microsoft WebMatrix Platform Overview
 
The web - What it has, what it lacks and where it must go - keynote at Riga D...
The web - What it has, what it lacks and where it must go - keynote at Riga D...The web - What it has, what it lacks and where it must go - keynote at Riga D...
The web - What it has, what it lacks and where it must go - keynote at Riga D...
 
Progressive Web Application by Citytech
Progressive Web Application by CitytechProgressive Web Application by Citytech
Progressive Web Application by Citytech
 
NEXT.JS
NEXT.JSNEXT.JS
NEXT.JS
 
Using WordPress as a web application platform
Using WordPress as a web application platformUsing WordPress as a web application platform
Using WordPress as a web application platform
 
Chicago ALM User Group - Nov 2014 - Application Insights 101
Chicago ALM User Group - Nov 2014 - Application Insights 101Chicago ALM User Group - Nov 2014 - Application Insights 101
Chicago ALM User Group - Nov 2014 - Application Insights 101
 
The web - What it has, what it lacks and where it must go - Bulgaria Web Summ...
The web - What it has, what it lacks and where it must go - Bulgaria Web Summ...The web - What it has, what it lacks and where it must go - Bulgaria Web Summ...
The web - What it has, what it lacks and where it must go - Bulgaria Web Summ...
 
Lean Development: Design Through Iterative Experiments
Lean Development: Design Through Iterative ExperimentsLean Development: Design Through Iterative Experiments
Lean Development: Design Through Iterative Experiments
 
Seminar: Become a Reliable Web Programmer
Seminar: Become a Reliable Web ProgrammerSeminar: Become a Reliable Web Programmer
Seminar: Become a Reliable Web Programmer
 
SummerTerm_PPT.pptx
SummerTerm_PPT.pptxSummerTerm_PPT.pptx
SummerTerm_PPT.pptx
 
Khaja moizuddin_Resume
Khaja moizuddin_ResumeKhaja moizuddin_Resume
Khaja moizuddin_Resume
 
Office Add ins community call-February 2019
Office Add ins community call-February 2019Office Add ins community call-February 2019
Office Add ins community call-February 2019
 
Mvc summary
Mvc summaryMvc summary
Mvc summary
 
M365 global developer bootcamp 2019 Intro to SPFx Version
M365 global developer bootcamp 2019 Intro to SPFx VersionM365 global developer bootcamp 2019 Intro to SPFx Version
M365 global developer bootcamp 2019 Intro to SPFx Version
 

Recently uploaded

VIP Kolkata Call Girls Salt Lake 8250192130 Available With Room
VIP Kolkata Call Girls Salt Lake 8250192130 Available With RoomVIP Kolkata Call Girls Salt Lake 8250192130 Available With Room
VIP Kolkata Call Girls Salt Lake 8250192130 Available With Roomgirls4nights
 
VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130  Available With RoomVIP Kolkata Call Girl Dum Dum 👉 8250192130  Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Roomdivyansh0kumar0
 
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts serviceChennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts servicesonalikaur4
 
Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
Challengers I Told Ya ShirtChallengers I Told Ya Shirt
Challengers I Told Ya ShirtChallengers I Told Ya ShirtChallengers I Told Ya ShirtChallengers I Told Ya Shirt
Challengers I Told Ya ShirtChallengers I Told Ya Shirtrahman018755
 
VIP Kolkata Call Girl Alambazar 👉 8250192130 Available With Room
VIP Kolkata Call Girl Alambazar 👉 8250192130  Available With RoomVIP Kolkata Call Girl Alambazar 👉 8250192130  Available With Room
VIP Kolkata Call Girl Alambazar 👉 8250192130 Available With Roomdivyansh0kumar0
 
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call GirlVIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girladitipandeya
 
Pune Airport ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready...
Pune Airport ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready...Pune Airport ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready...
Pune Airport ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready...tanu pandey
 
AlbaniaDreamin24 - How to easily use an API with Flows
AlbaniaDreamin24 - How to easily use an API with FlowsAlbaniaDreamin24 - How to easily use an API with Flows
AlbaniaDreamin24 - How to easily use an API with FlowsThierry TROUIN ☁
 
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort ServiceEnjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort ServiceDelhi Call girls
 
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
Low Rate Call Girls Kolkata Avani 🤌 8250192130 🚀 Vip Call Girls Kolkata
Low Rate Call Girls Kolkata Avani 🤌  8250192130 🚀 Vip Call Girls KolkataLow Rate Call Girls Kolkata Avani 🤌  8250192130 🚀 Vip Call Girls Kolkata
Low Rate Call Girls Kolkata Avani 🤌 8250192130 🚀 Vip Call Girls Kolkataanamikaraghav4
 
Networking in the Penumbra presented by Geoff Huston at NZNOG
Networking in the Penumbra presented by Geoff Huston at NZNOGNetworking in the Penumbra presented by Geoff Huston at NZNOG
Networking in the Penumbra presented by Geoff Huston at NZNOGAPNIC
 
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...APNIC
 
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...SofiyaSharma5
 
Russian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl ServiceRussian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl Servicegwenoracqe6
 
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝soniya singh
 

Recently uploaded (20)

VIP Kolkata Call Girls Salt Lake 8250192130 Available With Room
VIP Kolkata Call Girls Salt Lake 8250192130 Available With RoomVIP Kolkata Call Girls Salt Lake 8250192130 Available With Room
VIP Kolkata Call Girls Salt Lake 8250192130 Available With Room
 
VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130  Available With RoomVIP Kolkata Call Girl Dum Dum 👉 8250192130  Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Room
 
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts serviceChennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts service
 
Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝
 
Call Girls In South Ex 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SERVICE
Call Girls In South Ex 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SERVICECall Girls In South Ex 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SERVICE
Call Girls In South Ex 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SERVICE
 
Challengers I Told Ya ShirtChallengers I Told Ya Shirt
Challengers I Told Ya ShirtChallengers I Told Ya ShirtChallengers I Told Ya ShirtChallengers I Told Ya Shirt
Challengers I Told Ya ShirtChallengers I Told Ya Shirt
 
VIP Kolkata Call Girl Alambazar 👉 8250192130 Available With Room
VIP Kolkata Call Girl Alambazar 👉 8250192130  Available With RoomVIP Kolkata Call Girl Alambazar 👉 8250192130  Available With Room
VIP Kolkata Call Girl Alambazar 👉 8250192130 Available With Room
 
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call GirlVIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
 
Pune Airport ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready...
Pune Airport ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready...Pune Airport ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready...
Pune Airport ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready...
 
AlbaniaDreamin24 - How to easily use an API with Flows
AlbaniaDreamin24 - How to easily use an API with FlowsAlbaniaDreamin24 - How to easily use an API with Flows
AlbaniaDreamin24 - How to easily use an API with Flows
 
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort ServiceEnjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
 
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
 
Low Rate Call Girls Kolkata Avani 🤌 8250192130 🚀 Vip Call Girls Kolkata
Low Rate Call Girls Kolkata Avani 🤌  8250192130 🚀 Vip Call Girls KolkataLow Rate Call Girls Kolkata Avani 🤌  8250192130 🚀 Vip Call Girls Kolkata
Low Rate Call Girls Kolkata Avani 🤌 8250192130 🚀 Vip Call Girls Kolkata
 
Networking in the Penumbra presented by Geoff Huston at NZNOG
Networking in the Penumbra presented by Geoff Huston at NZNOGNetworking in the Penumbra presented by Geoff Huston at NZNOG
Networking in the Penumbra presented by Geoff Huston at NZNOG
 
Rohini Sector 26 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 26 Call Girls Delhi 9999965857 @Sabina Saikh No AdvanceRohini Sector 26 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 26 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
 
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
 
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
 
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
 
Russian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl ServiceRussian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl Service
 
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝
 

Building applications with WordPress [WordCamp NYC 2016]

  • 1. Building Applications with WordPress Steve Bruner WordCamp NYC July 17, 2016
  • 2. Me…Steve Bruner WordPress Developer 10+ years Active community member WordPress NYC Meetup: since August 2008 WordCamp NYC: 2009, 2010, 2012, 2014 Co-Developer of: Piklist [plugin] Rapid Development Framework Build powerful websites and applications with WordPress
  • 3. WordCamp NYC 2009 Presented a Contact Manager Theme: RoloPress
  • 5.
  • 7.
  • 8. ....As WP Engine continues its torrid growth amidst strong customer demand, it has to keep finding ways to deliver world-class support to every customer every day. That means continually improving existing tools and building new ones – quickly. “I have a laundry list of about 40 WordPress dev projects just for this quarter,” Hoanshelt said. “So whenever my team is gearing up for the next one, my Project Manager jokes, ‘Just Piklist it.’” Piklist Customer Success: WP Engine https://piklist.com/case-study/piklist-customer-success-wp-engine/
  • 9. Process 1. Build a minimal viable product (MVP) 2. Measure for user behavior 3. Learn for the next iteration
  • 10. Disable Front-end Why? Do you need a theme for your application? wp-admin is: Secure Responsive Controlled environment
  • 11. Disable Front-end How? function my_no_front_end() { if( !is_admin() ) { wp_redirect( admin_url() ); exit; } } add_action( 'wp', 'my_no_front_end' );
  • 12. Change Admin Menu Why? Does your application need the default WordPress items? A cleaner admin is easier to navigate. Don’t make your users work around WordPress. How? Plugin: https://wordpress.org/plugins/admin-menu-editor/ Manipulate: global $menu, $submenu;
  • 13. Replace Core Settings Pages Why? Do the default settings pages make sense for your application? A cleaner admin is easier to navigate.
  • 14. Replace Core Settings Pages How? Plugin: https://wordpress.org/plugins/admin-menu-editor/ Remove page: remove_submenu_page() Just hides it. Redirect to your new page. Add new page: add_submenu_page() Do not use settings api… saves as a serialized array. Use update_option()
  • 15. Create Roles and Capabilities Why? Usually different than standard blog roles. How? Plugin: Members Members
  • 16. Disable Author Pages Why? Employees are now authors. Don’t need their own pages. How? Plugin: Disable Author Pages
  • 17. Custom Post Statuses Why? Default statuses may not be appropriate for your application. e.g. “Publish”, “Draft”, etc. Examples: “New Order”, “Received”, “Shipped”, etc. How? register_post_status() Registers new post status, but doesn’t change admin UI
  • 18. Validate and Sanitize Fields Why? Garbage in… garbage out. Trust no one. How? sanitize_* functions wp_kses functions esc_ * functions Validate with conditionals. Javascript not as secure as server-side validation
  • 19. Save Empty Fields Why? Empty fields are a value. Makes it easy to loop over data. Consistency in your object.
  • 20. “If you choose not to decide, you still have made a choice” Rush - Freewill
  • 21. Understand your data Why? Make sure it is in a useable format. You may want to query it. How? Save data normally: One row per field. Maybe a serialized array is not the best choice? Name your meta keys something meaningful. Look in your database…make sure you understand the data.
  • 22. Tooltip Help Why? Explain expected field input. Give users independence. Fewer support calls. How? jQuery UI CSS
  • 23. Dashboard Widgets Why? Provide application overview: Sales, Open Orders, etc. Tailor to logged in user. How? https://codex.wordpress.org/Dashboard_Widgets_API
  • 24. Piklist piklist.com Custom post statuses Field validation and sanitization Tooltip help Dashboard widgets Replace core settings pages Display fields based on post status/user role Infinite repeater fields. Object relationships Multiple user roles Widgets and shortcodes And much more...