Видаліть "Категорію:", "Тег:", "Автор:" з the_archive_title


50

У архіві моєї теми є такий код:

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

Це дає мені назви на кшталт "Категорія: Росія", "Тег: Америка", "Автор: Джон".

Я хотів би видалити частину "Категорія:", "Тег:" та "Автор:" та просто відобразити імена категорії, тегів та авторів.

Хтось знає, як це досягти?

Дякую.

Відповіді:


80

Ви можете розширити 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
Це працює! Спасибі, Пітер! У випадку, якщо користувачі, які не потребують технологій, шукають таке саме рішення: Ви додаєте код Пітера до файлу function.php і все!
Нік

Зробіть це в дочірній темі, щоб зміни не загубилися після оновлення теми.
Юрген Пол

1
Це працює досить добре, але у ньому відсутні випадки для архівів та користувацьких таксономій.
JacobTheDev

Див Бен Gillbanks ' рішення для всіх архівів після типу і таксономії.
Дан Кнаус

25

Використовуйте функцію single_term_title()


У WP ви можете робити багато способів, але я завжди вибирав найпростіші рішення. Дякую Тимо
f055

1
Добре, що просто не працює для всіх архівів, які не є термінами. Тож на мій погляд не дуже вдале рішення.
GDY

9

Для назви CPT Без слова: "Архів":

Якщо ви створюєте шаблон власного архіву для CPT, і хочете вивести лише назву CPT без зайвих слів, таких як "Архів", замість цього використовуйте наступну функцію:

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>'; у таксономії-category.php поза публікою теми.


1

Я б використав фільтр і помістив його у файл function.php

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

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

0

Припустимо, що формат завжди: Prefix: Archive Nameми можемо просто знайти першу двокрапку, за якою пробіл, і лише після цього показувати вміст, використовуючи get_the_archive_title () з функціями substr () та strpos () PHP .

<?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
Хоча це правда, це було запропоновано раніше в інших відповідях.
Миколай

-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

Сорі, якщо я розбиваю ролі, я даю слово за це, але це просто ще одне рішення, яке не є шкідливим. Отже, ви сказали, що я зламаю власний сайт або не можу ділитися кодом з основних файлів?
Драган Ніколіч

Ну, це ваш веб-сайт, і ви можете редагувати все, що завгодно - навіть основні файли. Однак, Інтернет порушиться, якщо ви оновите Wordpress ...
Єнот
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.