1

我想清楚,

我有一个具有自定义分类的自定义帖子类型

Event > Zone

我用这个蛞蝓建立分类法(需要翻译“区域”):

'rewrite'  => array( 'slug' => '%events%' ),

我用这个 slug 构建 CPT(也需要翻译“事件”):

'slug' => '%event%/%zone%',

我还有两个用于重写 url 的函数:

对于“事件”:

add_filter( 'post_type_link' , 'events_permalink_structure', 10, 4 );

function events_permalink_structure( $post_link, $post )
{
    $status = $post->post_status;
    $type = $post->post_type;

  if( $status == "publish" && ( $type == "events" ) )
  {

    if ( false !== strpos( $post_link, '%zone%' ) ) {

        $event_type_term = get_the_terms( $post->ID, 'zone' );

        if( is_array( $event_type_term ) ){

          $post_link = str_replace( '%zone%', array_pop( $event_type_term )->slug, $post_link );

          $translated_slug = apply_filters( 'wpml_translate_single_string', 'events', 'WordPress', 'URL slug: events' );

          $post_link = str_replace( '%event%', $translated_slug, $post_link );

        }

    }

  }
    return $post_link;
}

和分类:

add_filter('term_link', 'term_link_filter', 10, 3);

function term_link_filter( $url, $term, $taxonomy ) {

    if ( false !== strpos( $url, '%events%' ) ) {

        $event_type_term = get_the_terms( $term->term_id, 'zone' );

        $translated_slug = apply_filters( 'wpml_translate_single_string', 'events', 'WordPress', 'URL slug: events' );

        $url = str_replace( '%events%', $translated_slug, $url );

    }

    return $url;

}

几乎一切都是完美的。每个 Url 都会生成并有效。我的问题是当我在管理员中时,我无法保存没有错误网址的帖子。

我的语言管理员是 EN,我有 4 种语言。当我创建一个新帖子时,如果 admin 是 FR 并且 Language 是 EN 我有并且 url 是这样的:

/evenements/asian-pacific/cdcsdcds/ (evenements = FR, asian-pacific = EN)

如果 admin 是 EN 并且 Language 是 EN 我有并且 url 是这样的:

/events/asian-pacific/bbdfgb/ (Everything is ok)

如果 admin 是 FR,Language 是 FR,我有这样的网址:

/fr/events/asie-pacifique/sdcdscdsc/ ‎(events could be evenements in FR)

我迷路了,你能帮帮我吗?

谢谢,大卫

4

0 回答 0