ส่งคืนหน้าเทมเพลต HTML พร้อมฟังก์ชัน PHP


10

ฉันต้องการสร้างแบบฟอร์มที่สามารถใช้รหัสย่อเพื่อแทรกลงในเว็บไซต์ของฉัน

มันจะดีจริงๆถ้าฉันสามารถสร้างส่วน HTML ในไฟล์แยกแล้วแทรกด้วยรหัสย่อ PHP (เพื่อแยกตรรกะของหน้าจากกลไกของการทำให้เป็นรหัสย่อ)

ฉันจะทำสิ่งนี้ได้อย่างไร

- อัปเดต -

นี่คือสิ่งที่ฉันทำ: ฉันมีสองไฟล์ หนึ่งชื่อ 'profiletemplate.php' และอีกชื่อหนึ่งเรียกว่า 'scodes' ทั้งสองเป็นส่วนหนึ่งของปลั๊กอินที่ฉันสร้างขึ้นสำหรับไซต์ของฉันด้วย init.php นี่คือเนื้อหาของพวกเขา:

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>

จากนั้นฉันใช้รหัสย่อ [testfield] บนหน้าหนึ่งในเว็บไซต์ของฉัน

อัปเดต 2

ดังนั้นวิธีนี้ใช้งานได้ แต่ไม่ได้แทรก HTML ที่มีรหัสย่อ แต่มันเป็นเพียงการแทรกเนื้อหาที่ด้านบนของหน้า (เช่นถ้าฉันพูดว่า 'echo' การทดสอบ '' แทน 'return' การทดสอบ '' ในฟังก์ชั่น


สำหรับผู้เริ่มต้นคุณสามารถเขียน HTML ธรรมดาในไฟล์ PHP ได้ จากนั้นคุณต้องเขียนฟังก์ชั่นในไฟล์functions.phpที่ต้องการ / รวมไฟล์นี้และโดยการadd_shortcode()ตั้งค่ารหัสย่อที่คุณต้องการเรียกใช้ฟังก์ชันของคุณ
tfrommen

คำตอบ:


24

บางสิ่งที่ฉันลืมไปในความคิดเห็นก่อนหน้านี้คือย่อโค้ดที่ส่งคืนเนื้อหาทั้งที่แนะนำincludeและทางเลือกของฉันget_template_partจะส่งออกเนื้อหาโดยตรง (ซึ่งเป็นสิ่งที่คุณเห็นด้วยเนื้อหาที่ปรากฏที่ด้านบนของหน้าแทนที่จะเป็น ที่จะรับมือกับเรื่องนี้เราจะต้องใช้บัฟเฟอร์เอาท์พุท

กำหนดรหัสย่อใน functions.php ของคุณ (หรือไฟล์ฟังก์ชั่นเฉพาะไซต์ของคุณ)

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

จากนั้นในโฟลเดอร์ชุดรูปแบบของคุณคุณต้องมีไฟล์ชื่อmy_form_template.phpซึ่งจะโหลดทุกที่ที่คุณวางรหัสย่อ


ที่สมบูรณ์แบบ! มันใช้งานได้ดี!
วิลเลียม

หากคุณพยายามทำสิ่งเดียวกันภายในปลั๊กอินที่คุณต้องใช้ ได้แก่ ดูwordpress.stackexchange.com/a/124794/75817
patrics

ว้าว ... บันทึกวันของฉันไว้รหัส
ลับ

2

เพิ่มสิ่งต่อไปนี้ในฟังก์ชั่นของคุณphp :

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

ไฟล์my_form_template.php :

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

1
คุณสามารถใช้get_template_part()ภายในฟังก์ชั่นรหัสย่อของคุณ
helgatheviking

ฉันลองใช้วิธีแก้ปัญหาของ @ tf - ฉันเพิ่มการอัปเดตในโพสต์ของฉันเกี่ยวกับมัน
William

@helgatheviking - ฟังก์ชันนั้นทำงานอย่างไร
William

ดู codex สำหรับคำอธิบายของget_template_part ()และดูคำตอบของฉันสำหรับวิธีใช้ร่วมกับรหัสย่อของคุณ
helgatheviking
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.