2012-07-19 3 views
1

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

В моей теме, в рамках цикла члены-loop.php, у меня есть следующий код:

// This one works 
<?php $ad = bp_get_member_profile_data('field=Member Directory Ad'); ?> 
// This one doesn't 
<?php $ad_expiry = bp_get_member_profile_data('field=Member Directory Ad Expiration'); ?> 

Там нет другого специального кода, чтобы это произошло. Я не вижу причин, почему $ ad_expiry пуст для члена, который определенно настроил его, особенно когда $ ad имеет правильное значение.

Копирование в код приятеля, данные расширенного профиля даты не возвращаются bp_get_member_profile_data(). Внутри xprofile_format_profile_field() значение «форматируется» по bp_format_time(), а выход пуст. Поэтому я предполагаю, что это ошибка приятеля.

ответ

1

Попробуйте обходной путь -

//you need to specify the $user_id 
$ad_expiry = xprofile_get_field_data('Member Directory Ad Expiration', $user_id); 
    // reformat, if you like 
$ad_expiry = strtotime($ad_expiry); 
echo date('m/d/Y', $ad_expiry); 

.

И спасибо за сообщение об ошибке на trac.

+0

Спасибо. Я закончил использование strtotime ($ members_template-> member-> profile_data [«Истечение срока действия каталога участников»] ['field_data']) – wtbgtr

1

Я, по крайней мере, вычислил ошибку. BuddyPress хранит вывод даты в виде строки типа «2012-07-19 00:00:00». bp_get_member_profile_data() извлекает это из базы данных, а затем передает его в файл xprofile_format_profile_field(), который передает его в bp_format_time(), который возвращает false, потому что значение не выполняет проверку is_numeric().

Смежные вопросы