WooCommerce Blocks 8.6.0 Introduces Cross-Sells Products Block

WooCommerce Blocks 8.6.0 was released yesterday with support for a new block that displays cross-sells for products that are based on the current product in the customer’s cart. For example, if a customer is purchasing a new gardener’s kit, the store may cross-sell gardening gloves as a complementary product.

This is a new feature is only available to users in the cart, as the idea is to catch the customer at the moment of buying and encourage them to purchase additional products. These are not simply best-selling products but rather are carefully curated to be specific to the item in the cart.

Cross-sells will show up beneath the cart’s contents automatically after the store owner identifies them in the product’s “linked products” setting. At the moment, cross-sells are limited to two rows of three products.

Cross-sells show up near the bottom of the cart page before the customer clicks to checkout. This seems like it is squeezed into a crowded place as an afterthought. If you want to make the cross-sells more prominent or change where they appear on the page, it is possible but requires a few extra steps.

WooCommerce Blocks is like the Gutenberg plugin for WooCommerce – it’s a feature plugin that serves as a place to iterate and test new blocks, and get access to bleeding edge features. With this plugin installed, you can enable the block-based cart by deleting the cart shortcode on the cart page and adding the Cart block.

Cross-sells now appear in the block-based cart but it is locked in place and cannot be moved up or down on the page. If you want to customize this block further, you must uncheck the boxes that are disabling movement.

After testing the Cross-Sells block, I found that it is still very limited in how it can be customized. The current experience of this block seems more like a placeholder and it could definitely benefit from more customization options, such as background color options, width adjustment, and the ability to change how the individual products inside the box are displayed. Right now it only has one option to set the number of cross-sells products to display. I was able to move the block to the top of the cart page but could not do much more with it.

The WooCommerce team has requested feedback on the new block and will continue to iterate on it. Version 6.8.0 of WooCommerce Blocks also adds half a dozen fixes and improves compatibility with WooPay.

WooSesh Publishes Schedule Ahead of Virtual Event October 11-13, 2022

WooSesh, a virtual conference for WooCommerce professionals and store builders, has published the schedule for the upcoming three-day event beginning on October 11. This year’s lineup includes 24 speakers from across the WooCommerce ecosystem, including engineers, product managers, sales directors, and WooCommerce core developers.

Each day of the event has a theme with sessions running from 12PM – 4PM EST. WooCommerce CEO Paul Maiorana will deliver the keynote address on Day 1, and the subsequent presentations will feature topics focused around where WooCommerce is going and how to improve sales.

Day 2 will be dedicated to automation, personalization, and expanding WooCommerce. This will include topics like “Think like a Product Manager When Launching Your Store” and more technical sessions such as “The Journey to Enterprise Headless WooCommerce.” Attendees will learn how to maximize retention with customer-controlled subscriptions, how to clone or migrate a WooCommerce shop, and more.

Day 3 will shift focus to speed, security, integrations, and stability, featuring sessions on improving product variations, how to fix performance issues, and how to work with WooCommerce REST APIs. Each day will recap with the “Do the Woo” podcast, produced by Bob Dunn.

Registration is still open and it’s free to attend. The event will have topics spanning every aspect of working with WooCommerce – from store management to product development to marketing. Tickets include access to all presentations and workshops as they are being broadcast live, the WPSessions Slack for event Q&A, and virtual swag from sponsors.

How Policy-as-Code Helps Prevent Cloud Misconfigurations

Policy-as-code is helping prevent cloud misconfigurations through intelligent security policy automation. These misconfigurations occur any time there is an error in how infrastructure or apps are set up. They can significantly impact how an organization’s cloud resources and overall IT infrastructure operate, so it’s important to eliminate them. 

Many aspects of IT rules and conditions management can be automated with policy-as-code (PaC). By removing manual procedures from the equation, PaC makes cloud management and execution safer and simpler. 

Build Your Own Social Media Analytics with Apache Kafka

Apache Kafka is more than just a messaging broker. It has a rich ecosystem of different components. There are connectors for importing and exporting data, different stream processing libraries, schema registries, and a lot more. In this talk, Senior Principal Software Engineer at Red Hat Jakub Scholz shows how to use Kafka to read data from social networks such as Twitter, process them, and use machine learning to analyze them — with everything running on top of Kubernetes.

Jakub Scholz:

Java and Low Latency

I have lost count of the number of times I have been told that Java is not a suitable language in which to develop applications where performance is a major consideration. My first response is usually to ask for clarification on what is actually meant by “performance” as two of the most common measures - throughput and latency, sometimes conflict with each other, and approaches to optimise for one may have a detrimental effect on the other. 

Techniques exist for developing Java applications that match, or even exceed, the performance requirements of applications that have been built using languages more traditionally used for this purpose. However, even this may not be enough to get the best performance from a latency perspective. Java applications still have to rely on the Operating System to provide access to the underlying hardware. Typically latency-sensitive (often called “Real Time”) applications operate best when there is almost direct access to the underlying hardware, and the same applies to Java. In this article, we will introduce some approaches that can be taken when we want to have our applications utilise system resources most effectively. 

Obtain Nearest Address to a Longitude-latitude Point

In the mobile Internet era, people are increasingly using mobile apps for a variety of different purposes, such as buying products online, hailing taxis, and much more. When using such an app, a user usually needs to manually enter their address for package delivery or search for an appropriate pick-up and drop-off location when they hail a taxi, which can be inconvenient.

To improve user experience, many apps nowadays allow users to select a point on the map and then use the selected point as the location, for example, for package delivery or getting on or off a taxi. Each location has a longitude-latitude coordinate that pinpoints its position precisely on the map. However, longitude-latitude coordinates are simply a string of numbers and provide little information to the average user. It would therefore be useful if there was a tool which an app can use to convert longitude-latitude coordinates into human-readable addresses.

Realtime React Coding in ClojureScript

I love ClojureScript. The language, the look, and the feeling when I type the code to make my React components with it make me stay up all night. It actually did yesterday when I try to pick up on a friend set up and get back to a modern environment to do my coding.

Let’s walk through the first few steps to get to a setup with a React counter in ClojureScript, all this with live code reloading from VSCode.

Pagination With Spring Data Elasticsearch 4.4

Some time ago, I wrote the Introduction to Spring Data Elasticsearch 4.1 article. As I promised, I want to continue with a search feature. More specifically, the topic is its pagination part. Therefore, this article has these goals:

  1. Update my sat-elk project to use Spring Data Elasticsearch 4.4
  2. See several options to paginate results

Note: I recommend reading the previous article in order to understand the City domain which is used below. It's not needed from the technical point of view, but it can help to understand the presented examples more.

50 of the Best Topics for Bloggers You Can Write About This Year

topics for bloggersIf you’re thinking of starting a blog, you’re probably wondering which are the best topics for bloggers. Before you take the first steps, you should know that there are already 600 million+ blogs on the internet [1]. To stand out in this crowd, it’s necessary to pick a topic that’s unique, targets a niche audience and is in line with current trends.

An Introduction to Ansible Inventory

In this post, you will learn how to set up a basic Ansible Inventory. Besides that, you will learn how to encrypt sensitive information by means of Ansible Vault. Enjoy!

1. Introduction

In a previous post, you learned how to set up an Ansible test environment. In this post, you will start using the test environment. Just as a reminder, the environment consists of one Controller and two Target machines. The Controller and Target machines run in a VirtualBox VM. Development of the Ansible scripts is done with IntelliJ on the host machine. The files are synchronized from the host machine to the Controller by means of a script.

Using Dynamic Build Agents to Automate Scaling in Jenkins

One instance of Jenkins is fine if you’re running a small project with few developers. But you’ll find, as your team and product grow, that a single instance may not remain stable. When the number of commits increases, so do the processes Jenkins needs to run, and a lone instance’s performance can soon falter and slow your team down.

Thankfully, Jenkins is a scalable platform. Scalability means as your processing needs grow, Jenkins can grow with them.

Apache APISIX Loves Rust! (And Me, Too)

Apache APISIX is built upon the shoulders of two giants:

  • NGINX, a widespread open source reverse-proxy
  • OpenResty, a platform that allows scripting NGINX with the Lua programming language via LuaJIT

This approach allows APISIX to provide out-of-the-box Lua plugins that should fit most business requirements. But there always comes a time when generic plugins don't fit your requirements. In this case, you can write your own Lua plugin.

Ship/Show/Ask: A Branching Strategy for Modern Dev Teams With Rouan Wilsenach

The branching strategy has been reimagined. Meet the mind behind it.

In his first-ever podcast appearance, Rouan Wilsenach, author of "Ship/Show/Ask: A Modern Branching Strategy," joins Dev Interrupted to talk about his work as an author and the inspiration behind his musings on branching strategy. Rouan has been more than an inspiration, he’s changed the way our dev teams work - and he might just change yours, too. If you haven’t already read "Ship/Show/Ask," you should. It’s one of the most influential articles we’ve read in years.

Dev interrupted on DZone image

How to Disable the Download Button in SageMaker Studio

Many enterprises choose a cloud environment to power the work of their data science team. If you chose the AWS SageMaker Studio, this article might interest you. Having both the data lake and the data scientist environment makes it easy to integrate them. You can choose what data any given data scientist is able to see. You might want a data scientist only to be able to use this data inside the SageMaker Studio environment. However, SageMaker Studio has a download button that lets data scientists download any data they have been working on. Once they have downloaded data to their computers, they are free to share it anywhere and with anyone.

Luckily, it is possible to disable this download button. Recently, it was only possible to disable the download button in SageMaker Notebooks. This article from Ujjwal Bhardwaj shows how to disable it in SageMaker Notebooks.