个性化阅读
专注于IT技术分析

如何更改归档标题以使用分类标签的复数形式而不是单数形式

我有一个简单的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>
赞(0) 打赏
未经允许不得转载:srcmini » 如何更改归档标题以使用分类标签的复数形式而不是单数形式
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

微信扫一扫打赏