Date post: | 15-Jul-2015 |
Category: |
Internet |
Upload: | david-clark |
View: | 181 times |
Download: | 3 times |
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