Blog

Introducing the WordPress Component Library

We’re proud to introduce the WordPress Component Library: a collection of front-end components constructed with WordPress and accessibility at the forefront.

Many of the HTML and CSS components we build for our clients are structurally similar, particularly for prolific features like menus, search forms, posts, and blogrolls. A common starting point offers efficiencies to our clients while simultaneously raising the bar on polish and compliance with standards like accessibility. In evaluating existing libraries, we found that the industry was missing a good, open source project built with WordPress’s often opinionated markup (e.g. menus) and basic layout structure in mind.

Read More on Introducing the WordPress Component Library

10up Engineering Best Practices

At 10up, we build custom publishing experiences. We take great pride in all aspects of building websites, from user interaction design to code performance. Security, style, workflow, design patterns, performance, and even tools all influence that publishing experience. We use the term “engineer” rather than “develop” because of the amount of skillful strategy and true craftsmanship involved in what we build.

With over 90 full time employees, 10up has a diverse team of strategists, project managers, designers, and a few dozen incredibly smart, diverse engineers. Standardization in engineering is increasingly important with such a large team. Over the past few months we collaborated as a company to document how we engineer and why. We spent a great deal of time considering various things such as WP_Query performance recommendations, workflows to maximize efficiency, and tools we want to use and maintain as a team.

We are proud to open source our Engineering Best Practices as a public project on GitHub. WordPress is an open-source project and so are our Engineering Best Practices. We believe WordPress has continued to grow because of its embracement of open source philosophies. We want our Best Practices to follow that model. We know there are opportunities to keep improving, and want to welcome community contributions that are in tune with our philosophies.

Meet ElasticPress

We are proud to announce the release of a new plugin, ElasticPress, to the WordPress community. The project started as an internal initiative to meet a particularly common yet difficult client request: improved WordPress search.

ElasticPress

ElasticPress integrates WordPress search with Elasticsearch which has become increasingly prominent powering search on major enterprise websites such as Github and WordPress.com. Elasticsearch is a scalable, peformant, and open source standalone search server based on a technology from Apache called Lucene. Besides being fast and scalable, Elasticsearch can do things like relevant results, autosuggest, geographic search, fuzzy matching, data weighting, and more.

ElasticPress ties your Elasticsearch instance to WordPress. It is a lightweight plugin that overrides the WP_Query object to return posts from Elasticsearch instead of MySQL. There are a number of special WP_Query parameters that the plugin supports to do things like meta, taxonomy, and author searches. ElasticPress can also handle cross-blog search on WordPress multi-site installations.

Full documentation and usage instructions for the plugin are on Github. ElasticPress requires WP-CLI as it is preferable to handle things like bulk indexing through PHP CLI.

Please reach out on Github with any questions. We are happy to help and greatly appreciate contributions.

Secondary HTML Content 3.0 preview

As much as we like giving back to the community, it’s often hard to find time to keep some of the more sophisticated plug-ins up to date. One plug-in that hasn’t been updated in some time that I am frequently asked about is Secondary HTML Content.

I’ve had a number of ambitious goals for 3.0 for some time:

  • Enable a more complete editor experience (notably, Visual / HTML tabs)
  • Allow users to customize the labels for each content block
  • Add support for custom post types (not just posts and pages)
  • Remove arbitrary limit of 5 editor blocks
  • Integrate the settings with the “Writing” settings page (a logical place for them; I’m make a conscious effort with my themes and plug-ins to not “clutter” the settings panel)
  • On top of all this, provide a seamless upgrade path for 2.0 users

The first bullet has been by far the most challenging. While WordPress has a number of core functions that simplify adding a visual editor, they simply weren’t built with multiple editors on one page in mind. For the technically savvy, there are many hardcoded ID attributes, interacting with both CSS and JavaScript that rely on those IDs. As we know, the DOM is not intended to have multiple elements with identical IDs (particularly when we’re hooking events with JavaScript).

Nonetheless, I’m excited to say that the biggest hurdles have been tackled. Since we can’t work on hobby projects full time, the release is probably at least a couple of weeks out, mostly having to do with the upgrade path code.