programing

WPML 및 커스텀 포스트 타입 아카이브 템플릿

goodsources 2023. 3. 12. 10:45
반응형

WPML 및 커스텀 포스트 타입 아카이브 템플릿

WPML 3.0.2-a를 WordPress 3.8.1과 함께 사용하고 있습니다.

커스텀 투고 타입은 다음과 같이 정의되어 있습니다.

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 );

커스텀 투고 타입의 아카이브와 싱글 투고 URL에 디폴트 언어를 표시하면 문제 없습니다.예를 들어 다음과 같습니다.

/case-studies/ 
/case-studies/%postname%/

완벽하게 작동하며 그들이 해야 할 것을 보여주고 있습니다.

그러나 다른 언어에서는 작동하지 않습니다.

/de/case-studies/ 
/de/case-studies/%postname%/

둘 다 WordPress 테마의 index.php 템플릿을 표시하고 있습니다.실제로는 404페이지인데 404.php가 없기 때문에 index.php가 사용되고 있습니다.

Showcase 투고 타입은 WPML 설정에서 번역 가능합니다.

왜, 어떻게 고쳐야 하는지 아세요?

지원 스레드를 찾았습니다.이 스레드에서는 다음 행(코드 내)을 변경해야 합니다.

'has_archive' => 'case-studies',

대상:

'has_archive' => icl_translate('wpml_custom', 'wpml_custom_showcases', 'case-studies'),

이것은 상용 소프트웨어이고 문서가 없기 때문에 공식 지원에 문의하는 것이 좋을지도 모릅니다.

나는 무엇이 문제인지 알아냈다.

문자열이 WPML -> String translations에서 변환되지 않았습니다.

번역(케이스 스터디 -> de/case-studies)을 해보니 효과가 있었습니다.

사실 모든 변종에서 작동했습니다. 원래 코드와 답변에 제시된 코드 둘 다입니다.

이것은 당신에게 도움이 될 것 같습니다만, 몇 가지 액션을 놓쳤을 뿐입니다. :)

'has_archive' => 'case-studies',

로.

'has_archive' => icl_translate('wpml_custom', 'wpml_custom_showcases', 'case-studies'),

그리고나서

[ Settings ]> [ Permalinks ]으로 이동하여 [Save]를 누릅니다.

이게 완벽하게 작동하는지 알려주세요.

건배!

해보셨습니까

'has_archive' => true

?

내가 제대로 이해했다면 원하는 대로 작동했을 것이다.

언급URL : https://stackoverflow.com/questions/21631882/wpml-and-custom-post-types-archive-template

반응형