Шаблон архива 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%/

оба отображают шаблон index.php темы WordPress. На самом деле это страница 404, но поскольку у нас нет 404.php, используется index.php.

Тип записи Showcases сделан переводимым в настройках WPML.

Знаете ли вы, почему это так и как это исправить?


person Aleksandar Jakovljevic    schedule 07.02.2014    source источник


Ответы (4)


Я нашел эту ветку поддержки, где говорится, что нужно изменить следующее строка (в вашем коде):

'has_archive' => 'case-studies',

to:

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

Может быть хорошей идеей обратиться в официальную поддержку, так как это коммерческое программное обеспечение, и документация отсутствует.

person Fleshgrinder    schedule 11.02.2014
comment
К сожалению, это не помогает. :( У тебя есть другие идеи? - person Aleksandar Jakovljevic; 12.02.2014
comment
Работает отлично! Убедитесь, что ваш параметр соответствует параметру в register_post_type — возможно, поэтому это не сработало для Александра. Это должны были быть «витрины», а не «кейсы». - person Chuck Le Butt; 04.08.2015

Я узнал, в чем была проблема.

Строка не была переведена в WPML -> Переводы строк

Когда я его перевел (кейсы -> де/кейсы), все заработало.

На самом деле, это работало во всех вариантах - как в моем исходном коде, так и в коде, предложенном в ответах.

person Aleksandar Jakovljevic    schedule 19.02.2014

Я думаю, что это сработает для вас, просто пропустив некоторые действия :)

'has_archive' => 'case-studies',

to

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

ТОГДА

Перейдите в «Настройки» > «Постоянные ссылки» и нажмите «Сохранить».

Дайте мне знать, если это работает отлично.

Ваше здоровье!

person Jeffrey Carandang    schedule 18.02.2014
comment
Как насчет взглянуть на эту тему: wpml.org/forums/topic/ и вместо этого используйте перезапись для слага. Позвольте мне знать, если это помогает ;) - person Jeffrey Carandang; 18.02.2014

ты пытался

'has_archive' => true

?

Должно работать как надо, если я правильно понял.

person Sebastian Schmid    schedule 18.02.2014
comment
Нет, не помогает. Должно быть что-то еще. - person Aleksandar Jakovljevic; 18.02.2014