WordPress - Почему моя пользовательская функция вызывается дважды?

Почему моя пользовательская функция вызывается дважды в 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">&times;</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">&times;</span> Work NOT submitted! Please correct the error(s) below.</p> дважды на моем экране. Один перед тегом html, а другой - в правильном месте:

<p class="alert alert-danger"><span class="close" data-dismiss="alert">&times;</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">&times;</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.

2 ответа

<?php
   if(isset($_POST['submitbuttonname']))
      your_function_name();
?>

Попробуйте это, может быть, это работает для вас. В вашем коде функция вызывается два раза: сначала при загрузке страницы, а вторая - при ее вызове. Поэтому дайте условие, что если форма отправлена, то вызовите эту функцию.

Следуя этому руководству, просто поместите мой код перед:

<?php
get_header(); ?>

Тогда проблема решена.

Другие вопросы по тегам