You can change WooCommerce attribute order in three places. Set the term order inside a global attribute, the attribute order on each product, or use a small code filter. The first two need no code and take about five minutes, which is all most stores need.
I rebuilt this guide on a fresh test store in October 2026, running WordPress 7.1.3 and WooCommerce 11.2 with the Twenty Twenty-Five theme. Every screen below is from that store, and every result is what the product page showed after each change. One setting behaved in a way the WooCommerce docs never mention, and it explains why the order can seem stuck.
You get the steps for global terms and single products, plus a test of all four sort options. Then comes the fix for orders that will not save. You also get the product menu order setting and a tested code snippet for developers.
How to Change WooCommerce Attribute Order Step by Step
WooCommerce attribute order for global attributes is set under Products > Attributes in your WordPress admin. Choose Custom ordering as the default sort order, open Configure terms, and drag the terms into place. Each drag saves at once, and every product using that attribute follows the new order.

Global attributes are the ones you create once and reuse across products, such as Size or Color. Their values are called terms. The order of those terms decides the order of the dropdown on a variable product and the order in the Additional information tab.
Here are the steps on WooCommerce 11.2:
- Open the Attributes screen: Go to Products > Attributes. The table on the right lists each attribute with an Order by column and a Configure terms link.

- Edit the attribute: Hover over the attribute name, such as Size, and click Edit.
- Set the default sort order: Open the Default sort order dropdown and pick Custom ordering. Then click Update.

- Open the terms: Go back to Products > Attributes and click Configure terms next to the attribute.
- Drag the terms into place: Grab a row by the handle on the far right and drop it where it belongs. There is no Save button, because each drop saves on its own.

- Check the product page: Open a product that uses the attribute and read the dropdown.
In my test, the Size terms started as XL, S, L, M, because that is the order I created them in. I dragged S to the top and M under it.
The product page dropdown changed to S, M, L, XL on the next load. I did not need to clear any cache.
WooCommerce saved each position as term meta named order, with values 1 to 4. I checked the database after the drag to confirm it. That is useful if you ever need to set the order with code or move it between sites.
Tip: If the drag handles are missing, look at the table header. Sorting the terms list by Name hid all four handles in my test, and the same note sits in the WooCommerce taxonomy docs for categories.
The Four Default Sort Order Options Tested
The Default sort order setting has four options: Custom ordering, Name, Name (numeric) and Term ID. Each one gave a different dropdown order in my test on the same terms. Custom ordering is the only one you control by hand, and Name (numeric) is the right pick for sizes and volumes written as numbers.
The WooCommerce product taxonomy docs describe the options briefly. They say Name (numeric) is for terms that are numbers, such as shoe sizes. To see the real effect, I set each option in turn and read the dropdown on two products.
The first product used a Size attribute with letters. The second used a Mug Volume attribute with the terms 16 oz, 8 oz, 12 oz and 20 oz, created in that order.

Here is what each option did:
| Default sort order | Size terms | Mug volume terms |
|---|---|---|
| Custom ordering before any drag | L, M, S, XL | 12, 16, 20, 8 oz |
| Custom ordering after dragging | S, M, L, XL | not dragged |
| Name | L, M, S, XL | 12, 16, 20, 8 oz |
| Name (numeric) | XL, S, L, M | 8, 12, 16, 20 oz |
| Term ID | XL, S, L, M | 16, 8, 12, 20 oz |
Two results stand out. Custom ordering looks broken until you drag at least once because it falls back to alphabetical order. And plain Name sorts numbers as text. So 8 oz lands after 20 oz.
For numeric terms, Name (numeric) fixed the order without any dragging. For letter sizes like S, M and L, only Custom ordering gives the order shoppers expect.
Note: The Term ID option shows terms in the order they were created. It only helps when you added the terms in the right order from the start.
How to Change the Order of WooCommerce Product Attributes on One Product
To change the order of WooCommerce product attributes on one product, open the product and go to Product data > Attributes. Drag each attribute bar into place, click Save attributes and then click Update. This order controls the Additional information tab and only affects that one product.
Each product keeps its own list of attributes. On my test hoodie, the list was Size, Color and a custom attribute called Material. The Additional information tab showed them in that order.
Here is how I moved Material to the top:
- Open the product: Go to Products > All Products and edit the product.
- Open the Attributes tab: Scroll to Product data and click Attributes.
- Drag the attribute bar: Grab the Material bar and drop it above Size.
- Save: Click Save attributes. Then click Update.

After the update, the Additional information tab listed Material, Size, Color. The Size values inside it still read S, M, L, XL, because term order comes from the global setting.

One thing surprised me. On the product, I had picked the Size terms in the order XL, S, L, M.
That chip order made no difference on the front end. The dropdown still followed the global term order. So do not spend time reordering the chips.
How Attribute Order Works for Variable Products
On a variable product, the variation dropdown lists terms in the global attribute’s sort order. The order of attributes on the product sets which dropdown comes first. That matters on products with two or more variation attributes, such as size and color.
Say a hoodie has Color and Size as variation attributes, with Color listed first. The shopper sees the Color dropdown on top and Size under it. Drag Size above Color in the Attributes tab and the two dropdowns swap places.
So a store selling hoodies in four sizes changes the dropdown order in one place: the Size attribute’s terms. Every hoodie, shirt and jacket that uses Size picks up the change.
If you are still setting up variations, our guide to creating and controlling WooCommerce variable products covers the full setup. The WooCommerce variable product docs also explain how variations are built from attributes.
Shoppers who pick the wrong size often want to change it later. A plugin that lets them update variations in the cart saves them a trip back to the product page.
Is There a WooCommerce Hierarchy for Attributes?
There is no WooCommerce hierarchy for attributes. Attribute terms are flat. You cannot nest one size under another the way you nest categories. Product categories are the hierarchical taxonomy in WooCommerce and have parent and child categories. Attributes only have a flat sort order.
I confirmed it on the test store with the WordPress function is_taxonomy_hierarchical. It returned false for the Size attribute taxonomy and true for product categories.
The WooCommerce taxonomy docs describe categories as the taxonomy with a hierarchical structure. Attributes get a sort order and nothing more.
This trips up stores that sell clothing in kids and adult sizes. They want Kids with 4, 6 and 8 under it and Adult with S, M and L. Attributes cannot hold that shape. The cleaner setup is two attributes: Kids size and Adult size.
If you need a hierarchy such as Clothing > Hoodies > Zip hoodies, build it with categories. Keep attributes for the values a shopper picks, such as size, color or volume.
How to Change Product Order With the Menu Order Field
Product menu order is the WooCommerce version of the Page Attributes order in WordPress. Set it under Product data > Advanced in the Menu order field. Lower numbers show first in the shop when the default sorting is custom ordering. Products with the same number fall back to name order.
WordPress pages have an Order box under Page Attributes, which the WordPress page settings docs describe. Products do not show that box. The same value lives in the Menu order field instead.
Pages use the same Order number idea, and you can change the page order in WordPress with Quick Edit or a menu.
Here is how I moved one product to the front of the shop:
- Open the product: Edit the product in the WordPress admin.
- Open the Advanced tab: In Product data, click Advanced.
- Set the menu order: Type -1 in the Menu order field and click Update.

Before the change, the shop listed Ceramic Mug 1, Ceramic Mug 10 and Ceramic Mug 11 first. They were sorted by name because every product had menu order 0. After setting -1 on the hoodie, it moved to the first slot.

Menu order is handy for a featured product or a seasonal item you want at the front for a few weeks. Set it back to 0 afterwards and the product returns to its normal place.
The shop sorting setting must be the default custom ordering for this to work. On my test store, the woocommerce_default_catalog_orderby option was set to menu_order, which is the default.
Why Your Attribute Order Is Not Saving
Attribute order problems usually come from one of four causes. The sort order is not Custom ordering, the terms list is sorted by a column, or the product was never updated. The fourth is a page cache serving an old copy. Check all four in that order.
These are the checks I would run, with what each one looked like on the test store:
- Wrong sort order: Dragging terms does nothing visible when the attribute uses Name or Term ID. Edit the attribute and set Custom ordering first.
- Sorted table: Clicking the Name heading on the terms list hides the drag handles. Reload the page without the sort to get them back.
- Unsaved product: Product attribute order needs Save attributes and then Update. Leaving the screen early loses the change.
- Cached page: A page cache keeps showing the old dropdown. Clear it after the change and check in a private window.
If the order still looks wrong, test with a default theme such as Twenty Twenty-Five. If the order is right there, your theme or a swatch plugin is changing it.
Changing Attribute Order With Code
Developers can change the order of rows in the Additional information tab with the woocommerce_display_product_attributes filter. It receives the rows as an array. You can sort them however you like. I tested the snippet below on WooCommerce 11.2, and it sorted the rows alphabetically by label.
Add this to a small plugin or your child theme’s functions file, never to a parent theme:
add_filter( 'woocommerce_display_product_attributes', function ( $attributes ) {
uasort( $attributes, function ( $a, $b ) {
return strcasecmp( $a['label'], $b['label'] );
} );
return $attributes;
} );
The same pattern works for any rule you can write in PHP. You could push one attribute to the top by name, or move custom attributes after global ones. Keep the function short, because it runs on every product page load.
Before the snippet, the table read Material, Size, Color. With it, the table read Color, Material, Size. Removing the file brought the old order back at once.
The filter is listed in the WooCommerce code reference for the template functions file. It only changes the Additional information table. The variation dropdowns still follow the global term order.
If you plan bigger changes, such as your own sorting rules for a large catalog, it is often cleaner to package them. Our guide on how to create a WooCommerce plugin walks through that setup. For a custom build, our WooCommerce developers can take it on.
Conclusion
WooCommerce attribute order comes down to two settings and one filter. Set Custom ordering and drag the terms for global attributes. Then drag the attribute bars on each product. Use Name (numeric) for sizes written as numbers.
The test showed that Custom ordering falls back to alphabetical until you drag once. It also showed that the term chips on a product never change the dropdown.
Fix those two and most order problems go away. For more store tweaks, see our list of WooCommerce shortcodes. You can also browse the best WooCommerce points and rewards plugins if loyalty is next on your list.
Frequently Asked Questions (FAQs)
Q1. How do I change the order of attribute values in WooCommerce?
Go to Products > Attributes and set the attribute’s Default sort order to Custom ordering. Then click Configure terms and drag the values into place. Each drag saves on its own.
Q2. Why is my WooCommerce attribute order alphabetical?
The attribute uses Name sorting, or it uses Custom ordering with no drag yet. In my test, Custom ordering showed L, M, S, XL until I dragged a term. After one drag, it kept the order I set.
Q3. Can I set a different term order for each product?
No, term order is set once per global attribute and shared by every product. You can only change which attributes come first on each product. For a one-off order, use a custom attribute on that product instead.
Q4. Which sort order should I use for numbered sizes?
Use Name (numeric). In my test, it sorted 8, 12, 16 and 20 oz correctly with no dragging. Plain Name sorted them as text and put 8 oz last.
Q5. Does WooCommerce save attribute order instantly?
Term order saves the moment you drop a row, and there is no Save button. Product attribute order is different. It needs Save attributes and then Update, or the change is lost.
Q6. Does changing attribute order affect SEO?
Not directly. The order only changes how values display on the product page. A clear, logical order does help shoppers find their size faster, which matters more than any ranking effect.
