WordPress Caching

There are a lot of options out there for caching WordPress.

I get asked quite often which is the ‘best’ plugin for WordPress caching.

There are three main players:

WP Super Cache – Most Popular. Easy to use, but needs some config. Been around a while.

w3 Total Cache – this one has about 2.8 million downloads. not for the faint of heart, takes a lot of setup

Hyper Cache – this one is newer, with about 400k downloads. very simple, very fast. gaining traction.

We’ve used all three, but our ‘go to’ is WP Super Cache.  This is after some benchmarking.

[button link=”http://www.tutorial9.net/tutorials/web-tutorials/wordpress-caching-whats-the-best-caching-plugin/”]Read Article[/button]

OpenTickets launches as an alternative to TicketMaster

open-tickets-logoToday we launched OpenTickets, an open-source Event Management and Online Ticket Sales platform, at OpenTickets.com .

“OpenTickets was created to offer small and mid-size organizations and businesses a real solution to level the playing field,” said Michael Cremean, Founder and CEO of Quadshot Software. “Buying tickets online should be simple for the customer, but unfortunately it is often frustrating. By creating OpenTickets using open-source technologies, we’ve made the process easy for the customer and affordable for organizations selling tickets.”

 OpenTickets first helped solve online ticketing issues for Artisan Center Theater, a 200-seat theater located in Hurst, Texas. Since implementing OpenTickets software during the second quarter of 2013, the growing theater in the Dallas-Fort Worth area has experienced a record-breaking year in ticket sales – over 40,000 just in the last 6 months.

With help from OpenTickets, Artisan Center Theater has seen a 30 percent increased revenue growth and a successful donations program.  Due to this success Artisan Theater will be opening a second stage in January 2014 – doubling their capacity after ten years of being in business.

In an open letter to Quadshot Software, Artisan Center Theater Founder and President, Richard Blair wrote, “What you have done for our business is very difficult to express in words, but I will try. OpenTickets has been the most refreshing and exciting professional business relationship I can remember in 35 years of business. Artisan Center Theater recently celebrated our 10th Birthday. We are now one of the top 10 community theaters in America with over 70,000 patrons attending each year. OpenTickets has insured we will have many more to come. Thank you.”

OpenTickets Software was built to leverage two widely used open-source software packages. WordPress, used by about 1/5 of the top 10 million websites, provides constantly updated, powerful, secure web content management tools. WordPress creates a strong, proven backbone for OpenTickets. WooCommerce, an open-source and free e-commerce toolkit, handles a large portion of the E-Commerce component.  Using open-source tools and technologies like PHP, HTML5, JavaScript, and AJAX, we provide a cross-platform, mobile-enabled, user-friendly way to sell online tickets.  For management, we also created an easy interface to manage event-related product and tickets sales and generate reports.

“When we began developing OpenTickets and working with Artisan, we noticed that there were some basic concepts that the available ticketing platforms just did not cover – flexibility, open-source access to code and easy management tools. ” said Chris Webb, Co-founder and CTO for Quadshot software. “Artisan’s online ticketing problems were not unique, but rather industry wide; every theater owner, promoter and venue manager we talked to had the same issues with their current ticketing solution.”

OpenTickets rivals other ticketing platforms by offering an array of features through open-source technologies including:

  • Open-source Code Flexibility

  • Available as a download to run on your server or SaaS

  • Venue Management

  • Event Management  – Single and Recurring

  • Seating Charts – Simple Tools to create GA, Zone or Reserved Seating

  • Ticket and Product Management

  • Reporting system with Audit Trail and Exports

  • Permission-based Roles

  • User Management

  • Coupons and Sale Support

  • Wait List

  • Event Check-in with QR Reader Support

  • System Administration and Custom Settings

OpenTickets customer Rick Blair added “From our very first contact, working with (OpenTickets) has been a pleasure and rewarding experience.  Please feel free to share my hardy endorsement

WordPress 3.7.1 Maintenance Release

A maintenance release was made today. This covers several minor bug fixes.

  • images with captions no longer appear broken in the visual editor.
  • Allow some sites running on old or poorly configured servers to continue to check for updates from WordPress.org.
  • Avoid fatal errors with certain plugins that were incorrectly calling some WordPress functions too early.
  • Fix hierarchical sorting in get_pages(), exclusions in wp_list_categories(), and in_category() when called with empty values.
  • Fix a warning that may occur in certain setups while performing a search, and a few other notices.

For a full writeup, check out WordPress.org

The (Re) Making Of Maine Today

…and how passion and identity inspired me to push beyond our own limitations.

Maine Today ScreenAs a developer for Quadshot I can say I am proud of our successes in revitalizing some great, classic sites and we have become well known for our ability to “manage old content.” As a team we’ve brought older, yet still relevant content back to life with a fresh new look and feel.

Because of this reputation Quadshot has acquired, I have had the unique opportunity as a well-versed modern developer to compare old and new web technology. I imagine it to be the same way an engineer will look at the old buildings in Brooklyn after Hurricane Sandy is done and say, “Well this doesn’t work anymore.”

These “survivor sites” as I like to call them, harken back to a time when the kinks were still being worked out of the technology and the rules were rigid. So, now they might have content that no longer fits, spilling out of “old-school” tables and divs. Content that battles with outdated css that had to comply to Internet Explorer 6 or graphic files that have been re-sized so many times their pixels look “worn out.” Luckily many of these layouts have managed to survive multiple experiments to make the content wider, but then suffered when everything had to be shrunk fit a mobile display.

Maine Today did not exactly fall into the desperate state as described above, but it did have a look that it was “out growing its cage.” It desperately needed breathing room and it was my task to do the preliminary analysis of their code which should have been a pretty straight-forward task. They are a simple variety news/life style site, right? Right, kind of.

At first, the project didn’t appear as complex on the surface as the kind of enterprise level conversion Quadshot regularly does, but it was a complex project and I didn’t realize that it was as complex as it was until I started to read their content. I mean, I really read their content. I know this might sound like an obvious step to some, but we live in a world with “spinner” articles, scraped and reused content, RSS feeds form “authority” sites and well, just plain ol’ bad writing. A quick digestion of the material would be my norm.

A fast read wouldn’t do in the case of Maine Today’s content, however. It couldn’t do because I saw that the actual writing holds value. And when I say that, I do not mean, good grammar or fancy prose. What I mean is that it has that thing that makes a difference in art, journalism, song writing, visual media or your cousin’s band. That thing you can’t just go out and buy. The writing at Maine Today has “VIBE”. Check it out- within restaurant reviews and the Top 10 Places to Pumpkin Pick is a distinct voice that reflects the unique character of Mainers, as the residents of Maine have lovingly been dubbed.

Maine Today PreviewDuring the discovery, or planning phase, we met via phone conferencing, created conversations in Basecamp, a project management software, then met in person. Although Maine Today used the expression “blog” during conversations, I could see they were really taking on much more of a unique vision. It was more like a hybrid editorial site, mixed with the features of a “listings” site, like a Zagats and Yelp, but without the nonsense or complication of either.

The Maine Today team had adapted to creating for whatever they needed, in spite of their old sites limitations. If they had an idea on how a page should look nothing stopped them. They created content as-needed and were not afraid to learn and experiment.

This too resonated with me as a characteristic of I now associate with Mainers. They are not afraid to try new things, in fact they seemed to put all their weight into the learning curve and have fun at the same time.

This lead me to rethink about how content is presented and created. How could we have Freedom + Flexibility + Stability existing in the same place?

Usually I insist “people must do it right”. The way the software intended to be used. I am kinda a “stick-in-the-mud” when it comes to that stuff. However, the Maine Today team inspired me to push beyond everything I knew about WordPress and look for opportunities for freedom uncover core features that would allow flexibility and leverage WordPress’s simple, built in database and layout structure to to provide stability. We could maintain practical standards, but create some great user experiences for their editors. And ultimately, their readers benefit.

Of the many unique solutions/features we developed, a Post-to-Post style relationship process standouts as my favorite. On their old site writers would create entries that would mention the names and addresses for local landmarks or businesses. An example being, The 10 Most Beautiful Places in Maine. That post would list the location information of 10 places. The problem I saw was, if a later entry like “The 14 Greatest Places To Picnic” was written that might mention 5 out of the 10 Beautiful Places, the editor would be faced with finding the locations again, taking the chance that it could be copied incorrectly, info had changed, etc. There was no “normalization” or “on-board” reference.

To resolve this, we began by leveraging the core features of WordPress Custom Post Types to create a “Places” post type that acts as a repository of reusable information about local businesses, geographical locations and landmarks. This would include, street address, web site, a reservation service link, latitude and longitude, web link, etc. The editors could add as little or as much info as they wanted. Then, via the admin search feature, the editors can find the information for a “place”, then use a “Pulldown Menu” to show as much or as little related information. So, in say a post called, “8 Outstanding Beer Only Bars”, Joe’s Bar and Grill may only display the name and address of the location, but in other another post, as long as other info was entered, they could show a “Directions Link” or a “Call For Reservations Button” and more.

I was pretty stoked with the solution, but then I would speak to Shannon Bryan, editor and blogger of Maine Today and she would ask something practical like:

SHANNON: “What if we create an Apple Picking Guide and we need to list 10 farms that may have different locations each year or what if I have a page on the site, and I need to create a unique post, but it is in a different category… .”

ME: “hmmmm… you are really blowing my high, I will have to think about that.”

MY CURIOSITY: Do you just write about Apple Picking or do you actually go Apple Picking?*

NOTE: * I am from Los Angeles – I have never even heard of apple picking.

SHANNON: “Sure, it is fun, you should try it, come with next time we go.”

That is when I started to push the limits of how to handle a variety of situations regarding content, how it is displayed and what flexibility means to a creative person, but particularly when stability would be the normal requirement. Also, because I can chew gum and do Sudoku at the same time, I thought about how fun it might be to go Apple Picking.

Although looking like a standard Post-to-Post relationship feature, our Places concept grew and became better for it. It made story topics like: 10 Must Attend Summer Concerts, 5 Amazing Places To View The Sunset and 12 Great Places To Play Pub Quiz much easier to handle, as well as a story topic that might shine light on a single, up coming event like the North Atlantic Jazz Festival. Also, another reality- Google is smart, and if a post contains an outdated address for a location, it will drop from the rankings. This way, even older reviews, posts and editorial lists will always have the latest location information. Sweet!

The above is an example of using WordPress Meta Fields to create Post-to-Post relationships. It simply is saying, you will create a new post, then find a set number of other posts that will be associated with it. This then brought up another challenge- thanks Peter and Shannon! Could the reverse happen to create a category or river page or a listings style page. Again, another time-saving way to create some consistent content, but having the flexibility to display it in different ways on the site. Genius!

The answer was resolved by Quadshot’s own Dino Termini- who by the way, is always a true rockstar at every step. Dino went to work and created some stellar conditional statements and created some pretty amazing custom “Post-to-Page” templates. We even slipped in the ability to have two distinct custom formats: a Grid version and a “single column stacked” layout.

So there are two “solutions” that grew out of inspiration, and yes, the entire process was a brain teaser, and yes, it was a fun brain teaser. And I am grateful for the opportunity to meet and read about Maine, Maine history, and especially the residents of Maine. I discovered “Mainers” think so far “out-of-the-box”, there isn’t even really a box and it was an honor to help support that kind of ingenious spirit.

Although I am speaking in the first person in this article, these solutions were truly a team effort and many thanks some of the other Quadshot Team: Dino Termini, Mike Cremean, Chris Webb and Tom Smith who contributed ideas to the solutions for this client.

And of course to WordPress, giving voice to all kinds of ingenious spirits.

——————————————————–

Platform: WordPress

Framework: Bootstraps

Grid Animation: jquery “Masonry”.

Plugins that made this solution more obvious: Advanced Custom Fields, Custom Post UI and CPTaxonomies.

WordPress Contribution

qs-wordpress-iconMy contribution to WordPress is finally in there. It all goes back to when we started this project from our client Buzz-Media. We had a pretty complicated problem dealing with types of data, to which the newest feature of WordPress in 3.0 (custom post types) was the logical answer.

The problem broke down to basically this. When you query posts using something similar to:

get_posts(array('post_type' => array('book', 'newspaper-article',
'paper')));

you can specify an array of ‘post_types’ that can be searched through. Thus, if you know, for instance, that the name of the entry contains the word ‘dog’ but you do not know if it is a ‘book’, ‘newpaper-article’, or a ‘paper’, then you would normally call something like:

get_posts(array('post_type' => array('book', 'newspaper-article',
'paper'),'s' => 'dog'));

What I found was that you could not specify this via the url with a query string. Typically, with WordPress, you can specify a url like the following and it will work:

http://www.example-wordpress.com/?post_type=book&s=dog

however, if you need to specify that you think it is either a book or a newspaper-article, you would think that the url should be structured similar to this:

http://www.example-wordpress.com/?post_type=book&s=dog&post_type[]
=newspaper-article&post_type[]=book

or

http://www.example-wordpress.com/?post_type=book&s=dog
&post_type=newspaper-article,book

(the latter because often times WordPress accepts arguments in comma delimited format), but neither actually work in 3.0. This, in my opinion, is wrong, since:

  1. if you omit the post_type query var, WordPress by default checks all post_types for that named post
  2. you can specify an array in the params sent to both get_posts() and query_posts()
  3. this was the newest feature of 3.0, and thus should have the flexibility built right in

As it turns out, the creators of WordPress agreed with me, and asked for a solution to the problem, if I was willing to offer one. Luckily, I had already created a solution, and I submitted it for their approval. After several corrections to code structure (to be in compliance with their coding standards), it was accepted and slotted to be released with WP 3.1, and it was. Also, my change incited additional, similar bug fixes in the same file/function as this one.

I am proud to announce that I am officially a contributor to WordPress Core, not just tons of plugins.

Item added to cart.
0 items - $0.00