it-swarm.com.de

HTML-Vorlagenseite mit zurückgeben PHP Funktion

Ich möchte ein Formular erstellen, das ich mithilfe eines Shortcodes in meine Site einfügen kann.

Es wäre wirklich schön, wenn ich den HTML-Teil in einer separaten Datei erstellen und ihn dann mit einem PHP-Shortcode einfügen könnte (um die Logik der Seite von der Mechanik der Erstellung eines Shortcodes zu trennen).

Wie könnte ich das machen?

- Update -

Das habe ich getan: Ich habe zwei Dateien. Eine heißt 'profiletemplate.php' und eine heißt 'scodes'. Sie sind beide Teil eines Plugins, das ich für meine Site mit einer init.php erstelle, die sie initialisiert. Hier ist ihr Inhalt:

init.php

<?php
require_once(dirname(__FILE__).'/pages/scodes.php');
?>

scodes.php

function jf_testcode() {
    include dirname(__FILE__) . 'profiletemplate.php';
}

add_shortcode('testfield', 'jf_testcode');

profiletemplate.php

<?php // Template for my form shortcode ?>
<form>
Testing
</form>

Ich benutze dann den Shortcode [testfield] auf einer Seite meiner Site.

Update 2

Diese Methode funktioniert also, fügt jedoch nicht den HTML-Code ein, in dem der Shortcode aufgerufen wird. Stattdessen wird einfach der Inhalt am oberen Rand der Seite eingefügt (wie wenn ich in einer Funktion 'echo' Testing 'anstelle von' return 'Testing' sagte).

8
William

In meinem vorherigen Kommentar habe ich vergessen, dass die Shortcodes return content, sowohl die vorgeschlagene include als auch meine Alternative get_template_part den Inhalt direkt ausgeben (was Sie sehen, wenn der Inhalt oben angezeigt wird) von Ihrer Seite anstatt wo der Shortcode aufgerufen wird). Um dem entgegenzuwirken, müssen wir Ausgabepufferung verwenden.

Definieren Sie den Shortcode in Ihrer functions.php (oder in der Datei site specific functions Ihrer Site).

function my_form_shortcode() {
    ob_start();
    get_template_part('my_form_template');
    return ob_get_clean();   
} 
add_shortcode( 'my_form_shortcode', 'my_form_shortcode' );

Dann benötigen Sie in Ihrem Themenordner eine Datei mit dem Namen my_form_template.php, die überall dort geladen wird, wo Sie den Shortcode platzieren.

18
helgatheviking

Fügen Sie Folgendes zu Ihrer functions.php hinzu:

function my_form_shortcode() {
    include dirname( __FILE__ ) . 'my_form_template.php';
} // function my_form_shortcode
add_shortcode( 'my_form_shortcode', 'my_form_shortcode' );

Datei my_form_template.php :

<?php // Template for my form shortcode ?>
<form ...>
    FIELDS
</form>
2
tfrommen