Почему моя пользовательская функция вызывается дважды в WordPress?
Например, у меня есть эта функция в functions.php:
function your_function_name() {
if(isset($_POST['your_var'])) {
// return $error;
echo '<p class="alert alert-danger"><span class="close" data-dismiss="alert">×</span> Work NOT submitted! Please correct the error(s) below.</p>';
}
}
Мой шаблон:
<?php
your_function_name();
?>
<form class="form-submission" method="post" action="">
<input type="text" class="form-control" placeholder="Name" name="your_var">
...
Когда форма отправлена, я получаю это <p class="alert alert-danger"><span class="close" data-dismiss="alert">×</span> Work NOT submitted! Please correct the error(s) below.</p>
дважды на моем экране. Один до HTML-тег и другой находится в правильном месте:
<p class="alert alert-danger"><span class="close" data-dismiss="alert">×</span> Work NOT submitted! Please correct the error(s) below.</p><!DOCTYPE html>
<html lang="en-US" class="no-js">
<head>
....
<p class="alert alert-danger"><span class="close" data-dismiss="alert">×</span> Work NOT submitted! Please correct the error(s) below.</p>
<form class="form-submission" method="post" action="">
<input type="text" class="form-control" placeholder="Name" name="your_var">
...
Первый до HTML-тег должен не существует, но есть! Зачем? Как я могу это исправить?
Я хочу, чтобы сообщение появилось до форма тэг не перед тэгом html.
<?php
if(isset($_POST['submitbuttonname']))
your_function_name();
?>
Попробуйте это, может быть, это работает для вас. В вашем коде функция вызывается два раза: сначала при загрузке страницы, а вторая — при ее вызове. Поэтому дайте условие, что если форма отправлена, то вызовите эту функцию.
Следуя этому руководство, просто поместите мой код перед:
<?php
get_header(); ?>
Тогда проблема решена.