自定义帖子类型中的帖子标签未以非默认语言的WPML显示在档案中

时间:2017-05-11 06:48:10

标签: php wordpress wpml

我在过去几个小时内做了一些搜索,但我找不到有效的解决方案;所以这里什么都没有:

我有一个附加'taxonomies' => array('post_tag')的自定义帖子类型。我可以正确地将标签添加到此自定义帖子类型的项目中,甚至可以在archive.php(/tags/{tagname})中找到这些标记的项目。

到目前为止,非常好。

但现在我希望我的"翻译成英文"项目以显示其标签以及(/en/tags/{a different tagname})(我不想要我的标签副本,只需要新的非相关标签。

然而;这不起作用!我在英文项目中标记的所有标签都没有出现在我的/ en / tags /页面上(即使我遗漏了/ en / part)也没有出现

在我的自定义帖子类型中,我尝试将has_archive键更改为以下几项:

  • 'has_archive' => icl_translate('wpml_custom', 'wpml_custom_case', 'case')

一切都无济于事。

简而言之:如何让我的英文标签与我的自定义帖子类型的荷兰语(默认语言)一样工作,以便它们显示在我的档案中?

注册我的帖子类型

function case_post_type() {

    $labels = array(
        'name' => 'Cases',
        'singular_name' => 'Case',
        'add_new' => 'Toevoegen',
        'add_new_item' => 'Nieuw case toevoegen',
        'edit_item' => 'Case bewerken',
        'new_item' => 'Nieuwe case',
        'all_items' => 'Alle cases',
        'view_item' => 'Bekijk case',
        'search_items' => 'Zoek case',
        'not_found' =>  'Geen cases gevonden',
        'not_found_in_trash' => 'Geen cases gevonden in de prullenbak',
        'menu_name' => 'Cases'
    );

    $args = array(
        'labels' => $labels,
        'public' => true,
        'publicly_queryable' => true,
        'show_ui' => true,
        'show_in_menu' => true,
        'exclude_from_search' => false,
        'query_var' => true,
        'rewrite' => array( 'slug' => 'case' ),
        'capability_type' => 'page',
        'has_archive' => false,
        'hierarchical' => false,
        'menu_position' => 8,
        'supports' => array('title', 'editor', 'excerpt', 'thumbnail', 'page-attributes'),
        'menu_icon'   => 'dashicons-format-gallery',
        'taxonomies' => array('post_tag')
    );

    register_post_type( 'case', $args );
}
add_action( 'init', 'case_post_type', 0 );

我的Archive.php只有the_loop()。简单明了。

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题!并不是没有记录;我刚刚标记了很多案例和博客,并认为我的archive.php会因为它们具有相同的标记而同时接收。事实并非如此。

因此,使用pre_get_posts功能,我可以在存档页面上同时获取案例和帖子:

function wpa_cpt_tags( $query ) {
    if ( $query->is_tag() && $query->is_main_query() ) {
        $query->set( 'post_type', array( 'post', 'case' ) );
    }
}
add_action( 'pre_get_posts', 'wpa_cpt_tags' );