Ich habe zwei Seitenvorlagen und Qtranslate installiert.
Ich möchte je nach gewählter Sprache die eine oder andere auswählen.
Kann ich so etwas machen?
if($q_config['lang'] == 'en'){
// load page-template_en.php
}else{
// load page-template_de.php
}
Irgendeine Idee ?
Vielen Dank!
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' );
Der beste (kanonische) Weg ist, template_include
hook zu verwenden: 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 Haken template_include
möglich sein. Code ist ungetestet:
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;
}
Vielen Dank an alle für diese Vorschläge! Ich wollte "Elementor canvas" -Vorlage standardmäßig nur auf Post setzen und das hat mir gefallen:
function default_post_template_elementor_canvas($post_type, $post)
{
$wishedTemplate = 'elementor_canvas'; // to see available template var_dump(get_page_templates($post))
if ($post_type === 'post'
&& in_array($wishedTemplate, get_page_templates($post)) // Only if elementor_canvas is available
&& $post->ID != get_option('page_for_posts') // Not the page for listing posts
&& metadata_exists('post', $post->ID, '_wp_page_template') === false) { // Only when meta _wp_page_template is not set
add_post_meta($post->ID, '_wp_page_template', $wishedTemplate);
}
}
add_action('add_meta_boxes', 'default_post_template_elementor_canvas', 10, 2);