2017-11-20 6 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> 

과 브랜드를 나열하고 작동 내 제품 페이지에

$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>'; 

로해야

어떻게 URL을 다시 얻을 수 있습니다 :

이 내 코드?

+0

var_dump ($ tags); ? –

답변

1

product tag terms links 관련 코드의 주요 문제는이 라인 :

$url = get_tag_link($tag->term_id); 
그것은 get_term_link() 2 개 인자를 필요로 워드 프레스 기능, 용어 객체 (또는 용어 ID)로 교체해야

및 택 소노 미.

당신이 $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로 id를 변환했을 때.

참고 : 내가 WordPress를 4.9 버전으로 업데이트했을 때 일어난 일입니다. 그렇지 않으면 get_tag_link가 저와 잘 작동하고있었습니다. 다시 한 번 감사합니다.

관련 문제