WordPress contributors around the world are celebrating the sixth Global WordPress Translation Day throughout the entire month of September! That’s 30 days dedicated to help and encourage people to translate the software and its related resources. One of the highlights is a series of exciting core global events, starting on September 17 2021 and finishing on the United Nations’ International Translation Day itself on September 30, 2021.
Everyone is welcome to watch these events live on YouTube and to share their translation stories which will be featured during the celebrations and beyond. The global events will be in English and include presentations on how and why to you should join the thousands of translators in the project, tips and tools, interviews, and much more.
There are now 205 locales translating in what is a remarkable open source effort, bringing the opportunities of the software and its community to people in their own native languages.
Inaugural session: Introduction and latest news on WordPress Translation
Friday, September 17, 2021 at 10:00 UTC We will start the global events with a panel featuring the latest update on what is happening in the world of WordPress polyglots. Panellists will include translators Petya Raykovska and Erica Varlese. There will be a video demonstration on how to translate WordPress, a short presentation on translation statistics, a run down of upcoming events, and more.
Watch the event live on YouTube (link below) – sign-up for notifications in the video stream right now so you don’t miss it when it goes live!
Right after this session at 11:00 UTC, there will be a ‘drop-in’ translation sprint on Zoom video-conferencing, open to all. Anyone can join and hang out virtually with your Polyglots friends from all around the world and translate WordPress in your own language! RSVP for the session now!
Closing Party – Why do you translate? Our finale event for 2021 with emcee Abha Thakor. It will feature highlights from some of the local and global WordPress Translation Day events, highlight important statistics from the month, and share translator’s personal stories.
It will be followed by an after party celebration for anyone who has taken place in the event or is a translator for the project. Book now for the session on Zoom.
Ideas on how to get involved this September
There’s lots of ways to take part – discover this list of ideas.
The boundaries between a web designer and their client can often become blurred. Designers, in an effort to please paying customers, put client feedback into action – even if it leads the project in the wrong direction.
A client may be pleased with themselves and happy to get their own way. But at what cost? The ensuing results aren’t always pretty. Crowded layouts, inaccessible design elements, and a general sloppiness can seriously harm the user experience (UX).
For example, consider a client who meddles in the design details of their eCommerce website. Leaving UX decisions regarding product layouts, calls-to-action, and hero areas to a non-designer could be disastrous for sales. And yet, any potential fallout may land squarely on your shoulders. Fair? I think not.
Therefore, it’s up to us to prevent such silliness from happening in the first place. Let’s explore some ways to keep clients at a safe distance from UX.
Define the Stakes
User experience is a critical factor for every website. Yet, clients aren’t always fully aware of what’s at stake. As is often the case, it’s up to web designers to provide some background.
It’s worth taking the time to talk about the importance of accessibility and ease of use. How the design of each element within a page needs to be measured against these factors. Oh, and the massive roles that performance and mobile compatibility play as well.
Then there’s the matter of personal preference. Clients often (and unwittingly) put their own opinions above the needs of the average user. Sometimes, implementing their preference is a detriment to everyone else.
The importance of UX and its contributing factors should be brought up from the very start. When clients are informed, they’ll be more likely to follow your lead.
Welcome Feedback, but Set Boundaries
How does a client go from providing useful feedback to taking over a designer’s job? It’s often subtle and can happen quicker than you think.
To be sure, some people insist on having control of a given situation. They may be just as likely to stand over the plumber fixing their leaky pipes as they are to pester a web designer.
In other cases, the mere fact that a client is paying good money for your services gives them a certain sense of entitlement. And although they may be well-meaning, it can lead to overstepping boundaries.
The dilemma is that getting a client’s feedback is necessary for a successful outcome. But it can also be fertile ground for such a takeover. So, how do you prevent it from happening?
The key is in setting clear guidelines. For example, defining goals for a particular item and asking for feedback based on those parameters.
Consider the hero area of a home page. Let’s say you’ve built something beautiful and need client approval. You might approach them by saying something like:
“I’ve set up the hero area, please take a look! Here is what we were hoping to achieve:
Introduce branding elements, including the logo, colors and fonts;
Encourage users to subscribe to the mailing list;
Mention the 20% off discount for new subscribers;
Keep the entire area accessible, easy-to-read and concise;
What do you think?”
The example above isn’t all-encompassing. But it puts the stated goals into a client’s mind. This helps you to narrow the scope of their feedback and (hopefully) avoid anything that distracts from the desired outcome.
Put UX Back Into the Hands of Experts
Don’t get me wrong – clients should absolutely be involved in the design process. It’s their brand, after all. And things usually turn out best with their input.
But the heavy lifting of UX should be done by experts like you. Your job is to turn a client’s vision into something that is highly usable. It’s about establishing a brand while helping users get to where they want to go.
If all goes well, they’ll take the path to conversion – whether that means sales, contact, or a subscription. That’s simply too important to leave to client whims.
Instead, educate and work with your clients in an effort to drive home UX best practices. Provide them with parameters to work within. The result will be a website that benefits its owner and users alike.
When it comes to marketing your freelance web design business, it’s easy to spend the bulk of your energy on attracting new clients. That’s certainly a worthwhile pursuit. But it’s also important to focus on your existing ones as well.
There is great value in keeping existing clients in the loop. And not just from a marketing perspective. Sharing content of interest with them also helps to maintain your relationship.
Even if you haven’t worked with someone for a while, regular communication makes an impact. At the very least, it keeps you in the front of their mind. Down the road, it may even serve as a catalyst for starting up a new project together.
Despite those potential benefits, staying in touch can be difficult. Creating original content takes precious time. Plus, writing doesn’t come naturally for everyone. Figuring out what to say and how to say it is challenging.
Don’t be discouraged! Today, we’ll share some tips for writing informative content that is sure to pique your client’s interest.
Understand Your Audience
Writing for your existing design clients isn’t quite the same as trying to reach prospective ones. Just as you’d greet a longtime friend differently than a stranger, you’ll want to communicate with clients on a more personal level.
That means keeping the cheesy sales pitches to a minimum. It’s safe to assume that your clients are already sold on you and what you can do for their organization. Thus, there’s no need to reel in a fish you’ve already caught.
With that in mind, think about the most effective ways to communicate with your clients. The message is important, but so is the medium. It’s vital to meet people where they are, rather than expect them to come to you.
Social media has its place, but it’s probably not the best way to reach clients. Blogging can also be beneficial, but needs help to draw in your audience.
That leaves email as the best option. It’s often the preferred method of contact between designers and their clients. Sending your latest client-focused content serves as a natural extension.
Write from Experience
Web design is an industry that is constantly changing. This means that subject matter for client communication is all around you.
To find inspiration, look back at past experiences. Think about a website you built a few years ago. Compare the look, features, and process to the one you built more recently. How have things changed? What trends have emerged?
Odds are, those older sites are lacking in some areas. Must-have attributes such as accessibility and responsive design are common examples. And, even if they were previously implemented, it’s likely they could benefit from some modernization.
These are prime subjects to share with clients. Not everyone is aware of technological shifts. Having access to this information will allow them to stay up-to-date and make better decisions.
Explain the Impact
Informing clients about a particular subject is only part of the equation. It’s also important to explain how it impacts them.
For example, you might write a blog post touting accessibility standards. While an article about color contrast ratios and ALT attributes could go into great depth, clients are unlikely to read it without context.
First, they need to know why they should care about these subjects. In this case, you’d want to mention key points, such as:
Who is impacted when a website isn’t accessible;
What features make a website accessible;
How to know if your website is accessible or not;
The potential legal ramifications;
The idea isn’t necessarily to bombard them with facts or scare tactics. Rather, it’s about providing a brief description of a subject and how it relates to their website. If they’re interested, invite them to contact you for more information.
Stay on Schedule
Sending out communications regularly helps to keep your relationships going strong. Yet, it might also be the most difficult part of the process.
If you’re busy working on projects or trying to attract new clients, that leaves little time to reach out to existing ones. We tend to focus on the squeakiest of wheels, after all.
However, there’s no need to put too much pressure on yourself. You don’t have to write all that frequently. Monthly or even quarterly newsletters can still be effective.
The point is in making an honest effort to stay in touch and provide relevant information. It’s something that clients will appreciate. They’ll be more likely to stay with you as their needs evolve.
Maintaining Relationships, Fostering Growth
Your web design clients can bring significant value to your business over time. Unlike other industries, building a website is not a “one-and-done” scenario. Maintenance, content tweaks and redesigns are all part of the deal.
The best way to achieve that long-term value is by being proactive in your communication. Keep your clients informed on what’s happening and how it impacts them. Write content that sparks curiosity and encourages them to contact you. And meet them where they are.
By doing so, you’re giving them every reason to stay involved with their website and make improvements. It’s no longer a matter of waiting for clients to ask you for something – you’re now helping them figure out what they need.
This, as much as anything, will keep your freelance business thriving for years to come.
mongodb 1.11.0alpha1
** New Feature
* [PHPC-1849] - Handle deprecation of Serializable in PHP 8.1
* [PHPC-1889] - Support snapshot session option
* [PHPC-1890] - Create constant for snapshot read concern level
** Task
* [PHPC-1918] - BSON corpus code and symbol tests are partially testing the wrong types
* [PHPC-1922] - Update PHONGO_CE_DISABLE_SERIALIZATION for PHP 8.1
* [PHPC-1930] - Removed disabled __wakeup() function in CursorId
* [PHPC-1935] - Add .dep files to .gitignore
* [PHPC-1961] - Regex decoding error tests in top.json have unexpected, invalid syntax
* [PHPC-1965] - Re-enable and stabilise PHP 8.1 build on GitHub actions
** Improvement
* [PHPC-1538] - Lift restriction on authSource without credentials
* [PHPC-1858] - Add return type to arginfo for JsonSerializable::jsonSerialize() in PHP 8.1
* [PHPC-1875] - Disable writes on snapshot sessions
* [PHPC-1876] - Raise client error for snapshot sessions on pre-5.0 servers
* [PHPC-1933] - Add return type to arginfo for Iterator and Countable methods in PHP 8.1
pecl_http 4.2.1
* Fixed failing tests with PHP-8.1 (see gh issue #120)
* Fixed configure reliably finding the right libcurl features available
* Fixed cookie handling with libcurl 7.77+ and consistently across all
supported libcurl versions (follow-up to gh issue #116)
teds 0.2.0
* Breaking change: Change `TedsVector::__construct` to add an additional parameter `bool $preserveKeys = true`,
and use the original keys of arrays/Traversables by default, throwing for non-integers and invalid integer offsets.
(Similar to the behavior of SplFixedArray::fromArray)
* Convert references to non-references when creating values from iterables.
* Minor performance improvements of `TedsVector`
sqlsrv 5.10.0beta1
[Added]
- Support for PHP 8.1 RC 1
- Support for Ubuntu 21.04 and Alpine 3.13
- Support for Apple M1 ARM64 hardware (requires [MS ODBC Driver 17.8+](https://docs.microsoft.com/sql/connect/odbc/linux-mac/install-microsoft-odbc-driver-sql-server-macos?view=sql-server-ver15)
- Feature Request [#795](https://github.com/microsoft/msphpsql/issues/795) - adding support for [Table-valued parameters](https://github.com/Microsoft/msphpsql/wiki/Features#tvp)
[Removed]
- Support for Ubuntu 16.04
[Fixed]
- Pull request [#1260](https://github.com/microsoft/msphpsql/pull/1260) - cleaned up redundant code
- Issue [#1261](https://github.com/microsoft/msphpsql/issues/1261) - simplified get_field_as_string and made it more robust - pull request [#1265](https://github.com/microsoft/msphpsql/pull/1265)
- Pull request [#1262](https://github.com/microsoft/msphpsql/pull/1262) - simplified parse_param_array in sqlsrv
- Pull request [#1267](https://github.com/microsoft/msphpsql/pull/1267) - replaced the obsolete MACRO ZVAL_NEW_ARR with array_init
- Pull request [#1275](https://github.com/microsoft/msphpsql/pull/1275) - fixed warning compiling core_stmt.cpp by mlocati
- Pull request [#1290](https://github.com/microsoft/msphpsql/pull/1290) - updated list of supported processor architecture
[Limitations]
- No support for inout / output params when using sql_variant type
- No support for inout / output params when formatting decimal values
- In Linux and macOS, setlocale() only takes effect if it is invoked before the first connection. Attempting to set the locale after connecting will not work
- Always Encrypted requires [MS ODBC Driver 17+](https://docs.microsoft.com/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server)
- Only Windows Certificate Store and Azure Key Vault are supported. Custom Keystores are not yet supported
- Issue [#716](https://github.com/Microsoft/msphpsql/issues/716) - With Always Encrypted enabled, named parameters in subqueries are not supported
- Issue [#1050](https://github.com/microsoft/msphpsql/issues/1050) - With Always Encrypted enabled, insertion requires the column list for any tables with identity columns
- [Always Encrypted limitations](https://docs.microsoft.com/sql/connect/php/using-always-encrypted-php-drivers#limitations-of-the-php-drivers-when-using-always-encrypted)
[Known Issues]
- This preview release requires ODBC Driver 17.4.2 or above. Otherwise, a warning about failing to set an attribute may be suppressed when using an older ODBC driver.
- Connection pooling on Linux or macOS is not recommended with [unixODBC](http://www.unixodbc.org/) < 2.3.7
- When pooling is enabled in Linux or macOS
- unixODBC <= 2.3.4 (Linux and macOS) might not return proper diagnostic information, such as error messages, warnings and informative messages
- due to this unixODBC bug, fetch large data (such as xml, binary) as streams as a workaround. See the examples [here](https://github.com/Microsoft/msphpsql/wiki/Features#pooling)
pdo_sqlsrv 5.10.0beta1
[Added]
- Support for PHP 8.1 RC 1
- Support for Ubuntu 21.04 and Alpine 3.13
- Support for Apple M1 ARM64 hardware (requires [MS ODBC Driver 17.8+](https://docs.microsoft.com/sql/connect/odbc/linux-mac/install-microsoft-odbc-driver-sql-server-macos?view=sql-server-ver15)
- Feature Request [#795](https://github.com/microsoft/msphpsql/issues/795) - adding support for [Table-valued parameters](https://github.com/Microsoft/msphpsql/wiki/Features#tvp)
[Removed]
- Support for Ubuntu 16.04
[Fixed]
- Issue [#1244](https://github.com/microsoft/msphpsql/issues/1244) - use lower case for object names for PDO::lastInsertId() - pull request [#1245](https://github.com/microsoft/msphpsql/pull/1245) by morozov
- Pull request [#1251](https://github.com/microsoft/msphpsql/pull/1251) - simplified implementations of last insert id and quote
- Issue [#1258](https://github.com/microsoft/msphpsql/issues/1258) - updated pdo_sqlsrv_get_driver_methods as per documentation - pull request [#1259](https://github.com/microsoft/msphpsql/pull/1259)
- Pull request [#1260](https://github.com/microsoft/msphpsql/pull/1260) - cleaned up redundant code
- Issue [#1261](https://github.com/microsoft/msphpsql/issues/1261) - simplified get_field_as_string and made it more robust - pull request [#1265](https://github.com/microsoft/msphpsql/pull/1265)
- Pull request [#1267](https://github.com/microsoft/msphpsql/pull/1267) - replaced the obsolete MACRO ZVAL_NEW_ARR with array_init
- Pull request [#1275](https://github.com/microsoft/msphpsql/pull/1275) - fixed warning compiling core_stmt.cpp by mlocati
- Pull request [#1288](https://github.com/microsoft/msphpsql/pull/1288) - applied mask to pdo quote for binary inputs
- Pull request [#1290](https://github.com/microsoft/msphpsql/pull/1290) - updated list of supported processor architecture
[Limitations]
- No support for inout / output params when using sql_variant type
- No support for inout / output params when formatting decimal values
- In Linux and macOS, setlocale() only takes effect if it is invoked before the first connection. Attempting to set the locale after connecting will not work
- Always Encrypted requires [MS ODBC Driver 17+](https://docs.microsoft.com/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server)
- Only Windows Certificate Store and Azure Key Vault are supported. Custom Keystores are not yet supported
- Issue [#716](https://github.com/Microsoft/msphpsql/issues/716) - With Always Encrypted enabled, named parameters in subqueries are not supported
- Issue [#1050](https://github.com/microsoft/msphpsql/issues/1050) - With Always Encrypted enabled, insertion requires the column list for any tables with identity columns
- [Always Encrypted limitations](https://docs.microsoft.com/sql/connect/php/using-always-encrypted-php-drivers#limitations-of-the-php-drivers-when-using-always-encrypted)
[Known Issues]
- This preview release requires ODBC Driver 17.4.2 or above. Otherwise, a warning about failing to set an attribute may be suppressed when using an older ODBC driver.
- Connection pooling on Linux or macOS is not recommended with [unixODBC](http://www.unixodbc.org/) < 2.3.7
- When pooling is enabled in Linux or macOS
- unixODBC <= 2.3.4 (Linux and macOS) might not return proper diagnostic information, such as error messages, warnings and informative messages
- due to this unixODBC bug, fetch large data (such as xml, binary) as streams as a workaround. See the examples [here](https://github.com/Microsoft/msphpsql/wiki/Features#pooling)
datadog_trace 0.64.1
**WARNING**: Users doing manual instrumentation using the `GlobalTracer::get()->startActiveSpan()` api should update to this version from 0.63.0 and 0.64.0.
Google has a way of creating a wave of panic among both web designers and website owners. When they make a change to their search algorithm, people start scrambling to catch up. It’s easy to understand why. No one wants their SEO rankings to suffer.
So, when the Core Web Vitals metrics were announced, the response was pretty predictable. As these changes are based on site performance, our attention has turned to ensuring load times are lightning-fast.
But it’s not always simple. Websites that run a content management system (CMS) such as WordPress can be especially challenging. There are a lot of factors at play. Therefore, improving performance requires a multi-pronged approach.
Where to start? Check out our guide to boosting the Core Web Vitals score of your WordPress website.
Implement Caching
One of the simplest ways to increase the speed of a WordPress website is to implement caching. In many cases, a previously sluggish site will become significantly faster with this single step. This holds true even on relatively cheap hosting.
By default, WordPress pages and posts must retrieve content and settings from the site’s database. This takes time. Cache, on the other hand, will serve up content as static HTML files – cutting out the need for a database call. With the middleman (i.e., database) out of the way, snappier load times will follow.
Some hosting packages, particularly managed WordPress hosting, will include server-based cache. This is often the best option, as it requires very little from web designers and performs quite well. It may need to be cleared out every so often. Otherwise, it’s a hands-off experience. And it can be effectively combined with a plugin to further enhance speed.
Even if your host doesn’t provide caching on the server level, you can still optimize performance via a plugin. Caching plugins vary in scope, complexity and pricing. But they do provide tangible results when it comes to improving load times. That, in turn, is a positive boost for Core Web Vitals as well.
Defer Loading of Render Blocking Scripts and Styles
When testing your website’s performance in Google PageSpeed Insights, the subject of render-blocking resources seems to come up a lot. These are the scripts and styles that aren’t considered “critical” – meaning they’re not required to render the “above-the-fold” page content.
These resources can get in the way of faster load times. Specifically, they impact the “Largest Contentful Paint (LCP)” score in Core Web Vitals. This is the time it takes for the main content area of a page to load. Reducing LCP is, well, vital.
One way to improve the situation is to delay (or defer) when various content elements (images, videos, block-level text) load. This ensures that only the needed scripts and styles load first, while everything else comes in afterward.
Along with minification, many WordPress caching/optimization plugins also happen to include this type of functionality. It can take a bit of experimentation, however, as deferring the wrong resource can be problematic.
Be sure to test out any changes you’ve made and check the browser console for errors. Once you find the right configuration, the number of render-blocking resources on your page should be significantly reduced.
Optimize Images
The widespread use of large hero images and complex sliders only adds to the challenge of performance optimization. These assets may look nice, but can easily add up to megabytes worth of data. That’s not going to get you a passing grade for Core Web Vitals – particularly on mobile.
Thankfully, there are a couple of ways to lighten the load. First and foremost, get rid of any images you deem unnecessary. The removal of even one large image can make a difference.
The rest of your images can be optimized. This will reduce their file size and lessen the impact they have on load time.
How you go about image optimization is up to you. You could download a copy of your worst offenders and compress them using your favorite image editor, then upload them back onto your website. Or, you can automate the process with a helpful WordPress media plugin.
Responsive Images
For mobile users, WordPress includes the ability to serve up responsive images via srcset. In fact, it will automatically do the dirty work for you on images placed within your content. This is incredibly valuable, as it prevents massive desktop-sized media from slowing down the mobile user experience. For images outside of the main content area, you may need to do some custom work to implement this feature.
Modern Image Formats
It’s also worth looking at the file formats you’re using. For example, Google’s WebP format can often reduce file size while maintaining image quality. Note that some newfangled formats aren’t supported in legacy browsers (ahem, IE), so fallback versions may be necessary. Plugins can help with that as well.
Lazy Load All the Things
Lazy load functionality only loads items once they are in the browser’s viewport. By delaying the loading of images, iframes, and other third-party content (such as social media widgets), you can focus resources on the elements users will see first.
WordPress already implements native, browser-based lazy loading to images. When you add an image to a page or post, the loading="lazy" attribute is placed within the <img> tag. That is, provided the image includes height and width attributes.
This is great – but what about other elements, such as videos or iframes? These items can also weigh down a page when loaded right from the get-go.
Iframes are now lazy-loaded by default – so no worries there. Some more complex elements may require custom code or a plugin to implement this functionality.
Clear Out the Clutter
Over time, even a well-maintained WordPress site can become cluttered. A clogged database, unused plugins that are still active, a bloated theme with features you’re not using – it happens. And it can also drag down your Core Web Vitals.
That’s why it’s important to tidy up now and again. Your site’s database can be optimized manually or set to do so regularly. Unused plugins can be deactivated and trashed. Themes can be made leaner or replaced with something better.
Study up on what’s slowing down your website, find the culprits and deal with them. You might be surprised at how much of a difference this can make.
Improve Your Website’s Core Web Vitals
Core Web Vitals complicates the already tricky process of optimizing WordPress website performance. Even a website that scores well in other performance metrics may still fall short in this area. This shines through in mobile testing most of all.
The good news is that there are plenty of little things designers can do to catch up. Implementing cache sets a great foundation and provides an immediate boost. From there, it’s a matter of reducing file sizes and loading up styles and scripts in order of importance.
Taking things even further, it also makes sense to adjust your site’s CSS with Core Web Vitals in mind. This can help with the dreaded Cumulative Layout Shift (CLS) score and cut down on bloat.
In general, the things that are good for performance are also good for Core Web Vitals. Scores can improve rather quickly. Just know that it’s going to take some trial-and-error to sort out some of those individual shortcomings.
The overarching goal is to ensure that only the essentials are loaded when a user visits your website. Doing so will make both visitors and Google quite happy.