2013-08-27 6 views
-2

내가 가진 범주 수를 기반으로 URL을 만들려고합니다. 내가 원하는 예상 출력은 다음과 같습니다 내가 갖는변수가있는 두 개의 foreach 문

<a href="http://lart.co.uk/?cat=13" title="Category Name">Dance</a> 
<a href="http://lart.co.uk/?cat=19" title="Category Name">Fashion</a> 

출력은 다음과 같습니다

<a href="http://lart.co.uk/?cat=13" title="Category Name"> 
<a href="http://lart.co.uk/?cat=19" title="Category Name"> 
Dance</a> Fashion</a> </a> 

그것은 내가 원하는 거의 무엇을,하지만 분명히 내가 꽤으로 해제 여전히입니다. 이 결과를 얻으려면 3 가지 foreach 문을 사용하고 있습니다. foreach를 중첩 시키려고했지만 작동하지 않았습니다. 문제는 한 foreach의 결과를 다른 foreach로 전달하는 것입니다. 여기

내가 사용하고 코드입니다 :해야 완벽하게 충분할 같은 훨씬 더 간단

<?php 
    $categories = get_the_category(); 
    $separator = ', '; 
    if($categories) { 
    foreach($categories as $category) { 
     $output .= $category->cat_name.$separator; 
     $cat_id[] = $category->cat_ID; 
    } 
    foreach($cat_id as $id) { 
     $category_link = get_category_link($id); ?> 
     <a href="<?php echo esc_url($category_link); ?>" title="Category Name"> 
     <?php   
    $strarr = explode(',',$output); 
    foreach($strarr as $string) { 
    echo $string .'</a>'; 
    } 
    } 

    } ?> 

답변

4

뭔가 :

$categories = get_the_category(); 
foreach ($categories as $category) { 
    printf('<a href="%s" title="Category Name">%s</a>', 
      htmlspecialchars(get_category_link($category->cat_ID)), 
      htmlspecialchars($category->cat_name)); 
} 

그냥 루프 필요

<?php 
     $categories = get_the_category(); 
     $separator = ', '; 
     if($categories) { 
     foreach($categories as $category) { 
      $output .= $category->cat_name.$separator; 
      $cat_id[] = $category->cat_ID; 
     } 
     foreach($cat_id as $id) { 
      $category_link = get_category_link($id); ?> 
      <a href="<?php echo esc_url($category_link); ?>" title="Category Name"> 
      <?php }  
     $strarr = explode(',',$output); 
     foreach($strarr as $string) { 
     echo $string .'</a>'; 
     } 

     } ?> 
+0

와우, 그건 망할 훌륭한 답변입니다. 내가 이것에 대해 가지고있는 유일한 단서는, 어떻게 각 링크 사이에 '/'를 놓을 까? 마지막 링크가 아닌가. "댄스/패션/음악"과 같은 종류입니까? – UzumakiDev

+0

직접 출력하는 대신 각 링크를 배열에 넣으십시오 :'$ links [] = sprintf (...)', 루프가 implode되면'echo implode ('/', $ links)'. – deceze

+0

나를 htmlspecialchars에 소개해 주셔서 감사합니다. 나는 이것을 나중에 명심해야합니다 :) – UzumakiDev

0

이 시도 카테고리별로 하나의 링크를 출력합니다. 아무것도 더. 당신은 자신을 복잡하게하는

+1

, 왜 그것은 잘못하고 어떻게 자신이 그것을 고칠 수 있었는지;) – dognose

+0

내가 제공 한 코드로 주목 한 것은 foreach를 중첩했다는 것입니다. 나는 이것을 시도했으나 효과가 없었으며 질문에 명시된 올바른 결과물을 제공하지 못했습니다. 노력을 가져 주셔서 감사합니다 :) – UzumakiDev

1

, 난 당신의 코드

<?php 
    $categories = get_the_category(); 
    $separator = ', '; 
    if($categories) { 
     foreach($categories as $category) { 
      $output .= $category->cat_name.$separator; 
      $cat_id[] = $category->cat_ID; 
     } 
     foreach($cat_id as $id) { 
      $category_link = get_category_link($id); 
      $cat_name = get_cat_name($id);?> 
      <a href="<?php echo esc_url($category_link); ?>" title="<?php echo $cat_name;?>"><?php echo $cat_name; ?></a> 
      <?php 
     } 
    } 
?> 

사본 수정 한 대신 카일이 무엇이 잘못되었는지를 설명하는 잘못된 코드가 유용 할 수 있습니다 "수정"의 http://codex.wordpress.org/Function_Reference/get_cat_name

+0

이 작품은, 내가 바보 같은 짓을한다는 것을 알았어. 이제 나는 선택의 여지가 없으며, 당신의 답은 내가 뭘 찾고있는 답과 닮았지만, 답 중 하나는 줄의 반에서 그 답을합니다. – UzumakiDev

+1

네, 코드 로직을 존중하고 싶었습니다. ^^ –