Я создал контактную форму для своего сайта wordpress. Здесь четыре поля - имя, адрес электронной почты, тема, сообщение. Для пользователей, вошедших в систему, я хочу, чтобы их имя и адрес электронной почты автоматически заполнялись в соответствующих полях формы, и эти поля будут отключены для редактирования. А для не авторизованных пользователей они будут вводить поля имени, адреса электронной почты вручную. Я поместил этот код в файл шаблона страницы -
<?php
$current_user = wp_get_current_user();
$user_email = $current_user->user_email;
$user_name = $current_user->user_firstname.' '.$current_user>user_lastname;
if ( 0 != $current_user->ID ) {
echo '<script type = "text/javascript">
document.getElementById("curUserName").value = "'.$user_name.'";
document.getElementById("curUserName").disabled = "disabled";
document.getElementById("curUserEmail").value = "'.$user_email.'";
document.getElementById("curUserEmail").disabled = "disabled";
</script>';
}
?>
Но этот код отключает поля имени и электронной почты для обоих пользователей (вошедших в систему и не вошедших в систему). Я контролировал сценарий с помощью условия if. Тем не менее, javascript применяется для обоих пользователей. Посоветуйте, пожалуйста, где я ошибся.
Вот форма html -
<form action = "/success.php" method = "post">
<label>Name :</label><br>
<input type = "text" id = "curUserName" name = "sender_name" required><br>
<label>Email :</label><br>
<input type = "text" id = "curUserEmail" name = "sender_email" required><br>
<label>Subject :</label><br>
<input type = "text" name = "sender_sub"><br>
<label>Message</label><br>
<textarea name = "sender_msg" rows = "4" cols = "60" required></textarea><br>
<input type = "submit" name = "submit" value = "Send">
</form>
Я вкладываю javascript в условие php if.
Можете ли вы сделать var_dump ($ current_user); и дайте нам знать, что вы получите?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Не повторяйте javascript с помощью php. Это плохая практика.
Попробуйте использовать теги значений во входных данных, проверьте, вошел ли пользователь в систему с помощью тернарного оператора, и если да, то эхо для тега значения их реквизиты для входа.
<?php (is_user_logged_in()) ? $current_user = wp_get_current_user() : $current_user = false; ?>
<label>Name</label>
<input type = "text" id = "curUserName" name = "sender_name" value = "<?php ($current_user) ? echo $current_user->user_name : '' ?>" required>
<label>Email</label>
<input type = "text" id = "curUserEmail" name = "sender_email" value = "<?php ($current_user) ? echo $current_user->user_email : '' ?>" required>
У источника, который вы собираетесь изменить, уже отключена опция ... поэтому просто удалите ее, если пользователь не вошел в систему :)
<?php
$current_user = wp_get_current_user();
$user_email = $current_user->user_email;
$user_name = $current_user->user_firstname.' '.$current_user>user_lastname;
echo '<script type = "text/javascript">';
if ( 0 != $current_user->ID )
{
echo 'document.getElementById("curUserName").value = "'.$user_name.'"
document.getElementById("curUserName").disabled = "disabled"
document.getElementById("curUserEmail").value = "'.$user_email.'"
document.getElementById("curUserEmail").disabled = "disabled"';
}
else
{
echo 'document.getElementById("curUserName").disabled = false;
document.getElementById("curUserEmail").disabled = false;';
}
echo '</script>';
?>
document.getElementById("curUserName").disabledмогут быть присвоены только значения, истинные или ложные. Назначая строку «disabled», вы присваиваете значениеtrue, поэтому оно отключено. Вы упомянули условные предложения. Я не вижу операторовifв вашем js.