HTML-Vorlagenseite mit PHP-Funktion zurückgeben

10

Ich möchte ein Formular erstellen, das ich mit einem Shortcode 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 Umwandlung in einen Shortcode zu trennen).

Wie könnte ich das machen?

- Update -

Folgendes habe ich getan: Ich habe zwei Dateien. Eine mit dem Namen 'profiletemplate.php' und eine mit dem Namen '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 verwende 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 nur der Inhalt oben auf der Seite eingefügt (als ob ich in einer Funktion "Echo" -Test "anstelle von" Test "zurückgeben würde).

Wilhelm
quelle
Zunächst einmal können Sie einfaches HTML in eine PHP-Datei schreiben. Sie müssen dann eine Funktion in Ihre schreiben functions.php, die diese bestimmte Datei benötigt / enthält, und mithilfe des add_shortcode()gewünschten Shortcodes Ihre Funktion aufrufen.
Anfang

Antworten:

24

Etwas , das ich in meinem vorherigen Kommentar vergessen war , dass Kurzwahlnummern zurückgeben Inhalt, sowohl die vorgeschlagene includeund meine Alternative get_template_partdirekt ausgibt den Inhalt (das , was Sie mit dem Inhalt zu sehen , am oberen Rande der Seite erscheinen , statt , wo der Shortcode genannt). Um dem entgegenzuwirken, müssen wir die Ausgabepufferung verwenden .

Definieren Sie den Shortcode in Ihrer functions.php (oder in der Site-spezifischen Funktionsdatei 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 namens, my_form_template.phpdie überall dort geladen wird, wo Sie den Shortcode platzieren.

Helgatheviking
quelle
Perfekt! Das funktioniert wunderbar!
William
Wenn Sie versuchen, dasselbe innerhalb eines Plugins zu tun, müssen Sie include verwenden. Siehe wordpress.stackexchange.com/a/124794/75817
Patrics
Wow ... hat meinen Tag gerettet ... toller Code
dipak_pusti
2

Fügen Sie Ihrer functions.php Folgendes 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>
tfrommen
quelle
1
Sie können auch get_template_part()innerhalb Ihrer Shortcode-Funktion verwenden.
Helgatheviking
Ich habe versucht, die Lösung von @ tf zu implementieren - ich habe meinem Beitrag ein Update hinzugefügt
William
@helgatheviking - wie funktioniert diese Funktion?
William
Im Codex finden Sie eine Beschreibung von get_template_part () und in meiner Antwort finden Sie Informationen zur Verwendung in Verbindung mit Ihrem Shortcode.
Helgatheviking