Laden Sie die Seitenvorlage mit benutzerdefiniertem Inhalt mithilfe eines Plugins

Ich möchte die Vorlage ” page.php mit dem angegebenen Inhalt laden (mit Variablen und nicht aus der database), wenn die Anfrage eine bestimmte page.php enthält.

Nehmen wir an, ein Benutzer fordert example.com/?var1=str1 die Seitenvorlage sollte mit dem Titel und dem Inhalt angezeigt werden, den ich mit Variablen angegeben habe.

Dies ist der Pseudo-Code dessen, was ich erreichen möchte

  

Ich möchte diesen Code in einem Plugin verwenden, also sollte es mit der page.php eines Themas funktionieren.

Solutions Collecting From Web of "Laden Sie die Seitenvorlage mit benutzerdefiniertem Inhalt mithilfe eines Plugins"

Das erreichen Sie mit Filtern auf the_content und the_title :

 function wpa_content_filter( $content ) { if( isset( $_REQUEST['var1'] ) && $_REQUEST['var1'] == "str1" ) { return 'This content will be displayed on the default page template.'; } return $content; } add_filter( 'the_content', 'wpa_content_filter', 999 ); 

Erstellen Sie die Template-Datei in Ihrem Plugin, zB template-pluginname.php , dann haken Sie in template_include und sagen Sie WordPress, es zu verwenden:

 function wpse114181_template_include( $template ) { return ( '' != get_query_var( 'plugin_key' ) ? plugin_dir_path( __FILE__ ) . 'template-plugin.php' : $template ); } add_filter( 'template_include', 'wpse114181_template_include' ); 

Hinweis: Dazu müssen Sie Ihre add_query_arg() mit add_query_arg() registrieren, ist jedoch sicherer als direkt auf $_REQUEST .

Bearbeiten

Basierend auf diesem Kommentar:

Das einzige Problem mit diesem Code ist, dass ich, wie ich bereits sagte, Plugins verwenden möchte, um mit jedem Thema richtig zu arbeiten. Wenn ich also selbst eine Template-Datei entwerfe, würde sie nicht wie die page.php des aktuell aktivierten Themes aussehen

Wenn Sie den the_title und den Post-Content unbedingt überschreiben the_title the_content Filter ” the_title und ” the_content verwenden:

 function wpse114181_filter_the_title( $title ) { if ( is_page() && '' != get_query_var( 'plugin_key' ) ) { return 'Your Post Title Here'; } else { return $title; } } add_filter( 'the_title', 'wpse114181_filter_the_title' ); function wpse114181_filter_the_content( $content ) { if ( is_page() && '' != get_query_var( 'plugin_key' ) ) { return 'Your Post Content Here'; } else { return $content; } } add_filter( 'the_content', 'wpse114181_filter_the_content' );