In my archive-product_category.php I have this (relevant) code
Are you sure that’s the correct name? Because for a post type archive, it should be archive-al_product.php and for a taxonomy archive page, it would be taxonomy-product_category.php.
Anyway, (as I said in the comments) if you want to target the taxonomy archive page, you should use is_tax(), or if it’s the post type archive page, then you would use is_post_type_archive().
-
Note that the first (and only) parameter for
is_post_type_archive()is one or more post type names/slugs likeal_productin your case. So in your code/attempts, thatis_post_type_archive( 'product_category' )is actually not correct.. =) -
Also, your post type should have the
has_archiveargument set totrueor a slug likeal-products. That way, when you visit the archive atexample.com/?post_type=al_productorexample.com/al-products,is_post_type_archive()would return true.
So to correctly sort the posts (in the main WordPress query), you can try the following:
// In the rt_change_product_sort_order() function:
// Instead of using get_query_var(), you would use is_tax().
if ( is_tax( 'product_category' ) ) :
// ... your code.
endif;
// Or use is_post_type_archive() to target the CPT archive.
if ( is_post_type_archive( 'al_product' ) ) :
// ... your code.
endif;
// Or combine the conditional tags, if you want to:
if ( is_tax( 'product_category' ) || is_post_type_archive( 'al_product' ) ) :
// ... your code.
endif;