获取带有连字符的类别URL,而不是空格

时间:2015-01-28 作者:lorenzium

所以,我用这个来获取URL:

<a href="/category/<?php foreach((get_the_category()) as $category) { echo $category->cat_name . \' \'; } ?>">
正在输出:

http://example.com/category/whatever%20category/
而不是:

http://example.com/category/whatever-category/
我怎样才能做到后者?

非常感谢。

3 个回复
SO网友:Shreyo Gi

试试这个

<a href="/category/<?php foreach((get_the_category()) as $category) { echo $category->slug . \' \'; } ?>">
希望这有帮助。

SO网友:Pieter Goosen

我认为这将更容易利用类别slug,而不是名称。如果有多个单词,它已经用小写和连字符分隔。

使用该名称并添加连字符的问题是,您将无法获得匹配项,很可能只有404。%20 是URL中空格的编码方式。

你可以直接替换$category->cat_name 具有$category->slug

出于兴趣,如果必须使用名称并用连字符替换空格,可以使用str_replace()

$hyphened_name = str_replace( \' \', \'-\', $category->cat_name );

SO网友:Privateer

更改此选项:echo$category->cat\\u name

到此:echo$category->cat\\u slug

更好的方法可能是使用:

$cat = get_the_category();
$cat_link = get_term_link( $cat );
那会有$cat_link 作为全permalink。

echo \'<a href="\' . $cat_link . \'">\' . $cat->cat_name . \'</a>\';
使用上述代码:

<a href="<?php
    $cat = get_the_category();
    echo get_term_link( $cat );
?>">
就我个人而言,我尽量避免把这样的东西混在一起,因为读起来会很痛苦,但以上内容应该会取代你现有的内容。

最好是

<?php
   $cat = get_the_category();
   $cat_link = get_term_link( $cat );

   echo <<<HTML
<a href="{$cat_link}">{$cat->cat_name}</a>
HTML;

?>
这也会取代你写的东西。

结束

相关推荐

GET_TERMS:确定分类术语是否有子项

我想确定一个分类术语是否有子项。请参见下面的标记,我将解释我的意思:<?php $terms = get_terms(\"wpsc_product_category\"); if ( !empty( $terms ) && !is_wp_error( $terms ) ){ foreach( get_terms( \'wpsc_product_category\', array( \'hide_empty\' => false, \'parent