我在WordPress 3.8.1中使用WPML 3.0.2-a
我有一个像这样定义的自定义帖子类型:
function add_custom_posts(){
$args = array(
'labels' => array(
'name' => __( 'Showcases' ),
'singular_name' => __( 'Showcases' ),
'add_new_item' => __( 'Add New Showcase'),
'edit_item' => __( 'Edit Showcases' ),
'view_item' => __( 'View Showcase' ),
'search_items' => __( 'Search Showcases' ),
'not_found' => __( 'No Showcases found.' ),
'not_found_in_trash' => __( 'No Showcases found in Trash.' )
),
'public' => true,
'has_archive' => 'case-studies',
'menu_position' => 5,
'taxonomies' => array('post_tag'),
'supports' => array( 'title', 'thumbnail', 'editor', 'excerpt', 'page-attributes' ),
'rewrite' => array('slug' => 'case-studies', 'with_front' => false),
'capability_type' => 'post',
'hierarchical' => false,
);
register_post_type('showcases', $args);
}
add_action( 'init', 'add_custom_posts', 100 );
访问自定义帖子类型存档和默认语言的单个帖子网址可以正常工作。例如:
/case-studies/
/case-studies/%postname%/
正在完美地展示他们应该做的事情。
但是,它不适用于其他语言:
/de/case-studies/
/de/case-studies/%postname%/
都显示WordPress主题的 index.php 模板。它实际上是404页面,但由于我们没有404.php,因此使用了index.php。
展示帖子类型在WPML设置中可翻译。
你知道为什么会这样,以及如何解决它?
答案 0 :(得分:5)
我发现this support thread他们说应该更改以下行(在您的代码中):
'has_archive' => 'case-studies',
为:
'has_archive' => icl_translate('wpml_custom', 'wpml_custom_showcases', 'case-studies'),
最好向官方支持,因为它是商业软件,没有可用的文档。
答案 1 :(得分:2)
我发现了什么问题。
该字符串未在WPML下翻译 - >字符串翻译
当我翻译它时(案例研究 - > de /案例研究)它起作用了。
实际上,它适用于所有变体 - 包括我的原始代码和答案中建议的代码。
答案 2 :(得分:1)
我认为这对你有用,只是错过了一些动作:)
'has_archive' => 'case-studies',
到
'has_archive' => icl_translate('wpml_custom', 'wpml_custom_showcases', 'case-studies'),
THEN
转到设置>永久链接并点击“保存”。
让我知道这是否完美。
干杯!
答案 3 :(得分:0)
你试过吗
'has_archive' => true
如果我理解正确,应该按照要求工作。