Zwróć stronę szablonu HTML z funkcją PHP

10

Chcę utworzyć formularz, którego można użyć za pomocą krótkiego kodu do wstawienia na mojej stronie.

Byłoby naprawdę miło, gdybym mógł utworzyć część HTML w osobnym pliku, a następnie wstawić ją za pomocą krótkiego kodu PHP (aby oddzielić logikę strony od mechaniki przekształcania jej w krótki kod).

Jak mogłem to zrobić?

-- Aktualizacja --

Oto co zrobiłem: mam dwa pliki. Jeden o nazwie „profiletemplate.php” i drugi o nazwie „scodes”. Oba są częścią wtyczki, którą tworzę dla mojej witryny za pomocą pliku init.php, który je inicjuje. Oto ich treść:

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>

Następnie używam skrótu [testfield] na stronie w mojej witrynie.

Aktualizacja 2

Więc ta metoda działa, ale nie wstawia kodu HTML, w którym wywoływany jest shortcode. Zamiast tego po prostu wstawia treść na górze strony (tak jak gdybym powiedział „echo” Testowanie ”zamiast„ return ”Testowanie w funkcji.

William
źródło
Na początek możesz pisać zwykły HTML w pliku PHP. Następnie musisz napisać funkcję, functions.phpktóra wymaga / zawiera ten określony plik, i add_shortcode()ustawić żądany skrót do wywołania funkcji.
tfrommen

Odpowiedzi:

24

Coś zapomniałem w poprzednim komentarzu, że skróty zwracają treść, zarówno sugerowana, jak includei moja alternatywa get_template_partbędą bezpośrednio wyświetlać treść (to, co widzisz, gdy treść pojawia się u góry strony zamiast tego, gdzie nazywany jest shortcode). Aby temu przeciwdziałać, musimy użyć buforowania wyjściowego .

Zdefiniuj krótki kod w pliku functions.php (lub w pliku funkcji specyficznym dla witryny ).

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

Następnie w folderze motywu potrzebujesz pliku o nazwie, my_form_template.phpktóry zostanie załadowany w dowolnym miejscu, w którym umieścisz krótki kod.

helgatheviking
źródło
Doskonały! To działa bajecznie!
William
Jeśli spróbujesz zrobić to samo we wtyczce, musisz użyć opcji include. Zobacz wordpress.stackexchange.com/a/124794/75817
patrics
Wow ... uratowałem mój dzień .. niesamowity kod
dipak_pusti
2

Dodaj następujące funkcje do swojego functions.php :

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

Plik my_form_template.php :

<?php // Template for my form shortcode ?>
<form ...>
    FIELDS
</form>
tfrommen
źródło
1
Możesz także użyć get_template_part()wewnątrz funkcji shortcode.
helgatheviking
Próbowałem wdrożyć rozwiązanie @ tf - dodałem aktualizację do mojego postu na ten temat
William
@helgatheviking - jak działa ta funkcja?
William
Zobacz kodeks, aby uzyskać opis get_template_part () i zobacz moją odpowiedź, jak używać go w połączeniu ze swoim krótkim kodem.
helgatheviking