After adding
print_r($wp_query);
to my template and examining the results, I have discovered URL formats that work. I wrote, in my question, that the following format doesn’t work — in fact, it does – if you spell your custom taxonomy name correctly.
example.com/?ctxname=term1+term2
Pretty URLs with the ‘+’ and ‘,’ operators (indicating AND and OR respectively) are only recognized when not URL-encoded.
example.com/cptslugs/ctxslug/term1,term2/
produces the following WP_Tax_Query Object
[tax_query] => WP_Tax_Query Object
(
[queries] => Array
(
[0] => Array
(
[taxonomy] => announcements_cats
[terms] => Array
(
[0] => term1
[1] => term2
)
[include_children] => 1
[field] => slug
[operator] => IN
)
[1] => Array
(
[taxonomy] => category
[terms] => Array
(
[0] => 1
)
[include_children] =>
[field] => term_id
[operator] => NOT IN
)
)
[relation] => AND
)
While
example.com/cptslugs/ctxslug/term1+term2/
produces the following WP_Tax_Query Object
[tax_query] => WP_Tax_Query Object
(
[queries] => Array
(
[0] => Array
(
[taxonomy] => ctxname
[terms] => Array
(
[0] => term1
)
[include_children] => 1
[field] => slug
[operator] => IN
)
[1] => Array
(
[taxonomy] => ctxname
[terms] => Array
(
[0] => term2
)
[include_children] => 1
[field] => slug
[operator] => IN
)
[2] => Array
(
[taxonomy] => category
[terms] => Array
(
[0] => 1
)
[include_children] =>
[field] => term_id
[operator] => NOT IN
)
)
[relation] => AND
)
P.S.: According to this: the ‘+’ and the ‘,’ are ‘Reserved Characters’ and can be used in the path, parameters and fragment of a URI, but may not appear in other parts of a URI. I guess it’s OK after all. Just seems ‘wrong’ somehow, though.