Building Web Apps with WordPress

Preview:

Citation preview

Building Web Apps with WordPress

WordPress as an Application Framework

I love WordPress!I love WordPress!I love WordPress!I love WordPress!I love WordPress!I love WordPress!I love WordPress!I love WordPress!I love WordPress!

Brian Messenlehner

@bmess

Mess*in*lay*ner

Co-Author: Building Web Apps with WordPress

@bwawwp

bwawwp.com

We love WordPress!We love WordPress!We love WordPress!We love WordPress!We love WordPress!We love WordPress!We love WordPress!We love WordPress!We love WordPress!

We love WordPress!We love WordPress!We love WordPress!We love WordPress!We love WordPress!We love WordPress!We love WordPress!We love WordPress!We love WordPress!

Co-Founder:WebDevStudios

@webdevstudios

webdevstudios.com

We love WordPress!We love WordPress!We love WordPress!We love WordPress!We love WordPress!We love WordPress!

Co-Founder:AppPresser

@apppresser

apppresser.com

We love mobile apps!We love mobile apps!We love mobile apps!We love mobile apps!We love mobile apps!We love mobile apps!

What is a Web Application Framework?A web application framework (WAF) is a software that is designed to support the development of dynamic websites, web applications, web services and web resources.

Can you build dynamic websites, web applications, web services and web resources with WordPress?

WordPress is a Web Application Framework!

What can you make?● Blogs● Websites● Content Management Systems● Ecommerce Solutions● Mobile App Hybrids● Social Networks● Company Intranets● Coffee● $$$$$$$

@bmess @webdevstudios @apppresser @bwawwp

But why use WordPress?● It’s Open Source - It’s free, has thousands of themes

and plugins to extend functionality and has a supportive community.

● It’s Popular - 20% of all websites on the internet use WordPress.

● It’s Secure - Just don’t make your password “password”.

● It’s Extendable - The source code is laced with hooks you can use in your custom theme or plugin.

@bmess @webdevstudios @apppresser @bwawwp

Hooks● Action Hooks - Insert your own code wherever there

is an available do_action().● Filter Hook - Hijack any data wrapped in

apply_filters() and alter what gets returned.

@bmess @webdevstudios @apppresser @bwawwp

do_action( 'init' );

add_action( 'init', 'wds_function' );function wds_function(){

echo 'Hi People!';exit();

}

apply_filters( 'the_content', $content );

add_filter( 'the_content', 'wds_function', 99, 1 );function wds_function( $content ){

$content .= 'Hi People!';return $content;

}

Manage Users● Basic User Data - Login, email and password

(encrypted)● Meta Data - Make any additional user data.● Custom Roles - Define custom user roles and

capabilities.

@bmess @webdevstudios @apppresser @bwawwp

wp_insert_user();wp_update_user();get_users();get_userdata();wp_delete_user();

add_user_meta();update_user_meta();get_user_meta();delete_user_meta();

Manage Posts● Basic Post Data - Title, content, author, etc...● Meta Data - Make any additional post data.

@bmess @webdevstudios @apppresser @bwawwp

wp_insert_post();wp_update_post();get_posts();get_post();wp_delete_post();

add_post_meta();update_post_meta();get_post_meta();delete_post_meta();

WP_Query();query_posts();

Custom Post Types & Taxonomies

@bmess @webdevstudios @apppresser @bwawwp

● Pages● Posts

○ Categories○ Tags

● Cars○ Make○ Model○ Year○ Color

register_post_type();register_taxonomy();

$cars = new WP_Query('post_type=cars’);

Make it faster!

@bmess @webdevstudios @apppresser @bwawwp

● C.R.E.A.M - Cache Rules Everything Around Me○ Plugins - W3 Total Cache, WP Super Cache○ Hosting - WPEngine.com & SiteGround.com have

great caching systems for their WordPress clients.○ Transients - Utilize Transients in your code.

● CDN - Content Delivery Network. Let the CDN serve your JavaScript, CSS and image files.○ MAXCDN○ Photon○ CloudFlare

I heard WordPress can’t scale...Ever been to WordPress.com???

Transients

@bmess @webdevstudios @apppresser @bwawwp

$query = get_transient( 'wds_query' );if ( empty( $query ) ){ $query = new WP_Query( 'category=featured' ); set_transient('wds_query', $query, DAY_IN_SECONDS );}

MINUTE_IN_SECONDS = 60 (seconds)HOUR_IN_SECONDS = 60 * MINUTE_IN_SECONDSDAY_IN_SECONDS = 24 * HOUR_IN_SECONDSWEEK_IN_SECONDS = 7 * DAY_IN_SECONDSYEAR_IN_SECONDS = 365 * DAY_IN_SECONDS

delete_transient( 'wds_query' );

WordPress Multisite● Shared Database● Shared Source Files

● Sub Directory - webapp.com/subsite● Sub Domain - subsite.webapp.com

● Each site has an incrementing ID○ ID is used in database tables prefix○ ID is used in upload directory for storing files

● Useful Plugins○ Domain Mapping○ Blog Copier

BuddyPress & bbPress

@bmess @webdevstudios @apppresser @bwawwp

BuddyPress & bbPress

@bmess @webdevstudios @apppresser @bwawwp

BuddyPress & bbPress

@bmess @webdevstudios @apppresser @bwawwp

BuddyPress & bbPress

@bmess @webdevstudios @apppresser @bwawwp

BuddyPress & bbPress

@bmess @webdevstudios @apppresser @bwawwp

@bmess @webdevstudios @apppresser @bwawwp

badgeos.org

Social Logins

@bmess @webdevstudios @apppresser @bwawwp

Native Facebook Apps

@bmess @webdevstudios @apppresser @bwawwp

Native Facebook Apps

@bmess @webdevstudios @apppresser @bwawwp

Facebook Canvas page is basically an iframe

Native Facebook Apps

@bmess @webdevstudios @apppresser @bwawwp

It’s just PHP

@bmess @webdevstudios @apppresser @bwawwp

Can’t find a plugin? Want to save time? Want to save money?

Build WordPress plugins from Drupal Modules and/or Joomla Extensions. Search Github for the code you need!

Use PHP libraries to build cool things.● ImageMagick - Manipulate images programmatically● Goutte - Scrape data from websites● PDF - Generate PDF documents programmatically

3rd Party APIs & Services

@bmess @webdevstudios @apppresser @bwawwp

● Google Translate● Google Maps● Google+● YouTube● Twitter● Facebook● Instagram● Foursquare● Twilio

● flickr● Semantics3● Amazon● Microsoft SharePoint● salesforce● MaxMind GeoIP

XML-RPCControl any WordPress site from another WordPress site or another web application.

require_once ABSPATH . 'wp-includes/class-IXR.php';$xmlrpc_url = 'http://anotherwordpresssite.com/xmlrpc.php';$xmlrpc_user = 'admin';$xmlrpc_pass = 'password';$rpc = new IXR_CLIENT( $xmlrpc_url );$rpc->query( 'wp.getPosts', 0, $xmlrpc_user, $xmlrpc_pass );print_r( $rpc->getResponse() );

● wp.getAuthors● wp.getPosts● wp.getPost● wp.newPost● wp.editPost● wp.deletePost

● wp.getOptions● wp.setOptions● wp.getTerms● wp.getTerm● wp.newTerm● wp.getTaxonomies

Hybrid Mobile Apps

@bmess @webdevstudios @apppresser @bwawwp

webviews - Fastest way to make a mobile app.

Utilize native device features with XML-RPC to push and pull data to and from WordPress.

Hybrid Mobile Apps

@bmess @webdevstudios @apppresser @bwawwp

RNP9

Hybrid Mobile Apps

@bmess @webdevstudios @apppresser @bwawwp

RNP9

Hybrid Mobile Apps

@bmess @webdevstudios @apppresser @bwawwp

RNP9

Hybrid Mobile Apps

@bmess @webdevstudios @apppresser @bwawwp

RNP9

@bmess @webdevstudios @apppresser @bwawwp

badgeos.org

Hybrid Mobile Apps

@bmess @webdevstudios @apppresser @bwawwp

Don’t want to code it yourself?

Build iOS/Android apps using WordPress

AppPresser

@bmess @webdevstudios @apppresser @bwawwp

AppPresser

@bmess @webdevstudios @apppresser @bwawwp

What can you build?

Anything you want...

Beer & Date App

@bmess @webdevstudios @apppresser @bwawwp

Step 1: Choose your BeerStep 2: Choose your DateStep 3: ConfirmStep 4: Good Time

WordPress Plugins:BuddyPress

AppPresser Extensions:AppCamera AppPushAppGeo AppMaps

@bmess @webdevstudios @apppresser @bwawwp

What Else?

Google Glass

@bmess @webdevstudios @apppresser @bwawwp

Post photos to your WordPress site by winking and talking.

See comments when they are made.

Oculus Virtual Reality

@bmess @webdevstudios @apppresser @bwawwp

Virtual Learning Environment with content driven by WordPress

BadgeOS for unlocking Achievements

WordPress is the perfect vehicle for content delivery!

Questions???

Follow Me:@bmess@webdevstudios@apppresser@bwawwp