We talked about Building Web Apps with WordPress at our Jan 15, 2015 meetup. Below are the notes.
WordPress as a Web App
Presented by Brian Richards
- Custom post types
- Custom taxonomies
- Custom meta: post meta, user meta, comment meta
- User roles & restrictions
- Post relationships (via Posts 2 Posts)
- pre_get_posts: can be more specific than above
- $wpdb: can be even more specific than above
- AJAX: save users time and reduce server load
- zapier.com: like IFTTT, but with more options
- AppPresser.com: Convert your WordPress website into a mobile app, publish on the app stores
- WP-API (coming soon): Access your WordPress site’s data through an easy-to-use HTTP REST API
- Ask: who is your core audience? What are they trying to do with the data? Answers help with information architecture.
- BadgeOS: free plugin that lets you easily create achievements and issue sharable badges as your users succeed
- Why start with WordPress? You can build very quickly because of the tools available in WordPress.
- Caching: use transients, Varnish, memcached
Using WordPress to Power an Application: How we built a rewards platform in just a few weeks
Presented by Bob Orchard
- Choose Your Features
- Plan Your Development
- Install WordPress
- Create Your Plugin
We’ve started planning WordCamp Grand Rapids 2015! We’ll have our first volunteer meeting after the next meetup (Feb 19). You’re welcome to join us!
We talked about Development Environments and Version Control at our Dec 18, 2014 meetup. We talked about ServerPress, Git, and developing locally. Below are the notes.
Gregg Franklin gave a demo of DesktopServer, a local server package which runs on Mac and Windows. He showed how to create and manage local development sites. He also showed how to deploy local sites to servers. Here’s a video of Gregg’s demo:
Git and developing locally
Brian Richards spoke about Git and developing locally. Here’s his presentation. Below it are notes from the talk.
- You should develop locally so you can test locally, not on live site.
- You should use Git even if you work solo, because of version control.
- Commit messages should be short but descriptive.
- Commits should be atomic: change one thing at a time.
- Git stores only the changes that have been made; SVN duplicates files.
- Brian doesn’t use WordPress as submodule; has run into issues. Checks in root and everything inside it, except wp-uploads.
- Brian doesn’t store database in Git.
- Always check out changes before you make your commit.
- Git: version control system
- Dploy.io: deploy from GitHub, Bitbucket or your own repositories to one or many servers in one click
- SourceTree: Git GUI
- Github: Git host
- Beanstalk: Git host
- Bitbucket: Git host
- gitignore.io: Create useful .gitignore files for your project
- WP Migrate DB Pro: Copy your database from one WordPress install to another with one click in your dashboard
- Dictator: a package built on top of wp-cli that allows you to export configuration files straight from the command line
- Git troubleshooting flowchart
- Sequel Pro: a fast, easy-to-use Mac database management application for working with MySQL databases.
- WP-CLI: a set of command-line tools for managing WordPress installations
We talked about what we learned at WordCamp Grand Rapids 2014. We took turns sharing specific things we learned and actions we took as a result of WordCamp.
Chad Warner and Topher DeRosia summarized a few points from talks. Others added their thoughts or asked questions. We also had plenty of discussion about other WordPress topics. Below are the notes.
Talk titles below link to slides for the talk. Here are links to all the WordCamp Grand Rapids 2014 slides.
- about page
- include basic overview, historical overview, testimonials, success stories
- clear CTAs
- create clear path
- align to sitemap
- offer clear value proposition: tell what they’ll get
- landing pages
- make content personal
- Rebecca includes stories about kids in posts
- wp_list_pluck: returns a numerically indexed array of values from the specified field
- human_time_diff: displays time in human readable format (such as “two days ago”)
- make_clickable: turns email addresses and URLs into clickable links
- get_extended: get your content, both before and after the more tag
- _split_str_by_whitespace: breaks a string into chunks by splitting at whitespace characters
- is_email: tells whether something is actually an email address
- antispambot: obfuscates an email address
- __return_false: returns false
- job responsibilities change all the time; find people who aren’t one-trick ponies
- find those willing to learn and adapt
- must speak excitedly and confidently about their ideas, but must realize that design is about client’s audience, not about them or the client
- only you control scope
- say no
- or say “yes, but it’s going to cost you” (wishlisting)
- hire a coach; Ian attributes 90% of his success to his coach
- how to find time to work on biz when working in biz?
- hire others to free up time
- allocate 1 day a month or at least a couple days a month to working on biz
- need a new site?
- has it been 3-5 years?
- is your type hard to read?
- do people need to pinch and drag to view on mobile?
- is it hard to navigate?
- does it look dated?
- can’t have a “timeless” site; sites have shelf-life of 3-5 years
- don’t buy theme before you have content
- people read websites like a billboard at 60 mph
- redundancy is your friend
- include same CTA in multiple places on page
- “almost” flat design: slight shadows and lines to make it clearer what to click, while remaining minimal
- Michelle doesn’t like sliders because they don’t convert well
- you should have just one important message, not 5
- still make sense for gallery (just look at photos, not do anything)
- don’t use for CTAs
- how do you handle clients who want to make design decisions?
- Ask why. Have a productive discussion about better way to accomplish
- design process
- start with sitemap and wireframe
- use hooks and filters when possible, and only child theme templates when you can’t use hooks or filters
- have delivery deadlines in agreement with payments scheduled
- make sure client can’t drag project out
- tell client when they need to provide content and review work
- bill regardless of whether they meet their responsibilities
- launch regardless of whether they meet their responsibilities
Remember, you can also find us on Meetup, Twitter (@wpgrandrapids and #wpgr), and Google Groups.
We talked about WordPress Performance Optimization at our May 15, 2014 meetup: testing, hosting, caching, CDNs, image optimization, queries, transients, and more. Get ready! WordCamp Grand Rapids 2014 is August 15-16! Remember, you can also find us on Meetup, Twitter (@wpgrandrapids and #wpgr), and Google Groups. If I missed anything in the notes below, please leave a comment, and I’ll add to the post.
Testing, hosting, caching, CDNs, image optimization
Managed WP hosting
Note: this section contains hosting affiliate links.
- The host is often the main determinant of performance
- Use a host that’s optimized for WordPress
- SiteGround: fast, secure WordPress hosting
- SiteGround is an excellent WordPress-optimized shared host. They’re fast, secure, and reliable, yet inexpensive. They’re the host I most frequently recommend to small business and nonprofit clients. From firsthand experience, I’ve found their plans to be superior to similar hosting plans from GoDaddy, Bluehost, DreamHost, Hostmonster, HostGator, iPage, and small local hosting companies.
- WordPress Hosting
- For clients with larger and/or higher-traffic sites, or who need additional benefits, we recommend WP Engine, but for most smaller sites, SiteGround provides great features for relatively low cost.
- Use managed WordPress hosting; they often handle caching. Even if you’re not using managed WordPress hosting, use the host’s caching as much as possible.
- WP Super Cache: simpler, less problematic than W3 Total Cache
- W3 Total Cache: more powerful but more problematic than WP Super Cache
Caching, queries, transients
W3 Total Cache
- Turn on all caches
- Enable Page Cache
- For e-commerce, don’t cache cart, checkout, my account pages
- Queries are controlled by query.php in core
- Queries use WP_Query class
- Look at query.php and see all the filters available. You may not want to write a custom query; you may be able to modify the main query with pre_get_posts(). It’s more efficient to modify the main query that WordPress is already running than to add a new query. Be very specific about when you’re going to modify the main query; use conditionals.
WordPress development tools
Our February 2014 meetup topic was WordPress Business Workflow. Four people gave short presentations, then we had an open discussion.
If I missed anything, please leave a comment, and I’ll add to the post.
- Work standards are important (version control, backups, SSH, etc.)
- Taking shortcuts can hurt you
- Work standards can save you
- They make it easier to bring people on to your team
- Tools: Git, Vagrant, Bitbucket
How I started my WordPress business
- How Kurt got into WordPress development.
- Found his first (low-paying) jobs on Elance, and some jobs led to good clients. Lately it’s been too difficult to compete with low-bidders (especially in low-wage countries). He thinks oDesk is even more low-wage. oDesk takes 9.5%.
- Before you start, be prepared to go hungry for 1-2 years. If possible, set funds aside before starting.
- Work with others with complementary skills. He’s been making local connections at The Factory.
- Bills hourly with 50% deposits (of estimated total).
- Tools: Photoshop, email, Google Calendar, Firefox, Dropbox, Camtasia, Vegas, QuickBooks.
Contracts and business hours
- Scope of Work
- What’s included
- What’s excluded
- Schedule and Completion Date
- Client Responsibilities
- What they must provide you
- What they must do
- Cost Estimates
- Estimates, not fixed costs
- Payment Terms
- How much?
- Domain Registration, Hosting, Maintenance, SEO
- Specify who controls these
- Technical Support
- Limitation of Liabilities
- Copyrights and Trademarks
- Attorney Fees
- Protect your time; no one else will
- Set an autoreply with your work hours and emergency contact info
Discipline and time-tracking
- Be disciplined. Track time. That helps inform future estimates.
- Don’t allow scope creep. Something has to give: time, money, or scope.
- Topher says you get tax discounts for accepting foreign funds.
- Save for taxes (25-30%). Make estimated payments. Kurt uses Paychex.
- Get an accountant. Have them do taxes, advise on deductions, etc.
- Send 1099-MISCs to anyone to whom you pay over $600.
Recommended Lawyers: Haans Mulder, Todd Stuart, Mike Lichterman, Andrew Longcore.
Prospecting & Estimating
- Use a Discovery Phase to get to know each other and decide if you want to work together. Give a deliverable (report/plan). Charge a few hundred if you can.
- Red flags: prospects who want you to reduce your rates because they tell you their site will be a good portfolio piece, or who offer equity in their company, or who promise future work.