web-dev-qa-db-ja.com

IDでWooCommerceの商品カテゴリのリンクを取得するにはどうすればいいですか?

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  

提案?

5
RachieVee

もう一つのアップデート(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  
12
RachieVee

ありがとう、私は使います

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

それは完璧に機能します。

1
william007
$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()によって返されたオブジェクトを使用するとき、スムーズに動作します。

0