Повернути сторінку шаблону 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, де викликається короткий код. Натомість це просто вставлення вмісту у верхній частині сторінки (наприклад, якби я сказав функцію "ехо" Тестування "замість" повернути "Тестування").


Ну, для початку ви можете написати звичайний HTML у файл PHP. Тоді вам доведеться записати функцію у свій, functions.phpякий вимагає / включає цей певний файл, і за допомогою add_shortcode()налаштувати потрібний короткий код для виклику вашої функції.
tfrommen

Відповіді:


24

Щось я забув у своєму попередньому коментарі, це те, що шорт-коди повертають вміст, і запропонований, includeі моя альтернатива get_template_partбудуть безпосередньо виводити вміст (це те, що ви бачите зі вмістом, який з’являється вгорі сторінки, а не там, де називається шорт-код). Для протидії цьому ми повинні використовувати вихідну буферизацію .

Визначте короткий код у файлі function.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

Нічого ... врятував мені день ... дивовижний код
dipak_pusti

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 - я додав оновлення до своєї публікації про це
Вільям

@helgatheviking - як ця функція працює?
Вільям

Дивіться в кодексі опис get_template_part () і дивіться мою відповідь про те, як ним користуватися у поєднанні зі своїм коротким кодом.
helgatheviking
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.