It may be helpful to show the long product description of a given product in a custom WordPress page or post, so that you can use it as a teaser or anyway as a way to save some time instead of rewriting the whole thing.
The solution is easy: let’s code a simple shortcode that accepts a product ID as a shortcode attribute, and that returns its long description, properly formatted.
You can see this in action on this same website. Here’s one of my downloadable products’ long description: https://www.businessbloomer.com/shop/plugins/woocommerce-disable-payments-by-category/#tab-description – and here’s the same exact description printed in a blog post, thanks to the shortcode snippet you find below: https://www.businessbloomer.com/woocommerce-disable-payment-method-for-specific-category/#mini-plugin-business-bloomer-woocommerce-toggle-payments-by-category
Continue reading WooCommerce: Product Description in a Shortcode!
If you access the WordPress dashboard and go to WooCommerce > Orders, you will be presented with the WooCommerce “Orders Table” i.e. the list of customer orders. Each row comes with several columns, such as the order number, order date, order status, order billing and shipping addresses and more.
What’s annoying sometimes is that the whole row is a clickable link, so if you need to copy and paste some information you will end up actually clicking on it, and being redirected to the single order page.
There is a way to add a specific “class” to each table row, so that it becomes not clickable, and the only link that remains is the very first column table cell – the order number (as it should be by default!).
So, let’s see how easy it is to alter this default behaviour. Enjoy!
Continue reading WooCommerce: Disable Orders Table Row Hyperlink @ Admin
We’ve already covered a little about address formats when we added a custom House Number field to the WooCommerce Checkout page.
Address formats define the way Billing and Shipping addresses are formatted for the end user. Addresses show on the order received / thank you page, on transactional emails and on some My Account pages, and look like this:
Now, what if you wanted to move the “company” before the customer name, or maybe have “address 1” and “address 2” on the same line, or move “postcode” to the last line? Well, thankfully there is a neat WooCommerce filter called “woocommerce_localisation_address_formats” that allows us to do just that – reformat any address for any country we wish. Enjoy!
Continue reading WooCommerce: Change Address Format For a Specific Country
By default, WooCommerce displays a “Buy Product” button label for external products. This button redirects to the external URL that is entered via the single product settings.
As usual, this “Buy Product” label may not suit all businesses, and therefore WooCommerce gives you the option to rename such buttons via the single product edit page settings. This is great, but at the same time you don’t want to manually edit hundreds of products when you can use a few lines of PHP, right?
So, here’s a super quick fix to override the “Buy Product” external add to cart button label to whatever you wish, without ever touching the manual settings. Enjoy!
Continue reading WooCommerce: Change “Buy Product” Label for External Products
You may be aware that the WooCommerce Checkout page “order review” section reloads/refreshes every time there is a change of address – in this way shipping, taxes and optional fees are properly recalculated and customers are returned with the correct total.
But in case you add custom checkout fields that may cause a difference in pricing, or you want to keep the checkout UX consistent, or you have some other kinds of logic, it may be useful to refresh the order review section after a change on any checkout field. Enjoy!
Continue reading WooCommerce: Refresh Checkout Upon Any Input Field Change
The Additional Information tab on the WooCommerce Single Product Page displays information about product dimensions, weight, and possible attribute terms.
There are hooks, thankfully, that can help us display additional content in there, either above or below the attributes table. Enjoy!
Continue reading WooCommerce: Add Content To Additional Information Tab @ Single Product Page
This is quite an uncommon WooCommerce requirement, but especially for downloadable products the Completed Order email is such as important one – and customers may end up asking you to resend them all their past order emails.
This is an interesting snippet, as it features important functionalities: getting orders by billing email, looping through the results and re-triggering the Completed Order email whenever a specific admin URL parameter is posted. Enjoy!
Continue reading WooCommerce: Bulk Re-Send All Customer’s Completed Order Emails
We’ve already seen how to edit the “Related Products” title and how to add a subheading below it; this time, we’ll do the exact same but for the upsells section, which shows on the Single Product Page once an admin manually defines some “linked products” in the product settings / upsells.
Once again, we’ll take a look at a snippet to edit the title (“You may also like…“), and another one to add some HTML content below it. Enjoy!
Continue reading WooCommerce: Upsells Custom Heading & Subheading @ Single Product Page
Maybe because you have only one product category and therefore search engines would find duplicate content (Shop page = Category page) and penalize your website.
Or maybe because you use advanced product filters and you prefer customers to see the filtered view “by category” (e.g. “example.com/shop/?_product_category=tables“) as opposed to the default category pages ( “example.com/product_category/tables” ).
Either way, it is possible to programmatically redirect all product category pages to a given page or to a relevant URL with parameters – and here’s the fix. Enjoy!
Continue reading WooCommerce: Redirect Product Category Pages
WooCommerce frontend messages and error notifications display on the Single Product page, Cart page, Checkout page, My Account page and may show on page load or upon a specific user action.
The potential problem is that – same as the WordPress backend – WooCommerce messages can use a lot of vertical space, hence can push useful content further down the page, and possibly disturb the navigation – especially on the Checkout page.
A cool workaround may be to place a dismiss “x” button on the WooCommerce notices, so that customers can quickly close them and gain back some space.
We will use a mix of PHP, JS and CSS in the snippet below in order to achieve our final goal. Enjoy!
Continue reading WooCommerce: Close Button @ WooCommerce Checkout Notices
Related products automatically show on the WooCommerce Single Product page. We’ve already seen some tutorials here on Business Bloomer regarding them, such as one for displaying a custom list of related products instead of the default one, which uses product categories and tags in common.
Today I want to cover the actual “Related products” title (H2) and also find a way to display an additional piece of content right below it (subheading). Enjoy!
Continue reading WooCommerce: Related Products Custom Heading & Subheading
By default, WooCommerce external products do not have and do not display any stock, as they are simple redirects to an external URL. This may be unfortunate, because before clicking on an external URL and send people away from your website, you may want to make sure the current item is in stock (so that you have more chances to convert the sale and earn a referral commission, if that’s your business model).
So, how do we “manage stock” for an external product, and display the stock status on the single product page, just before the “Buy Product” button?
Continue reading WooCommerce: Display Stock Status For External Products
Bad news first – we’ve seen how to add content to any WooCommerce order email, however I did not specify that if you use the [products] shortcode that’s not going to work unfortunately. The reason behind this, in plain English, is that… it just doesn’t work, and it outputs a weird list of “Sale!” list items (see screenshot below)!
So, I want to fix this, and find a WooCommerce email-compatible way to show a grid of products based on a list of product IDs (for example, the list of related products based on the ordered items), and make sure I can actually see product images, titles, prices and a link. Enjoy!
Continue reading WooCommerce: Display Product Grid @ Order Emails e.g. Related Products
When you deal with WooCommerce websites, you also need to look into design, readability, and accessibility. And if you have hundreds or thousands of products, you probably need to set some global rules so that you don’t need to worry about editing each product manually.
One rule could be the way product titles are displayed. Maybe you have a mix of capitalized product names (“Red Square Table”), non-capitalized ones (“White round chair”) and all caps ones (“GREEN COUCH”), and therefore you’re looking for a PHP shortcut to fix this automatically.
So, here’s a super simple solution to capitalize all product titles. Enjoy!
Continue reading WooCommerce: Capitalize All Product Names
There are times when the “long description” and the “short description” are not enough on the WooCommerce Single Product page. What if you need to add another HTML content section – say – at the very bottom of the page (and maybe, because of the longer page, add another add to cart button there as well)?
In this simple snippet, we will add another “WYSIWYG” text editor in the Edit Product page, and display the output at the bottom of the single product page. Enjoy!
Continue reading WooCommerce: Add a Third Description @ Single Product Page
In case you have very long single product pages, it may be helpful to show the Add to Cart form at the bottom of the page or even inside the description tab.
Thankfully this is pretty easy and only requires one line of code. The only thing that you may want to change is the hook name, which defines the position of the button, and the priority, which defines the relative position of the element in case there are other ones “hooked” onto the same hook.
In this example, we will place the button at the very bottom of the page, below tabs, upsells and related products. Enjoy!
Continue reading WooCommerce: Duplicate Add to Cart Button @ Single Product Page
Maybe because I’m Italian, but I like exclamation marks! Also, Italian gestures – of course. With that being said, today we look at an amazing WooCommerce customization.
I’ve finally gained back some free time to work on my personal projects, and one of these is an affiliate website. In order to drive traffic to this WooCommerce website, we have a major content strategy and we publish 7 relevant posts per month.
However, it’s difficult to drive blog readers to the shop page, so I came up with a great idea – why not adding a grid of relevant related products at the end of each blog post, based on the most used keywords?
The rationale behind this is quite easy:
- you have a list of product tags
- you have a blog post full of words
- you count and define the most mentioned product tag
- you show 10 products from that product tag
Cool, ha? Well, let’s take a look at my code, and feel free to use it on your install!
Continue reading WooCommerce: Show Related Products In a Blog Post!
WooCommerce order emails customization is possibly the most wanted feature for WooCommerce store owners and developers right now. It is very difficult to edit the default templates and it’s no surprise there are many email customizer plugins out there.
We’ve already seen how to add content to specific WooCommerce emails, how to add custom email CSS, how to display product images, and more, but today I’d like to teach you a quick workaround to edit the default email text strings such as the initial greeting (‘Hi Mary,‘) or other sentences (‘We have finished processing your order.‘, ‘The following note has been added to your order:‘, ‘Just to let you know — we’ve received your order, and it is now being processed:‘, etc.).
With “edit”, of course, I mean either change the text, or completely hide it. So, let’s see how it’s done. Enjoy!
Continue reading WooCommerce: Edit Text Content @ Order Emails
Products attributes display on the single product page whenever attribute terms are assigned to a given WooCommerce product. This is the default behaviour.
However, what if you want to show the product attribute table somewhere else? For example, in a blog post, or in a custom pricing table?
Well, we can build a shortcode for that – simply specify a product ID and the shortcode will magically output its attributes. Enjoy!
Continue reading WooCommerce: Products Attributes in a Shortcode
Yeah Google Analytics is cool, but have you ever coded your own tracking functions within your WooCommerce website?
An example may be counting the number of times customers click on the “Buy product” button that displays on the Single External Product Page, and show the counter in the Products Table in the backend.
For example, I use this to calculate the Click Through Rate (% clicks / views) and see how popular an external product is. Of course, you could also decide to extend the counter to all products (simple, variable, etc.) and count the number of times customers click on the Add to Cart, but for today let’s stick to the external products count. Enjoy!
Continue reading WooCommerce: Count External Product Clicks