wie Sie Posts nach der Verwendung von template_redirect oder template_include in eine benutzerdefinierte Postvorlage laden

Ich brauche den URL-Parameter ? M = 1 , um jede Seite meiner WordPress mit einer anderen Vorlage zu laden, aber das Problem ist, dass ich nicht den Text und Beiträge, die mit der kanonischen URL zugegriffen werden kann, habe ich verschiedene Methoden am besten versucht eine, die für mich arbeitete, ist die Verwendung von template_redirect Aktions-Hook oder template_include -Filter das Problem ist, dass ich nicht laden kann Daten in die Vorlage-Datei mit dieser Methode laden die Vorlage aber die Seite leer ist und mit einigen Methoden gibt 404 Fehler zu besser zurück erkläre mein Problem

Ich habe diesen Code am Ende von functions.php hinzugefügt

add_filter( 'template_include', 'custom_template' ); function custom_template($template) { global $post, $wp_query; if ($wp_query->query_vars['m'] === '1') { return TEMPLATEPATH . '/custom-template.php'; } else { return $template; } } 

Ich kann die Beiträge nicht in die Vorlagendatei custom-template.php mit diesem Code laden, der leer ist

 

Der Code wird leer dargestellt

 

Ich brauche eine benutzerdefinierte Vorlage mit dem URL-Parameter ? M = 1 und laden Sie den gleichen Beitrag in der kanonischen URL Gibt es eine Arbeitsmethode zum Anzeigen benutzerdefinierter Vorlage mit gültigen Postdaten und Überschriften mit dem URL-Parameter ? M = 1

Solutions Collecting From Web of "wie Sie Posts nach der Verwendung von template_redirect oder template_include in eine benutzerdefinierte Postvorlage laden"

Hier ist der vollständige Code, um das Änderungsthema durch einen reservierten wordpress-Parameter zu erzwingen

 add_action( 'pre_get_posts', 'my_pre_get_posts' ); function my_pre_get_posts($wp_query) { global $wpdb; // Confirm request is main query if(!$wp_query->is_main_query()) { return; } // Get post name from query $post_name = $wp_query->get('pagename'); // Get post type from database $post_type = $wpdb->get_var( $wpdb->prepare( 'SELECT post_type FROM ' . $wpdb->posts . ' WHERE post_name = %s LIMIT 1', $post_name ) ); // Confirm page is post if ($post_type === 'post') { $wp_query->set('m', ''); } } add_action( 'template_redirect', 'my_template_redirect' ); function my_template_redirect() { global $post, $wp_query; if ($wp_query->query['m'] === '123') { include TEMPLATEPATH . '/template-name.php'; die(); } } 

Sie können auch die Template-Include-Methode anstelle des template_redirect-Hooks verwenden, solange Sie der function global $ wp_query hinzufügen