我有一个简单的Wordpress博客, 分为两个类别:子句是” comment”和” press_release”。当我在任何一个类别的帖子的single.php页面上时, 它都应显示”评论”或”新闻稿”。当我使用任何一个类别的存档的archive.php时, 我都想将其命名为” Comments”或” Press Releases”。
我已经将此代码添加到functions.php中, 但是它只是使整个网站在浏览器中空白。
-更新代码-
从functions.php:
$labels = array(
'name' => _x( 'Kommentare', 'taxonomy general name'), 'singular_name' => _x( 'Kommentar', 'taxonomy singular name'), 'menu_name' => __( 'Kommentare')
);
$labels = array(
'name' => _x( 'Pressemitteilungen', 'taxonomy general name'), 'singular_name' => _x( 'Pressemitteilung', 'taxonomy singular name'), 'menu_name' => __( 'Pressemitteilungen')
);
add_filter( 'get_the_archive_title', function ( $title ) {
if( is_tax() ) {
$tax = get_taxonomy( get_queried_object()->taxonomy );
/* use the "name" label instead of "singular_name" to showl the plural version */
$title = sprintf( __( '%1$s: %2$s' ), $tax->labels->name, single_term_title( '', false ) );
}
return $title;
});
在诸如archive.php的索引(对于复数版本)上:
<?php if (have_posts()) : ?>
<?php $post = $posts[0]; ?>
<?php if (is_category()) { ?>
<h2><?php echo get_the_archive_title(); ?></h2>
<?php } elseif (is_author()) { ?>
<h2><?php _e('Veröffentlicht von %s'); ?></h2>
<?php } ?>
(但回显”类别:新闻”而不是”新闻”。)
在通常的代码块中的单个帖子页面(例如single.php)上:
<?php foreach((get_the_category()) as $category) { echo $category->cat_name; } ?>
-结束更新代码-
—最新更新的代码—
add_action( 'init', 'create_taxonomies', 0 );
function create_taxonomies() {
$labels = array(
'name' => _x( 'Pressemitteilungen', 'taxonomy general name'), 'singular_name' => _x( 'Pressemitteilung', 'taxonomy singular name'), 'menu_name' => __( 'Pressemitteilungen')
);
$args = array(
'hierarchical' => true, 'labels' => $labels, 'query_var' => true, 'rewrite' => array( 'slug' => 'pressemitteilung' )
);
register_taxonomy( 'pressemitteilung', array( 'post' ), $args );
$labels = array(
'name' => _x( 'Kommentare', 'taxonomy general name'), 'singular_name' => _x( 'Kommentar', 'taxonomy singular name'), 'menu_name' => __( 'Kommentare')
);
$args = array(
'hierarchical' => true, 'labels' => $labels, 'query_var' => true, 'rewrite' => array( 'slug' => 'kommentar' )
);
register_taxonomy( 'kommentar', array( 'post' ), $args );
}
add_filter( 'get_the_archive_title', function ( $title ) {
if( is_tax() ) {
$tax = get_taxonomy( get_queried_object()->taxonomy );
$title = sprintf( __( '%2$s' ), $tax->labels->name, single_term_title( '', false ) );
}
return $title;
});
—结束新更新的代码-
请注意, 我无法通过在’%s’之后添加字母’s’来对其进行”软修复”。我不能使用它, 因为我想在德语博客中使用它, 并且复数形式并不都一致(例如带有额外的)。
是语法错误还是我做错了?
#1
WP默认情况下对分类档案使用单个标签。
archive.php使用get_the_archive_title来显示标题, 该标题使用singular_name, 正如我们从get_the_archive_title的以下代码行中看到的那样, 该代码生成分类档案的标题:
$title = sprintf( __( '%1$s: %2$s' ), $tax->labels->singular_name, single_term_title( '', false ) );
幸运的是, 我们可以使用get_the_archive_title过滤器对此进行过滤。在我们的过滤器函数中, 我们需要1.检查归档文件是否用于分类法。2.如果是, 请从查询对象中获取分类法。3.以与get_the_archive_title函数相同的方式生成标题, 但使用”名称”而不是” singular_name”。
将此添加到你的functions.php中, 以更改分类档案名称:
add_filter( 'get_the_archive_title', function ( $title ) {
if( is_tax() ) {
$tax = get_taxonomy( get_queried_object()->taxonomy );
/* use the "name" label instead of "singular_name" to showl the plural version */
$title = sprintf( __( '%1$s: %2$s' ), $tax->labels->name, single_term_title( '', false ) );
}
return $title;
});
例子:
在你的问题中, 你对标签的定义如下:
$labels = array(
'name' => _x( 'Comments', 'taxonomy general name'), 'singular_name' => _x( 'Comment', 'taxonomy singular name'), 'menu_name' => __( 'Comments')
);
默认情况下, WP将在存档中使用单数名称, 即”注释”。上面的代码将其改为使用名称, 即”注释”。
将其更改为使用德语标签:
$labels = array(
'name' => _x( 'Kommentare', 'taxonomy general name'), 'singular_name' => _x( 'Kommentar', 'taxonomy singular name'), 'menu_name' => __( 'Kommentare')
);
现在, 上面的代码将使用设置为” Kommentare”的名称, 而不是来自singular_name的” Kommentar”。
更新:
以下是我添加到测试站点的完整代码, 它可以正常工作:
functions.php:
add_action( 'init', 'create_taxonomies', 0 );
function create_taxonomies() {
$labels = array(
'name' => _x( 'Pressemitteilungen', 'taxonomy general name'), 'singular_name' => _x( 'Pressemitteilung', 'taxonomy singular name'), 'menu_name' => __( 'Pressemitteilungen')
);
$args = array(
'hierarchical' => true, 'labels' => $labels, 'query_var' => true, 'rewrite' => array( 'slug' => 'press_release' )
);
register_taxonomy( 'press_release', array( 'post' ), $args );
}
add_filter( 'get_the_archive_title', function ( $title ) {
if( is_tax() ) {
$tax = get_taxonomy( get_queried_object()->taxonomy );
$title = sprintf( __( '%1$s: %2$s' ), $tax->labels->name, single_term_title( '', false ) );
}
return $title;
});
archive.php
<?php if ( have_posts() ) : ?>
<h1 class="page-title"><?php echo get_the_archive_title( ); ?></h1>
[...]
我已经在WP管理员的press_release分类法中设置了一个测试词testterm1, 在存档页面中为mysite.com/press_release/testterm1/创建了HTML
<h1 class="page-title">Pressemitteilungen: test term1</h1>
评论前必须登录!
注册