Wie kann ich the_archive_title () anpassen?
-
-
Veröffentlichen Sie Ihre Lösung als separate Antwort.Du kannstmeine auchnicht akzeptieren und deineeigenen akzeptieren,wenn du willst :-)Post your solution as a separate answer. You can also unaccept mine and accept your own if you wish :-)
- 0
- 2015-01-27
- Pieter Goosen
-
Hoppla,ich dachte,ich hätte diese Bearbeitunggelöscht.Ihre Methode warbesser,also wollteichmeine löschen.Ich werde dasjetzttun.Oops, I thought I deleted this edit. Your method ended up being better, so I meant to delete mine. I'll do that now.
- 0
- 2015-01-27
- fildred13
-
6 Antworten
- Stimmen
-
- 2015-01-25
Wenn Sie sich den Quellcode von
get_the_archive_title()
ansehen,sind Siewird sehen,dassein Filternamensget_the_archive_title
bereitgestellt wird,durch den Sie die Ausgabe der Funktionfiltern können.Sie können Folgendes verwenden,um die Ausgabe aufeiner Kategorieseite zu ändern
add_filter( 'get_the_archive_title', function ( $title ) { if( is_category() ) { $title = single_cat_title( '', false ); } return $title; });
If you look at the source code of
get_the_archive_title()
, you will see that there is a filter supplied, calledget_the_archive_title
, through which you can filter the output from the function.You can use the following to change the output on a category page
add_filter( 'get_the_archive_title', function ( $title ) { if( is_category() ) { $title = single_cat_title( '', false ); } return $title; });
-
Diesfunktioniertnicht aufeiner Archivseitemit dem Titel "Archiv: Bücher" (wobei "Bücher"ein benutzerdefinierter Beitragstypist).Die Funktion `single_cat_title ()`gibt nur danneinen Seitentitel zurück,wenn der Typeine * Kategorie * oderein * Tag *ist.Können Sie Ihre Antwort dahingehend ändern,dass sieeine Lösungenthält,diemit allen Inhaltstypenfunktioniert?This doesn't work on an archive page with a title of `Archive: Books` (where `Books` is a custom post type). The `single_cat_title()` function only returns a page title if the type is a *category* or *tag*. Can you amend your answer to include a solution that works with all content types?
- 6
- 2015-09-25
- Quinn Comendant
-
@QuinnComendant Schauen Sie sich den Quellcodein den Zeilen 1239 und 1240 an :-).Wenn Sieein Problem haben,stellen Sieeinfacheine neue Frage,diefür Ihre Frage spezifischist@QuinnComendant Look at the source code, lines 1239 and 1240 :-). If you have an issue, simply ask a new question specific to your question
- 0
- 2015-09-25
- Pieter Goosen
-
Richtig,manmussfürjede Taxonomie oderjeden Beitragstyp,für den sie unterschiedliche Titel wünschen,einen alternativen Titel zurückgeben.Ich habeeine Antwortgepostet,die Präfixe von allen Typen ausschließt.Right, one must return an alternate title for each taxonomy or post type they want different titles for. I've posted an answer that excludes prefixes from all types.
- 1
- 2015-09-27
- Quinn Comendant
-
- 2015-09-27
Die akzeptierte Antwortentfernt das Präfix
Category:
aus den Titeln des Kategoriearchivs,jedochnicht aus anderen Taxonomien oder Beitragstypen. Um andere Präfixe auszuschließen,gibt es zwei Möglichkeiten:-
Erstellen Sie den Titelfür alle Variantenneu,diein der ursprünglichen Funktion
get_the_archive_title()
verwendet wurden:// Return an alternate title, without prefix, for every type used in the 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_year() ) { $title = get_the_date( _x( 'Y', 'yearly archives date format' ) ); } elseif ( is_month() ) { $title = get_the_date( _x( 'F Y', 'monthly archives date format' ) ); } elseif ( is_day() ) { $title = get_the_date( _x( 'F j, Y', 'daily archives date format' ) ); } elseif ( is_tax( 'post_format' ) ) { if ( is_tax( 'post_format', 'post-format-aside' ) ) { $title = _x( 'Asides', 'post format archive title' ); } elseif ( is_tax( 'post_format', 'post-format-gallery' ) ) { $title = _x( 'Galleries', 'post format archive title' ); } elseif ( is_tax( 'post_format', 'post-format-image' ) ) { $title = _x( 'Images', 'post format archive title' ); } elseif ( is_tax( 'post_format', 'post-format-video' ) ) { $title = _x( 'Videos', 'post format archive title' ); } elseif ( is_tax( 'post_format', 'post-format-quote' ) ) { $title = _x( 'Quotes', 'post format archive title' ); } elseif ( is_tax( 'post_format', 'post-format-link' ) ) { $title = _x( 'Links', 'post format archive title' ); } elseif ( is_tax( 'post_format', 'post-format-status' ) ) { $title = _x( 'Statuses', 'post format archive title' ); } elseif ( is_tax( 'post_format', 'post-format-audio' ) ) { $title = _x( 'Audio', 'post format archive title' ); } elseif ( is_tax( 'post_format', 'post-format-chat' ) ) { $title = _x( 'Chats', 'post format archive title' ); } } elseif ( is_post_type_archive() ) { $title = post_type_archive_title( '', false ); } elseif ( is_tax() ) { $title = single_term_title( '', false ); } else { $title = __( 'Archives' ); } return $title; });
-
Oderentfernen Sieeinfach alles,was wieein Titelpräfix aussieht (wodurchtatsächliche Titelgeändert werden können,dieein Wortgefolgt vom Doppelpunktenthalten):
// Simply remove anything that looks like an archive title prefix ("Archive:", "Foo:", "Bar:"). add_filter('get_the_archive_title', function ($title) { return preg_replace('/^\w+: /', '', $title); });
The accepted answer works to remove the
Category:
prefix from category archive titles, but not other taxonomy or post types. To exclude other prefixes, there are two options:Rebuild the title for all the variants used in the original
get_the_archive_title()
function:// Return an alternate title, without prefix, for every type used in the 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_year() ) { $title = get_the_date( _x( 'Y', 'yearly archives date format' ) ); } elseif ( is_month() ) { $title = get_the_date( _x( 'F Y', 'monthly archives date format' ) ); } elseif ( is_day() ) { $title = get_the_date( _x( 'F j, Y', 'daily archives date format' ) ); } elseif ( is_tax( 'post_format' ) ) { if ( is_tax( 'post_format', 'post-format-aside' ) ) { $title = _x( 'Asides', 'post format archive title' ); } elseif ( is_tax( 'post_format', 'post-format-gallery' ) ) { $title = _x( 'Galleries', 'post format archive title' ); } elseif ( is_tax( 'post_format', 'post-format-image' ) ) { $title = _x( 'Images', 'post format archive title' ); } elseif ( is_tax( 'post_format', 'post-format-video' ) ) { $title = _x( 'Videos', 'post format archive title' ); } elseif ( is_tax( 'post_format', 'post-format-quote' ) ) { $title = _x( 'Quotes', 'post format archive title' ); } elseif ( is_tax( 'post_format', 'post-format-link' ) ) { $title = _x( 'Links', 'post format archive title' ); } elseif ( is_tax( 'post_format', 'post-format-status' ) ) { $title = _x( 'Statuses', 'post format archive title' ); } elseif ( is_tax( 'post_format', 'post-format-audio' ) ) { $title = _x( 'Audio', 'post format archive title' ); } elseif ( is_tax( 'post_format', 'post-format-chat' ) ) { $title = _x( 'Chats', 'post format archive title' ); } } elseif ( is_post_type_archive() ) { $title = post_type_archive_title( '', false ); } elseif ( is_tax() ) { $title = single_term_title( '', false ); } else { $title = __( 'Archives' ); } return $title; });
Or, simply strip anything that looks like a title prefix (which may alter actual titles which contain a word followed by the colon character):
// Simply remove anything that looks like an archive title prefix ("Archive:", "Foo:", "Bar:"). add_filter('get_the_archive_title', function ($title) { return preg_replace('/^\w+: /', '', $title); });
-
Für Titelmit Leerzeichen wie "Link-Typ:tv"muss der reguläre Ausdruck "/^ (\ w| \ s) +:/" seinFor titles containing spaces like `link type: tv` the regex must be `/^(\w|\s)+: /`
- 0
- 2020-04-19
- aitor
-
-
Diesfunktioniertnicht aufeiner Archivseitemit dem Titel "Archiv: Bücher" (wobei "Bücher"ein benutzerdefinierter Beitragstypist).This doesn't work on an archive page with a title of Archive: Books (where Books is a custom post type).
- 0
- 2017-04-26
- That Brazilian Guy
-
@ThatBrazilianGuy [`single_cat_title`] (https://developer.wordpress.org/reference/functions/single_cat_title/) verwendetintern` single_term_title`,was auchfür Taxonomienfunktioniert.Stellen Sie sicher,dassfür Ihr Thema keine derfolgenden Vorlagen definiertist: "taxonomy-book.php" oder "taxonomy.php",da sie Vorrang vor "archive.php" haben.Erwägen Sie auch,eine der Methodenin den anderen Antworten zutesten.Diese Antwortist ziemlich alt,sie hat zum Zeitpunktmeiner Veröffentlichungeinwandfreifunktioniert,aberichentwicklenichtmehrfür WordPress.@ThatBrazilianGuy [`single_cat_title`](https://developer.wordpress.org/reference/functions/single_cat_title/) uses `single_term_title` internally, which works on taxonomies as well. Make sure your theme doesn't have one of the following templates defined: `taxonomy-book.php` or `taxonomy.php`, because they have precendence over `archive.php`. Also, consider testing any of the methods in the other answers. This answer is quite old, it was working fine at the time I posted it, but I'm not developing for WordPress anymore.
- 0
- 2017-04-26
- tao
-
-
- 2015-06-25
Eine weitere Optionist:
<?php echo str_replace('Brand: ','',get_the_archive_title()); ?>
Markeersetzen: durch den Text,den Sieentfernenmöchten.
Es lohnt sich,den Unterschied zwischenget_the_archive_title () undthe_archive_title () zu untersuchen. the_archive_title ()gibt ein Array zurück get_the_archive_title ()gibt eine Zeichenfolge
zurückAnother option is:
<?php echo str_replace('Brand: ','',get_the_archive_title()); ?>
Replace Brand: with whatever text you are wanting to get rid of.
Its worth looking into the difference between get_the_archive_title() and the_archive_title() the_archive_title() returns an array get_the_archive_title() returns a string
-
the_archive_title ()gibt den Titel wieder undget_the_archive_title ()nicht,daher sind sieim Grundegleich.Wenn Sie den Inhalt ändernmüssen,würden Sieget verwenden.the_archive_title() echoes the title and get_the_archive_title() does not, so they are basically the same. If you need to alter the content then you would use get.
- 1
- 2018-08-19
- Robert Went
-
- 2018-01-27
Ben Gillbanks hateine gute Lösung behandelt alle Beitragstypen und Taxonomien:
function hap_hide_the_archive_title( $title ) { // Skip if the site isn't LTR, this is visual, not functional. // Should try to work out an elegant solution that works for both directions. if ( is_rtl() ) { return $title; } // Split the title into parts so we can wrap them with spans. $title_parts = explode( ': ', $title, 2 ); // Glue it back together again. if ( ! empty( $title_parts[1] ) ) { $title = wp_kses( $title_parts[1], array( 'span' => array( 'class' => array(), ), ) ); $title = '<span class="screen-reader-text">' . esc_html( $title_parts[0] ) . ': </span>' . $title; } return $title; } add_filter( 'get_the_archive_title', 'hap_hide_the_archive_title' );
Ben Gillbanks has a nice solution that handles all post types and taxonomies:
function hap_hide_the_archive_title( $title ) { // Skip if the site isn't LTR, this is visual, not functional. // Should try to work out an elegant solution that works for both directions. if ( is_rtl() ) { return $title; } // Split the title into parts so we can wrap them with spans. $title_parts = explode( ': ', $title, 2 ); // Glue it back together again. if ( ! empty( $title_parts[1] ) ) { $title = wp_kses( $title_parts[1], array( 'span' => array( 'class' => array(), ), ) ); $title = '<span class="screen-reader-text">' . esc_html( $title_parts[0] ) . ': </span>' . $title; } return $title; } add_filter( 'get_the_archive_title', 'hap_hide_the_archive_title' );
-
- 2018-04-17
Sie können
post_type_archive_title()
verwenden,um den Titeleines Archivs ohne den Text "Archives:" abzurufen.You can use
post_type_archive_title()
to get the title of an archive without the "Archives:" text.
In der
archive.php
meines untergeordneten Themas habeich denfolgenden Code zum Anzeigen des Titelsmeiner Archivseiten:Aber das zeigtmeine Titel als "Kategorie: Kategorietitel " an,anstatteinfach als Titel ohne das vorangestellte "Kategorie:".
Meinerster Instinkt war,
get_the_archive_title()
vonwp-includes/general-template
zu überschreiben.Abernach dem,wasichgelesen habe,sollteich anscheinendnie das Kernmaterial von WordPress ändern,selbst wennein untergeordnetes Thema überschrieben wird.Wie kann die Ausgabe von
the_archive_title()
ambestengesteuert werden?