Trả về trang mẫu HTML với chức năng PHP


10

Tôi muốn tạo một biểu mẫu mà tôi có thể sử dụng một shortcode để chèn vào trang web của mình.

Sẽ thật tuyệt nếu tôi có thể tạo phần HTML trong một tệp riêng biệt và sau đó chèn nó bằng một mã ngắn PHP (để tách logic của trang khỏi cơ chế biến nó thành một mã ngắn).

Làm thế nào tôi có thể làm điều này?

- Cập nhật -

Đây là những gì tôi đã làm: Tôi có hai tệp. Một cái gọi là 'profXLemplate.php' và một cái gọi là 'scodes'. Cả hai đều là một phần của plugin mà tôi đang tạo cho trang web của mình với init.php khởi tạo chúng. Đây là nội dung của họ:

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');

profXLemplate.php

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

Sau đó tôi sử dụng mã ngắn [testfield] trên một trang trong trang web của mình.

Cập nhật 2

Vì vậy, phương pháp này đang hoạt động, nhưng nó không chèn HTML nơi mà shortcode được gọi. Thay vào đó, nó chỉ chèn nội dung ở đầu trang (như nếu tôi nói 'echo' Kiểm tra '' thay vì 'trả về' Kiểm tra '' trong một chức năng.


Vâng, đối với người mới bắt đầu, bạn CÓ THỂ viết HTML đơn giản trong tệp PHP. Sau đó, bạn phải viết một hàm trong functions.phpyêu cầu / bao gồm tệp nhất định này và bằng cách add_shortcode()thiết lập mã ngắn mong muốn của bạn để gọi hàm của bạn.
tfrommen

Câu trả lời:


24

Một điều tôi quên trong nhận xét trước đó là shortcodes trả về nội dung, cả gợi ý includevà thay thế của tôi get_template_partsẽ trực tiếp xuất nội dung (đó là nội dung bạn đang thấy với nội dung xuất hiện ở đầu trang của bạn thay vì nơi gọi mã ngắn). Để chống lại điều này, chúng ta phải sử dụng bộ đệm đầu ra .

Xác định mã ngắn trong tệp tin.php của bạn (hoặc tệp chức năng dành riêng cho trang web của bạn ).

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

Sau đó, trong thư mục chủ đề của bạn, bạn cần một tệp có tên my_form_template.phpsẽ được tải ở bất cứ đâu bạn đặt shortcode.


Hoàn hảo! Điều này làm việc tuyệt vời!
William

Nếu bạn cố gắng làm tương tự trong một plugin bạn cần sử dụng bao gồm. Xem wordpress.stackexchange.com/a/124794/75817
liệu

Wow ... đã lưu lại ngày của tôi..awgie code
dipak_pusti

2

Thêm phần sau vào hàm của bạn.php :

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

Tệp my_form_template.php :

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

1
Bạn cũng có thể sử dụng get_template_part()bên trong chức năng shortcode của mình.
xe đạp vào

Tôi đã thử triển khai giải pháp của @ tf - Tôi đã thêm một bản cập nhật cho bài đăng của mình về nó
William

@helgatheviking - Chức năng đó hoạt động như thế nào?
William

Xem codex để biết mô tả về get_template_part () và xem câu trả lời của tôi để biết cách sử dụng nó cùng với shortcode của bạn.
xe đạp vào
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.