Kembalikan Halaman Template HTML dengan Fungsi PHP

10

Saya ingin membuat formulir yang bisa saya gunakan kode pendek untuk memasukkan ke situs saya.

Akan sangat menyenangkan jika saya dapat membuat bagian HTML dalam file terpisah dan kemudian memasukkannya dengan kode pendek PHP (untuk memisahkan logika halaman dari mekanisme pembuatannya menjadi kode pendek).

Bagaimana saya bisa melakukan ini?

- Perbarui -

Ini yang saya lakukan: Saya punya dua file. Satu disebut 'profiletemplate.php' dan satu disebut 'kode'. Keduanya adalah bagian dari plugin yang saya buat untuk situs saya dengan init.php yang menginisialisasi mereka. Berikut isinya:

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>

Saya kemudian menggunakan kode pendek [testfield] pada halaman di situs saya.

Perbarui 2

Jadi metode ini berfungsi, tetapi tidak memasukkan HTML di mana shortcode dipanggil. Sebaliknya itu hanya memasukkan konten di bagian atas halaman (seperti jika saya mengatakan 'gema' Pengujian '' alih-alih 'mengembalikan' Pengujian '' dalam suatu fungsi.

William
sumber
Nah, sebagai permulaan, Anda BISA menulis HTML biasa dalam file PHP. Anda kemudian harus menulis fungsi di Anda functions.phpyang memerlukan / menyertakan file tertentu ini, dan dengan cara add_shortcode()mengatur kode pendek yang Anda inginkan untuk memanggil fungsi Anda.
tfrommen

Jawaban:

24

Sesuatu yang saya lupa di komentar saya sebelumnya adalah bahwa shortcode mengembalikan konten, baik yang disarankan includemaupun alternatif saya get_template_partakan langsung menampilkan konten (yang Anda lihat dengan konten yang muncul di bagian atas halaman Anda, bukan di tempat kode pendek itu dipanggil). Untuk mengatasi ini kita harus menggunakan buffering output .

Tentukan kode pendek di functions.php Anda (atau file fungsi khusus situs Anda ).

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

Kemudian di folder tema Anda, Anda memerlukan file bernama my_form_template.phpyang akan dimuat di mana saja Anda menempatkan kode pendek.

helgatheviking
sumber
Sempurna! Ini bekerja luar biasa!
William
Jika Anda mencoba melakukan hal yang sama dalam sebuah plugin, Anda harus menggunakan include. Lihat wordpress.stackexchange.com/a/124794/75817
patrik
Wow ... menyelamatkan hariku..kodus aneh
dipak_pusti
2

Tambahkan yang berikut ini ke functions.php Anda :

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

File my_form_template.php :

<?php // Template for my form shortcode ?>
<form ...>
    FIELDS
</form>
para pria
sumber
1
Anda juga dapat menggunakan get_template_part()di dalam fungsi kode pendek Anda.
Helgatheviking
Saya mencoba menerapkan solusi @ tf - saya menambahkan pembaruan ke posting saya tentang hal itu
William
@helgatheviking - bagaimana cara kerjanya?
William
Lihat kodeks untuk deskripsi get_template_part () dan lihat jawaban saya untuk bagaimana menggunakannya bersama dengan kode pendek Anda.
Helgatheviking