-2

我正在尝试根据我拥有的类别数量创建一个 URL。我想要的预期输出是:

<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

3 回答 3

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

您只需要遍历您的类别,每个类别输出一个链接。而已。

于 2013-08-27T11:39:51.710 回答
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

于 2013-08-27T11:40:38.153 回答
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>';
     }
     }

   } ?> 
于 2013-08-27T11:37:53.090 回答