wordpress — отображение формы в переполнении стека

Я пытаюсь отобразить форму PHP в WordPress. Мне дали следующий код по умолчанию (который указал, что его можно использовать для отображения настраиваемых полей) и отредактировал его, но он все еще не отображает форму 🙁 Я хотел бы выяснить, как легко отобразить это, так как мне нужно добавить настраиваемые поля и я очень новичок в PHP.

/*
* The form for adding custom fields on the options page.
*/
function fcpetition_fieldform($po) {
?>
<form method="post" action="<?php echo str_replace( '%7E', '~', $_SERVER['REQUEST_URI']); ?>"/>
<input type="radio" name="addfield" value="yes"/>
<input type="dropdown" name="petition_select" value="<?php echo $po; ?>"/>
<input type="dropdown" name="editpetition" value="<?php print $po;?>">
Type: <select name = "fieldtype">
<option value="text">Text box</option>
<option value="select">Drop down box</option>
</select>
Name:<input type="text" name="fieldname"/>
Options:<input type="text" name="options"/>
Publish field <input type="checkbox" name="hide" checked/>
<input type="submit" name="Submit" value="<?php _e("Add","fcpetition")?>"/>
</form>
<?php
}

Оригинальный код без моих правок:

 /*
* The form for adding custom fields on the options page.
*/
function fcpetition_fieldform($po) {
?>
<form method="post" action="<?php echo str_replace( '%7E', '~', $_SERVER['REQUEST_URI']); ?>"/>
<input type="hidden" name="addfield" value="yes"/>
<input type="hidden" name="petition_select" value="<?php echo $po; ?>"/>
<input type="hidden" name="editpetition" value="<?php print $po;?>">
Type: <select name = "fieldtype">
<option value="text">Text box</option>
<option value="select">Drop down box</option>
</select>
Name:<input type="text" name="fieldname"/>
Options:<input type="text" name="options"/>
Publish field <input type="checkbox" name="hide" checked/>
<input type="submit" name="Submit" value="<?php _e("Add","fcpetition")?>"/>
</form>
<?php
}

0

Решение

Я на самом деле не один для размещения HTML, но я думаю, что это WordPress определение того, как это должно быть. Если бы мне пришлось, однако, я бы использовал Heredoc;

function echoForm() {
$html = <<<FORM
// html code here
FORM;

echo $html;
// or
return $html;
}
0

Другие решения

Эта функция должна выводить / печатать форму HTML, но она не может работать в вашем случае, потому что HTML написан в функции PHP. Функция PHP должна return/echo/print содержимое. Вы также можете использовать heredoc,

Вам необходимо добавить эту функцию в файл «function.php» папки вашей темы.

Я действительно не понимаю, что вы делаете в атрибуте «действия» <form> тег. Вы должны указать на «файл действий», который будет обрабатывать эти данные.

Где вы должны положить «файл действий»?

  • некоторые люди создают файл действий в папке «wp-content».
  • некоторые люди создают файл действий в корне папки WordPress.

Я обычно создаю файл «action.php» в корне папки WordPress и использую следующее: <form action="action.php" method="post">...</form>,

Не следует помещать файл действия в папку темы, поскольку он не связан с конкретной темой и не должен обновляться функцией обновления WordPress.

0