Домой Wp-Recall WP-Recall: Проблемы и решения Добавление чекбокса для показа/не показа рекламы во вкладке "Профиль" плагина wp-recall
16ответ(ов) в теме
greshnikk
не в сети 11 лет
На сайте с 09.01.2014
Участник
1
01:03

Доброго времени суток, подскажите пожалуйста как добавить чекбокс для авторизованного пользователя в ЛК вида "Показывать рекламу на сайте?" Сам код рекламы расположен в файлах темы в таком виде:

Вы не можете просматривать опубликованные ссылки

Вообщем как на скрине

Вы не можете просматривать опубликованные ссылки
0
Андрей CS
не в сети 3 часа
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16929
2
14:25

создайте через произвольные поля профиля этот чекбокс и делайте в коде проверку на существование этого поля у данного пользователя.

0
greshnikk
не в сети 11 лет
На сайте с 09.01.2014
Участник
3
01:45

Андрей Plechev сказал(а)

и делайте в коде проверку на существование этого поля у данного пользователя.

можно тут немного поподробней?

0
Андрей CS
не в сети 3 часа
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16929
4
12:08

Если посмотреть на созданные произвольные поля профиля в админке, то можно увидеть, что в них указан ярлык каждого поля, например, "svoj-sajt".
Далее, если в этом ярлыке поля тире заменить на нижнее подчеркивание, то мы сможем получить значение этого поля у любого пользователя и можем делать проверку на его существование. Например:

if($meta = get_the_author_meta('svoj_sajt',$user_ID)){
      echo 'значение этого поля у текущего пользователя: '.$meta;
}else{
      echo 'у данного пользователя данное поле не заполнено';
}

0
dan9
не в сети 11 лет
На сайте с 08.01.2014
Участник
Сообщения 17
5
14:19

<?php include (TEMPLATEPATH . '/reklama.php'); // Вывод рекламы в шаблон ?>

<?php if ( is_user_logged_in()) : // Выводим рекламу авторизаванным пользователям ?>
<?php 
$meta = get_the_author_meta('svoj_sajt',$user_ID);
if($meta == true){
echo "Выводим рекламу, если поле активное";
}else{
echo "Не выводим рекламу";
}
?>
<?php else : ?>
Выводим рекламу гостям
<?php endif; ?>

0
greshnikk
не в сети 11 лет
На сайте с 09.01.2014
Участник
6
20:34

Создал произвольное поле чекбокс с ярлыком rek-site-18, добавил в шаблон этот код:

<?php if ( is_user_logged_in()) : // Выводим рекламу авторизаванным пользователям ?>
<?php 
$meta = get_the_author_meta('rek_site_18',$user_ID);
if($meta == true){
echo "Выводим рекламу, если поле активное";
}else{
echo "Не выводим рекламу";
}
?>
<?php else : ?>
Выводим рекламу гостям
<?php endif; ?>

Ставлю галочку в чекбоксе или убираю, ничего не происходит постоянно для пользователя отображается - "Не выводим рекламу" Cry. Подскажите, пожалуйста, что не так делаю?

0
Андрей CS
не в сети 3 часа
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16929
7
21:18

а у вас значение $meta чему равно?
Пробуйте проверку делать только на наличие значения:

if($meta){
echo "Выводим рекламу, если поле активное";
}else{
echo "Не выводим рекламу";
}

0
dan9
не в сети 11 лет
На сайте с 08.01.2014
Участник
Сообщения 17
8
22:33

Можете попробовать так: // У меня пака не установлен wp-recall
В файл functions.php

#===============================================================
#Дополнительные поля в профиль пользователя
add_action('show_user_profile', 'profile_fields');
add_action('edit_user_profile', 'profile_fields');
 
function profile_fields($user) { ?>
<h3>Реклама</h3>
<table class="form-table">
<tr>
<th><label for="reklama">Реклама на сайте</label></th>
<td>
<input type="checkbox" name="reklama" id="reklama" value="
<?php echo esc_attr(get_the_author_meta('reklama', $user->ID)); ?>" 
 checked>
<br />
<span class="description">Показывать рекламу?
</span>
</td>
</tr>
</table>
<?php }

add_action('personal_options_update', 'save_profile_fields');
add_action('edit_user_profile_update', 'save_profile_fields');
 
function save_profile_fields($user_id) {
if ( !current_user_can( 'edit_user', $user_id ) )
return false;
update_usermeta($user_id, 'reklama', $_POST['reklama']);
}

В шаблон:

<?php if ( is_user_logged_in()) : // Выводим рекламу авторизаванным пользователям ?>
<?php
if(get_the_author_meta('reklama') == true){
echo "Выводим рекламу, если поле активное";
}else{
echo "Не выводим рекламу";
}
?>
<?php else : ?>
Выводим рекламу гостям
<?php endif; ?>

Работать будет 100% я только что проверил, при нажатии на checkbox проверка срабатывает, правда нужны костыли для статуса в профиле checkbox = checked,

0
Андрей CS
не в сети 3 часа
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16929
9
22:59

greshnikk сказал(а)

Создал произвольное поле чекбокс с ярлыком rek-site-18, добавил в шаблон этот код:

<?php if ( is_user_logged_in()) : // Выводим рекламу авторизаванным пользователям ?>
<?php 
$meta = get_the_author_meta('rek_site_18',$user_ID);
if($meta == true){
echo "Выводим рекламу, если поле активное";
}else{
echo "Не выводим рекламу";
}
?>
<?php else : ?>
Выводим рекламу гостям
<?php endif; ?>

Ставлю галочку в чекбоксе или убираю, ничего не происходит постоянно для пользователя отображается - "Не выводим рекламу" Cry. Подскажите, пожалуйста, что не так делаю?

забыл еще одно уточнение для чекбоксов указать. Для каждого чекбокса созданного через это поле в конце основного ярлыка будет присоединяться префикс в зависимости от порядка этого чекбокса, т.е. для первого чекбокса 'rek_site_18_0', а для второго если он есть 'rek_site_18_1' и тд.
т.е. ваш код будет таким:

<?php if ( is_user_logged_in()) : // Выводим рекламу авторизаванным пользователям ?>
<?php 
$meta = get_the_author_meta('rek_site_18_0',$user_ID);
if($meta){
echo "Выводим рекламу, если поле активное";
}else{
echo "Не выводим рекламу";
}
?>
<?php else : ?>
Выводим рекламу гостям
<?php endif; ?>

0
greshnikk
не в сети 11 лет
На сайте с 09.01.2014
Участник
10
00:28

Всем спасибо! Последние варианты сработали. Но зато заметил баг в плагине, если созданный чекбокс после редактировать в админке, то при вкл/выкл его на странице ЛК пользователем не сохраняется его состояние и чекбокс постоянно в выбранном состоянии. Возможно это только у меня, т к пока мой сайт на локалке

0
Андрей CS
не в сети 3 часа
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16929
11
11:09

какое именно редактирование происходит?

0
greshnikk
не в сети 11 лет
На сайте с 09.01.2014
Участник
12
05:28

Вы не можете просматривать опубликованные ссылки

вот это поле если изменять, то чекбокс становиться постоянно активным

0
dan9
не в сети 11 лет
На сайте с 08.01.2014
Участник
Сообщения 17
13
05:59

greshnikk said

Вы не можете просматривать опубликованные ссылки

вот это поле если изменять, то чекбокс становиться постоянно активным

Должно быть как то так

<input type="checkbox" name="reklama" id="reklama" value="true" <?php if (esc_attr( get_the_author_meta( "reklama", $user->ID )) == "true") echo "checked"; ?> />

по умолчанию, когда поле не активное, его значение NULL. (никакого значения оно не имеет)

0
Котёнок, обыкновенный
не в сети 7 лет
На сайте с 25.03.2013
Участник
Сообщения 2
14
10:15

greshnikk said

Вы не можете просматривать опубликованные ссылки

вот это поле если изменять, то чекбокс становиться постоянно активным

Удалите это поле и создайте новое, но уже с необходимым содержимым. В текстовое поле вписывайте какое-то значение, типа "Да/Нет". Если чекбоксов должно быть несколько то разделяйте их значения знаком решетки

0
greshnikk
не в сети 11 лет
На сайте с 09.01.2014
Участник
15
06:42

demo said

greshnikk said

Вы не можете просматривать опубликованные ссылки

вот это поле если изменять, то чекбокс становиться постоянно активным

Удалите это поле и создайте новое, но уже с необходимым содержимым. В текстовое поле вписывайте какое-то значение, типа "Да/Нет". Если чекбоксов должно быть несколько то разделяйте их значения знаком решетки

Ну это понятно, я так и делаю. Но исправить то это надо в плагине все равно.

0
Андрей CS
не в сети 3 часа
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16929
16
13:20

Проверил произвести те же манипуляции:
1. Создал поле типа чекбокс
2. прописал для него значение 1, сохранил
3. зашел в профиль поставил галочку, сохранил
4. зашел в админку изменил значение на 2, сохранил
5. зашел в профиль, что вижу: чекбокс изменил значение на 2, галочка не стоит. Галочку можно снимать и ставить без проблем.
Ничего исправлять не требуется.

0
Тема закрыта. Публикация новых сообщений запрещена.