Как получить категорию продуктов WooCommerce по ID?

Категории продуктов WooCommerce – это обычная таксономия, называемая product_cat . В функции, которую я пишу, я использую get_categories с параметром taxonomy установленным в product_cat . Все работает нормально, и я могу получить термин id, имя и даже слизню. Я не могу понять, как получить ссылку для отображения. Очевидно, get_category_link не работает с пользовательской таксономией, и get_term_link не работает, я получаю сообщение об ошибке. Вот что я имею:

 $prod_cat_args = array( 'taxonomy' => 'product_cat', //woocommerce 'orderby' => 'name', 'empty' => 0 ); $woo_categories = get_categories( $prod_cat_args ); foreach ( $woo_categories as $woo_cat ) { $woo_cat_id = $woo_cat->term_id; //category ID $woo_cat_name = $woo_cat->name; //category name $return .= '<a href="' . get_category_link( $woo_cat_id ) . '">' . $woo_cat_name . '</a>'; }//end of $woo_categories foreach 

Предложения?

Еще одно обновление (сентябрь 2015 г.):

Я могу использовать get_term_link конце концов. Проблема заключалась в том, что строка должна быть преобразована в целое. Использовал наконечник переполнения стека для самого быстрого способа его преобразования с использованием значения (int) $ в PHP.

Таким образом, это будет выглядеть так, если вы не хотите использовать slug в цикле foreach:

 $woo_cat_id_int = (int)$woo_cat_id; //convert 

Это преобразованное значение используется вместо slug в get_term_link . Надеюсь, это поможет кому-то. 🙂


Похоже, я понял это.

Я использовал get_term_link . И я получаю сообщение об ошибке, потому что я использовал его так:

 get_term_link( $woo_cat_id, 'product_cat' ); 

Который дал мне эту ошибку:

Объект класса WP_Error не может быть преобразован в строку

Поэтому я пошел по этому пути с помощью slug и это сработало:

 $prod_cat_args = array( 'taxonomy' => 'product_cat', //woocommerce 'orderby' => 'name', 'empty' => 0 ); $woo_categories = get_categories( $prod_cat_args ); foreach ( $woo_categories as $woo_cat ) { $woo_cat_id = $woo_cat->term_id; //category ID $woo_cat_name = $woo_cat->name; //category name $woo_cat_slug = $woo_cat->slug; //category slug $return .= '<a href="' . get_term_link( $woo_cat_slug, 'product_cat' ) . '">' . $woo_cat_name . '</a>'; }//end of $woo_categories foreach 

Спасибо, я использую

 foreach ( $terms as $term ) { $term_link = get_term_link( $term ); echo '<li><a href="' . esc_url( $term_link ) . '">' . $term->name . '</a></li>'; } 

Он работает отлично.

 $prod_cat_args = array( 'taxonomy' => 'product_cat', //woocommerce 'orderby' => 'name', 'empty' => 0 ); $terms = get_categories( $prod_cat_args ); //$term_id=6; foreach ( $terms as $term ) { $term_link = get_term_link( $term ); echo '<li><a class="shopping-now" href="' . esc_url( $term_link ) . '">' . $term->name . '</a></li>'; } 

get_term_link() работает плавно, когда используется объект, возвращаемый get_categories() .