WPML和自定义帖子类型归档模板

时间:2014-02-07 15:41:19

标签: php wordpress custom-post-type wpml

我在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设置中可翻译。

你知道为什么会这样,以及如何解决它?

4 个答案:

答案 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

如果我理解正确,应该按照要求工作。