如何在打印术语列表的同时更改链接文本?

时间:2012-04-14 作者:Carson

我有一长串分类学术语,它们看起来都像城市ST-Zip,即:Phoenix-AZ-85043或San-Diego-CA-92037

如何打印术语列表,以便链接URL保持不变,但链接文本只是城市名称?ie:

<li><a href="http://mydomain/zip/phoenix-az-85043">Phoenix</a></li>
此外,许多城市都有多个邮政编码,但我不想多次显示城市名称。

2 个回复
SO网友:Rajeev Vyas
<?php 
    $terms = get_terms( $taxonomies, $args );
    $term_name_array = array();
    foreach($terms as $term){
        $term_name_explode = explode("-",$term->term_name);
            $myterm_name=\'\';
            for($i=0;$i<count($term_name_explode)-2;$i++){
               $myterm_name.=" ".$term_name_explode[$i];
            }
            $myterm_name = ltrim($myterm_name);
        if(in_array($myterm_name,$term_name_array))
            continue;
        $term_name_array[] = $myterm_name;
        ?>
            <li><a href="<?php echo get_term_link($term->term_id)?>"><?php echo $myterm_name;?></a></li>
        <?
    }
?>
SO网友:Carson

我不想回答我自己的问题,但在花了一整天的时间之后,我想我找到了一个更好的方法(或者至少是一个有效的方法)。我确信这是一种更干净的方法来进行pre\\u替换,而且我还没有解决重复术语的问题,所以我将保留这个问题,希望有人能提供更好的答案。

<?php

$terms = wp_get_post_terms($post->ID, \'zip-code\', array("fields" => "all"));
foreach ($terms as $term) {
    $name = $term->name;
    $name = str_replace("-", " ", $name);
    $name = preg_replace(\'/\\b[A-Z]{2}\\b /\', \'\', $name);
    $name = preg_replace("/[0-9]/", "", $name);
        echo \'<li><a href="\'.get_term_link($term->slug, \'zip-code\').\'" title="">\'.$name.\'</a></li>\';
}

?> 

结束

相关推荐

使用GET_TERMS筛选器从“管理类别”中排除类别

我正在使用get\\u terms上的过滤器(见下文)从“管理类别”列表中删除指定数量的命名类别。它工作得很好,但是,排除的类别仍然在“搜索类别”按钮下方显示的类别计数字段中计数。我可以从计数中减去这些类别吗?function admin_edit_tags() {add_filter( \'get_terms\', \'admin_trim_category_description\', 10, 2 );} function admin_trim_category_descriptio