Не могу найти подробнее информацию для новичков как сделать такое: зарегистрировавшийся человек должен заполнить анкету и пока он не заполнит, в сайдбаре или еще где будет торчать большая кнопка «ЗАПОЛНИ АНКЕТУ». Когда он заполняет анкету, то эта кнопка пропадает. Читал статью о перенаправлении на определенную страницу, но это немного не то, хоть и временное решение. Я так понял, что логика такая:
1. у каждого в профиле есть мета поле в котором сохраняется значение заполненности анкеты
2. кнопка «ЗАПОЛНИ АНКЕТУ» должна как-то проверять это поле на значение и если там пусто, 0 или ‘нет’ то выводиться, а если ‘да’ то прятаться
3. при сабмите формы должно что-то срабатывать и менять значение в этом поле на 1 или ‘да’
Начал делать так:
1. Создаем у всех пользователей в профиле дополнительное поле.
Я создавал так, в functions.php текущей темы добавил
// Добавить в профиль дополнительное поле
add_filter('user_contactmethods', 'my_user_contactmethods');
function my_user_contactmethods($user_contactmethods){
$user_contactmethods['anketa'] = 'Анкета заполнена?';
return $user_contactmethods;
}
В итоге в каждом профиле появляется пустое поле ‘Анкета заполнена?’.
2. Состряпал код, который по идее должен менять значение в нужном поле в профиле
// Записать в поле в профиле значение
Дальше дело встало.. (( Не могу сообразить куда вставить этот код (ищу в gravity forms, но там уж очень много кода).
До конструкции проверяющей значение поля и выводящую/прячущую кнопку даже не дошел.
Может есть более простое и элегантное решение подобной задачи?


Думаю, что можно подобное сделать без введения дополнительного поля. Для этого нужно определиться, какие поля в профиле нужно заполнить, чтобы профиль считался заполненным полностью.
Предположим, что профиль будет заполненным полностью, если пользователь заполнит Био и Сайт. Нужно вставить условие: ЕСЛИ био ИЛИ сайт отсутствуют, то выводим надпись.
Получить и вывести БИО текущего пользователя можно так:
<?php $user_info = get_userdata($current_user->ID); echo $user_info-> user_description ; ?>Получить и вывести САЙТ текущего пользователя можно так:
<?php $user_info = get_userdata($current_user->ID); echo $user_info-> user_url ; ?>Подробнее о том, как можно получить данные текущего пользователя: http://codex.wordpress.org/Function_Reference/get_userdata
Проверить, заполнено ли поле БИО в профиле текущего пользователя, и вывести его, значение, если оно есть, можно так:
<?php if($user_info = get_userdata($current_user->ID)): ?> <?php echo $user_info-> user_description ; ?> <?php endif; ?>Выведем надпись, показывающую пользователю, что нужно заполнить поле БИО в профиле:
//Получаем значение поля БИО <?php $user_info = get_userdata($current_user->ID); $bio = $user_info-> user_description ; ?> //Проверяем, заполнено ли поле БИО <?php if($bio == ''): ?> <?php echo 'Заполните БИО в профиле' ; ?> <?php endif; ?>Выведем надпись, показывающую пользователю, что нужно заполнить поле САЙТ в профиле:
//Получаем значение поля САЙТ <?php $user_info = get_userdata($current_user->ID); $site = $user_info-> user_url ; ?> //Проверяем, заполнено ли поле БИО <?php if($site == ''): ?> <?php echo 'Заполните САЙТ в профиле' ; ?> <?php endif; ?>Объединим два условия:
//Получаем значение полей БИО и САЙТ <?php $user_info = get_userdata($current_user->ID); $bio = $user_info-> user_description ; $site = $user_info-> user_url ; ?> //Проверяем, заполнено ли поле БИО или поле САЙТ, и выводим надпись, если хотя бы одно из полей не заполнено <?php if(($bio == '') && ($site == '')): ?> <?php echo 'Заполните данные профиля' ; ?> <?php endif; ?>Я мог ошибиться в деталях кода, так как не программист, но логика примерно такая.
О ужас.. Жаль в посте поправить ничего не могу, но АНКЕТА и ПРОФИЛЬ ПОЛЬЗОВАТЕЛЯ в данном вопросе – это разные вещи… На самом деле вопрос был совсем не про заполненность профиля пользователя, а про заполненность любой формы на сайте т.е. если я вдруг решил провести среди пользователей анкетирование по какому-то вопросу и предлагаю им заполнить трехэтажную форму, по-этому и про большую кнопку говорю и вопрос называется “показ чего-либо в зависимости от состояния поля в профиле”.. Такой хороший ответ, но не мой вопрос.. (
И проблема у такого как я часто бывает даже не с тем чтобы написать кусок кода (есть в интернет примеры, (в том же кодексе) в которые можно по аналогии вписать свои значения), а в том КУДА этот кусок кода пихать… (
Задал подобный вопрос в посте про редирект может это решит мой вопрос лучше чем кнопка..