2014-02-07 4 views
13

Ich bin mit WPML 3.0.2-a mit Wordpress 3.8.1WPML und benutzerdefinierte Post-Typen Archiv Vorlage

Ich habe einen benutzerdefinierten Post-Typ wie folgt definiert:

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

eine benutzerdefinierte Post Typ Besuch Archiv- und einzelne Post-URLs für die Standardsprache funktionieren einwandfrei. Zum Beispiel:

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

funktionieren perfekt und zeigen, was sie sollten.

Allerdings ist es nicht für die andere Sprache arbeiten:

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

beide Anzeigen index.php Vorlage des Themas Wordpress. Es ist tatsächlich 404 Seite, aber da wir keine 404.php haben, wird index.php verwendet.

Vitrinen Post-Typ wird in WPML-Einstellungen übersetzbar gemacht.

Wissen Sie, warum das ist und wie man es beheben kann?

Antwort

2

Ich fand heraus, was das Problem war.

Die Zeichenfolge nicht unter WPML übersetzt wurde -> String Übersetzungen

Als ich es übersetzt (Fallstudien -> de/Fallstudien) es funktioniert.

Eigentlich funktionierte es in allen Varianten - sowohl meine ursprünglichen Code und Code in den Antworten vorgeschlagen.

5

Ich fand this support thread, wo sie sagen, dass man die folgende Zeile (im Code) ändern sollte:

'has_archive' => 'case-studies', 

zu:

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

könnte eine gute Idee sein, die offizielle Unterstützung zu verlangen Dies ist, da es kommerzielle Software ist und keine Dokumentation verfügbar ist.

+0

Leider hilft es nicht. :(Hast du noch andere Ideen? –

+0

Funktioniert perfekt! Stelle sicher, dass dein Parameter mit dem in 'register_post_type' übereinstimmt - wahrscheinlich, warum das bei Aleksandar nicht funktioniert hat. Es hätte 'Showcases' sein sollen, nicht 'case-studies' . –

1

Ich denke, das wird für Sie arbeiten, nur eine Aktion fehlt :)

'has_archive' => 'case-studies',

zu

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

DANN

Gehen Sie zu Einstellungen> Permalinks und klicken Sie auf ' Sparen'.

Lassen Sie mich wissen, ob das perfekt funktioniert.

Prost!

+0

Hehe, natürlich habe ich das. :) aber es funktioniert nicht. –

+0

Wie wäre es mit einem Blick auf diesen Thread: http://wpml.org/forums/topic/translating-slug-for-a-custom-post-type-which-have-a-variable-slug/ und benutze das Neuschreiben für die Schnecke stattdessen. Lass es mich wissen, wenn das hilft;) –

0

haben Sie

versucht
'has_archive' => true 

?

Sollte funktionieren wie gewünscht, wenn ich das richtig verstanden habe.

+0

Nein, hilft nicht. Muss etwas anderes sein. –

Verwandte Themen