Подтвердить что ты не робот

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

Видимость типа post сделана переводимой в настройках WPML.

Вы знаете, почему это и как его исправить?

4b9b3361

Ответ 1

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

Строка не была переведена под WPML → String translations

Когда я перевел его (тематические исследования → de/case-studies), он сработал.

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

Ответ 2

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

'has_archive' => 'case-studies',

в

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

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

Ответ 3

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

'has_archive' => 'case-studies',

к

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

ТОГДА

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

Сообщите мне, если это работает отлично.

Ура!

Ответ 4

Вы пробовали

'has_archive' => true

?

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