WooCommerceの商品カテゴリはproduct_cat
と呼ばれるカスタム分類です。私が書いている関数では、taxonomy
パラメータをget_categories
に設定して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年9月):
I can 結局get_term_link
を使うことができます。問題は、文字列を整数に変換する必要があることでした。 PHPで(int)$値を使用して変換する最速の方法として、 Stack Overflow tip を使用しました。
そのため、foreachループでスラッグを使用したくない場合は、次のようになります。
$woo_cat_id_int = (int)$woo_cat_id; //convert
その変換値は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()
によって返されたオブジェクトを使用するとき、スムーズに動作します。