2017-11-20 34 views
1

私は自分のショップの商品のブランドとして商品タグを使用しています。私が見つけた次のコードは、私の "ブランド"ページのリストを作るためにうまくいきました(最近のwoocommerceとWPのアップデートまで)。それは、それぞれの特定のカテゴリの文字の下にすべてのブランドを一覧表示します。WooCommerceで商品タグのURLを取得

突然、URLは生成されません。それ以外のものは突然作成されます。私は本当に問題を見つけることができません。私はget_termsget_terms(array('taxonomy'=>'product_tag'))に変更しようとしましたが、どちらも機能しません。

これは私のコードです:私は

$tag_count = sizeof(get_the_terms($post->ID, 'product_tag')); 
?> 
<div class="single_productbrand"> 
    <?php echo $product->get_tags(', ', '<span class="brand_as">' . _n('', '', $tag_count, 'woocommerce') . ' ', '</span>'); ?> 
</div> 

でブランドをリストアップし、それが

がどのようにURLを取り戻すことができなければならないとして、それは働く私の製品ページ

$list = ''; 
$tags = get_terms('product_tag'); 
$groups = array(); 
if($tags && is_array($tags)) { 
    foreach($tags as $tag) { 
     $first_letter = strtoupper($tag->name[0]); 
     $groups[ $first_letter ][] = $tag; 
    } 
    if(!empty($groups)) { 
     foreach($groups as $letter => $tags) { 
      $list .= "\n\t" . '<div class="brand_category_container">'; 
      $list .= "\n\t" . '<h4 class="cateogry_letter">' . apply_filters('the_title', $letter) . '</h2>'; 
      $list .= "\n\t" . '<ul>'; 
      foreach($tags as $tag) { 
       $url = get_tag_link($tag->term_id); 
       $count = intval($tag->count); 
       $name = apply_filters('the_title', $tag->name); 
       $list .= "\n\t\t" . '<li><a class="category_links" href="' . $url . '">' . $name . '</a></li>'; 
       } 
      $list .= "\n\t" . '</ul></li>'; 
      $list .= "\n\t" . '</div>'; 
     } 
    } 
} else $list .= "\n\t" . '<p>Sorry, but no tags were found</p>'; 

+0

var_dump($ tags); ? –

答えて

1

product tag terms linksに関連したコード内の主な問題は、この行です:

$url = get_tag_link($tag->term_id); 

それは2つの引数、用語オブジェクト(または長期ID)が必要ですget_term_link() WordPressの機能を交換する必要があると分類法。それが動作する場合でも、あなたは$tags変数名を使用しているとして、あなたはより良い別の変数名を持っている必要があり

すでに今、商品のタグがカスタム分類'product_tag'あるかもしれませんが...あなたのコード内でも

、異なる値の2つの異なる部分に分かれています。

だからあなたの再訪と機能コードは次のようになります。

$taxonomy = 'product_tag'; 
$tags = get_terms($taxonomy); 
if($tags && is_array($tags)) { 
    foreach($tags as $tag) { 
     $first_letter = strtoupper($tag->name[0]); 
     $groups[ $first_letter ][] = $tag; 
    } 
    if(!empty($groups)) { 
     $list = ''; 
     foreach($groups as $letter => $letter_tags) { 
      $list .= "\n\t" . '<div class="brand_category_container">'; 
      $list .= "\n\t" . '<h4 class="cateogry_letter">' . apply_filters('the_title', $letter) . '</h2>'; 
      $list .= "\n\t" . '<ul>'; 
      foreach($letter_tags as $tag) { 
       $term_link = get_term_link($tag->term_id, $taxonomy); 
       $count = intval($tag->count); 
       $name = apply_filters('the_title', $tag->name); 
       $list .= "\n\t\t" . '<li><a class="category_links" href="' . $term_link . '">' . $name . '</a></li>'; 
      } 
      $list .= "\n\t" . '</ul></li>'; 
      $list .= "\n\t" . '</div>'; 
     } 
    } 
} 
else $list .= "\n\t" . '<p>Sorry, but no tags were found</p>'; 

// Output 
echo $list; 

今回URLが正しい道に正しい指している...その答えLoicTheAztecため

+0

get_term_link()と他のコードの改良を指摘してくれてありがとうございました。今のように動作します。 – Martin

0

おかげで、それは問題を解決する私を助けたが、私はintvalをintvalに変換しました。

注:WordPressを4.9バージョンに更新したときに、これが起こったことがあります。そうしないと、get_tag_linkがうまく動作していませんでした。 ありがとうございました

関連する問題