Кажется, has_term
нужен идентификатор записи в третьем параметре.Он не принимает третий параметр автоматически в качестве идентификатора текущего сообщения.Вы должны вручную передать текущий идентификатор сообщения.По умолчанию значение null передается в третьем параметре в соответствии с документацией.
Проверьте это здесь, https://developer.wordpress.org/reference/functions/has_term/
Я протестировал следующий код в content-single-product.php, и он отлично работает.
<?php
$terms = ['sagar', 'tamang'];
if ( has_term( $terms, 'product_cat', get_the_ID() ) ) {
echo '<h1>Yes</h1>';
} else {
echo '<h1>No</h1>';
}
?>
Вы можете изменить свой код следующим образом.
<?php
if( has_term( array( 'mac', 'imac', 'macbook', 'imac-pro' ), 'product_cat', get_the_ID() ) ) {
echo '<a href="#">All Mac Accessories</a>';
}
?>