从the_archive_title中删除“ Category:”,“ Tag:”,“ Author:”


49

我的主题的archive.php中包含以下代码:

<?php the_archive_title( '<h1 class="page-title">', '</h1>' ); ?>

这给了我诸如“类别:俄罗斯”,“标签:美国”,“作者:约翰”之类的标题。

我想删除“类别:”,“标记:”和“作者:”部分,仅显示类别,标记和作者名称。

有谁知道如何做到这一点?

谢谢。

Answers:


78

您可以扩展我在此答案中提到的get_the_archive_title过滤器

add_filter( 'get_the_archive_title', function ($title) {    
    if ( is_category() ) {    
            $title = single_cat_title( '', false );    
        } elseif ( is_tag() ) {    
            $title = single_tag_title( '', false );    
        } elseif ( is_author() ) {    
            $title = '<span class="vcard">' . get_the_author() . '</span>' ;    
        } elseif ( is_tax() ) { //for custom post types
            $title = sprintf( __( '%1$s' ), single_term_title( '', false ) );
        }    
    return $title;    
});

2
这样可行!谢谢,彼得!如果不太熟练的技术人员正在寻找相同的解决方案:将Pieter的代码添加到functions.php文件中就可以了!
尼克

在子主题中执行此操作,以使您的更改不会在主题更新时丢失。
尔根·保罗

1
效果很好,但是缺少档案和自定义分类法的情况。
JacobTheDev '16

请参阅Ben Gillbanks 对所有职位类型档案和分类法的解决方案
Dan Knauss

25

使用功能 single_term_title()


您可以在WP中以多种方式执行操作,但是我总是选择最简单的解决方案。谢谢蒂莫。
f055

1
嗯,这对并非所有术语的档案都无效。因此,我认为这不是一个很好的解决方案。
GDY

9

对于没有文字的CPT标题:“存档”:

如果您要为CPT构建自定义存档模板,并且只想输出CPT的标题而没有多余的单词(例如“ Archive”),请使用以下功能:

echo post_type_archive_title( '', false );

来自developer.wordpress.org


5

我觉得这太过简化了,但这就是我所做的...

<h1><?php echo str_replace("Archives: ", "", get_the_archive_title()); ?></h1>

1
对于非英语网站来说,这是行不通的。
Maxwell sc

2

echo '<h1 class="page-title">' . single_cat_title( '', false ) . '</h1>'; 在taxonomy-category.php主题外部。


1

我将使用过滤器并将其放在文件functions.php中

add_filter( 'get_the_archive_title', 'replaceCategoryName'); 
   function replaceCategoryName ($title) {

   $title =  single_cat_title( '', false );
   return $title; 
}

0

假设格式始终为:Prefix: Archive Name,我们可以使用带有PHP的substr()strpos()函数的get_the_archive_title()来找到第一个冒号,后跟一个空格,然后才显示其内容。

<?php // Only show the portion of the string following the first ": "
  echo substr(get_the_archive_title(), strpos(get_the_archive_title(), ': ') + 2);
?>

-2

您可以使用以下内容仅包含标题而不添加前缀

single_cat_title();

2
虽然是正确的,但之前在其他答案中已经建议过这一点。
Nicolai

-4

目录: wp-includes

文件: general-template.php

查找功能:get_the_archive_title() 更改:

if ( is_category() ) {
        $title = sprintf( __( 'Category: %s' ), single_cat_title( '', false ) );
    } elseif ( is_tag() ) {
        $title = sprintf( __( 'Tag: %s' ), single_tag_title( '', false ) );
    } elseif ( is_author() ) {
        $title = sprintf( __( 'Autor: %s' ), '<span class="vcard">' . get_the_author() . '</span>' );
    }

至:

if ( is_category() ) {
        $title = sprintf( __( '%s' ), single_cat_title( '', false ) );
    } elseif ( is_tag() ) {
        $title = sprintf( __( '%s' ), single_tag_title( '', false ) );
    } elseif ( is_author() ) {
        $title = sprintf( __( '%s' ), '<span class="vcard">' . get_the_author() . '</span>' );
    }//if you want to remove or just change text if you need to

3
错误,您是否真的建议在这里破解内核?
cjbj

3
这是一个非常非常糟糕的主意。如果不创建单独的分支,则无法立即更新。
fuxia

很抱歉,如果我中断了角色,我会一言不发,但这只是另一个解决方案,没有恶意。因此,您说我入侵了自己的网站,还是无法共享核心文件中的代码?
Dragan Nikolic

好吧,这是您的网站,您可以编辑任何内容-甚至是核心文件。但是,如果您更新Wordpress ...,网络将会中断
。– Raccoon
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.