2013-08-27 51 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的結果進入另一個。

下面是我使用的代碼:

<?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)); 
} 

你只需要循環在您的類別上,每個類別輸出一個鏈接。而已。

+0

哇,這是一個該死的罰款答案。然而,我對此有唯一的質疑,那就是如何在每個鏈接之間放置一個'/'而不是最後一個鏈接。有點像「舞蹈/時尚/音樂」? – UzumakiDev

+0

不是直接輸出,而是將每個鏈接放入一個數組中:'$ links [] = sprintf(...)',然後在循環之後使它們爆炸:'echo implode('/',$ links)'。 – deceze

+0

感謝您向我介紹htmlspecialchars我將在未來保持這一點:) – UzumakiDev

0

試試這個:

<?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>'; 
    } 
    } 

    } ?> 
+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

是的,我知道,只是想尊重你的代碼邏輯。 ^^ – 2013-08-27 11:50:30