Seitenvorlage programmatisch ändern?

Ich habe zwei Seitenvorlagen und Qtranslate installiert.

Ich möchte die eine oder andere Sprache auswählen.

Kann ich so etwas tun?

if($q_config['lang'] == 'en'){ // load page-template_en.php }else{ // load page-template_de.php } 

Irgendeine Idee ?

Vielen Dank!

Solutions Collecting From Web of "Seitenvorlage programmatisch ändern?"

Es ist möglich, den template_redirect Hook zu verwenden.

Sieht in etwa so aus:

  function language_redirect() { global $q_config; if( $q_config['lang'] == 'en' ) { include( get_template_directory() . '/page-template_en.php' ); exit; } else { include( get_template_directory() . '/page-template_de.php' ); exit; } } add_action( 'template_redirect', 'language_redirect' ); 

Code ist ungetestet, sollte aber so aussehen.

Siehe meine ähnliche Antwort HIER für weitere Hilfe.

Endlich gefunden! Wenn ich Ihre Frage richtig verstehe, wird die Vorlage grundsätzlich als Metadaten gespeichert, die aktualisiert werden müssen.

 update_post_meta( $post_id, '_wp_page_template', 'your_custom_template' ); // or update_metadata('post_type', $post_id, '_wp_page_template', 'your_custom_template' ); 

Quelle und weitere Informationen

Der beste (kanonische) Weg ist die Verwendung von template_include hook: http://codex.wordpress.org/Plugin_API/Filter_Reference/template_include

Beispielcode:

 function language_redirect($template) { global $q_config; $new_template = locate_template( array( 'page-'.$q_config['lang'].'.php' ) ); if ( '' != $new_template ) { return $new_template ; } return $template; } add_action( 'template_include', 'language_redirect' ); 

Sollte mit dem template_include Hook möglich sein. Code ist nicht getestet:

  add_action( 'template_include', 'language_redirect' ); function language_redirect( $template ) { global $q_config; $lang = ( 'en' === $q_config['lang'] ) ? 'en' : 'de'; $template = str_replace( '.php', '_'.$lang.'.php', $template ); return $template; }