WPML让您可以使用唯一的URL用于不同语言的自定义内容。 这包括翻译帖子缩略名,以及自定义帖子类型的名称。

自定义帖子类型的URL包括帖子类型的名称和页面名称。 通常情况下,不同语言中的自定义帖子类型类似如下:

  • /houses/my-green-house/
  • /casas/mi-casa-verde/

URL的第一部分,粗体,是帖子类型。 第二部分是页面名称。

要翻译页面名称,单击文章编辑器中固定链接字段旁的编辑按钮。 因为WPML为每种语言使用不同的帖子,您可以单独设置它们的名称。

编辑页面固定链接
编辑页面固定链接

翻译自定义帖子类型的名称

要让WPML翻译自定义帖子类型名称,您需要使用字符串翻译模块。

在PHP中声明自定义帖子类型

如果您要通过PHP手动注册自定义帖子类型, WPML获取这些调用并注册缩略名用于翻译。

利用Types声明自定义帖子类型

要不使用PHP定义自定义帖子类型,您可以使用我们的Types插件。 Types会自动声明自定义帖子类型,这样就可以在WPML中翻译它们。

转到Types并编辑自定义帖子类型。 如果未为名称翻译启用,您会看到一个指向WPML设置屏幕的链接:

Types链接到WPML以设置缩略名本地化
Types链接到WPML以设置缩略名本地化

在WPML中启用自定义帖子类型名称本地化

接下来,转到 WPML -> 设置 页面。 您将看到本地化缩略名这个新部分。

用于启用自定义帖子类型名称本地化的核对表是:

1. 使得自定义帖子类型可以翻译

设置要翻译的自定义帖子类型
设置要翻译的自定义帖子类型

2. 启用网站缩略名翻译

启用自定义帖子和基于分类的缩略名
启用自定义帖子和基于分类的缩略名

3. 选择在不同的语言中使用不同的缩略名

点击复选框,允许本地化每个自定义帖子类型名称
点击复选框,允许本地化每个自定义帖子类型名称

现在,您已准备好翻译自定义帖子类型的名称。 输入他们的翻译,点击保存,翻译就应该出现在URL中。

翻译自定义帖子类型存档

当您手动注册自定义的帖子类型时,WordPress 允许您使用以下代码设置不同的存档缩略名:

有_存档

从3.2版开始,WPML允许 has_archive 设置为字符串。 但是,如果该字符串值被设置为不同 rewrite['slug'], 的值或CPT名称缩略名未设置, t存档缩略名将无法翻译。

代码示例1:

在这个代码示例中,我们设置 'has_archive' => true. 假设缩略名book已被翻译成西班牙文libro,存档链接如下:

  • 英语(默认语言): http://mydomain.tld/book/
  • 西班牙语(第二语言): http://mydomain.tld/es/libro/
add_action( 'init', 'create_post_type' );
function create_post_type() {
 register_post_type( 'book',
 array(
 'labels' => array(
 'name' => __( 'Books', 'textdomain' ),
 'singular_name' => __( 'Book', 'textdomain' )
 ),
 'public' => true,
 'has_archive' => true,
 'publicly_queryable' => true,
 'exclude_from_search' => false,
 'show_ui' => true,
 'show_in_menu' => true,
 'query_var' => true,
 'rewrite' => array('slug' => 'book'),
 'supports' => array('title','editor', 'custom-fields','thumbnail')
 )
 );
}

代码示例 2:

在这个代码示例中,我们为参数设置了一个特定的字符串 'has_archive' => 'my-books'. 现在存档链接如下:

  • 英语(默认语言): http://mydomain.tld/my-books/
  • 西班牙语(第二语言): http://mydomain.tld/es/my-books/
add_action( 'init', 'create_post_type' );
function create_post_type() {
 register_post_type( 'book',
 array(
 'labels' => array(
 'name' => __( 'Books', 'textdomain' ),
 'singular_name' => __( 'Book', 'textdomain' )
 ),
 'public' => true,
 'has_archive' => 'my-books', // Do not use the gettext functions for this parameter
 'publicly_queryable' => true,
 'exclude_from_search' => false,
 'show_ui' => true,
 'show_in_menu' => true,
 'query_var' => true,
 'rewrite' => array('slug' => 'book'),
 'supports' => array('title','editor', 'custom-fields','thumbnail')
 )
 );
}