Мне нужно изменить функцию в теме buddypress (wordpress)
Я использую тему buddypress [buddyboss] ( http://buddyboss.com/). Основной причиной было то, что эта тема способна управлять картинной галереей (которая прекрасно работает).
Теперь я хочу вызвать эту функцию изображения в цикле членов. один из администраторов buddyboss сказал мне:
"Вам понадобятся функции из buddy_boss_pics.php. В частности, вам нужно использовать функцию buddyboss_pics_screen_picture_grid_content(), начиная со строки: 285. Вам нужно будет отредактировать файл для работы с циклом-членам, так как в настоящее время он использует display_user_id."
Вот как выглядит функция:
function buddyboss_pics_screen_picture_grid_content()
{
global $bp, $wpdb, $bbpics;
$wpdb->show_errors = BUDDY_BOSS_DEBUG;
$img_size = is_active_sidebar( 'Profile' ) ? 'buddyboss_pic_med' : 'buddyboss_pic_wide';
$gallery_class = is_active_sidebar( 'Profile' ) ? 'gallery has-sidebar' : 'gallery';
$user_id = $bp->displayed_user->id;
$activity_table = $wpdb->prefix."bp_activity";
$activity_meta_table = $wpdb->prefix."bp_activity_meta";
$pages_sql = "SELECT COUNT(*) FROM $activity_table a INNER JOIN $activity_meta_table am ON a.id = am.activity_id WHERE a.user_id = $user_id AND meta_key = 'bboss_pics_aid'";
$bbpics->grid_num_pics = $wpdb->get_var($pages_sql);
$bbpics->grid_current_page = isset( $_GET['page'] ) ? (int) $_GET['page'] : 1;
// Prepare a SQL query to retrieve the activity posts
// that have pictures associated with them
$sql = "SELECT a.*, am.meta_value FROM $activity_table a INNER JOIN $activity_meta_table am ON a.id = am.activity_id WHERE a.user_id = $user_id AND meta_key = 'bboss_pics_aid' ORDER BY a.date_recorded DESC";
buddy_boss_log("SQL: $sql");
$pics = $wpdb->get_results($sql,ARRAY_A);
$bbpics->grid_pagination = new BuddyBoss_Paginated( $pics, $bbpics->grid_pics_per_page, $bbpics->grid_current_page );
buddy_boss_log("RESULT: $pics");
// If we have results let's print out a simple grid
if ( !empty( $pics ) )
{
$bbpics->grid_had_pics = true;
$bbpics->grid_num_pics = count( $pics );
Любая помощь будет отличной, потому что мне действительно нужно это сделать!
2 ответа
Здесь функция buddyboss_pics_screen_picture_grid_content() в основном использует user_id и получает изображение из базы данных.
Просто вы вызвали функцию в цикле while в файле member-loop.php:buddyboss_pics_screen_picture_grid_content(bp_member_user_id())
Здесь передайте параметр member_user_id этой функции.
Немного отредактируйте главное buddyboss_pics_screen_picture_grid_content()
функция ниже:
Ниже изменения:
function buddyboss_pics_screen_picture_grid_content($user_id = null)
{
//Remove this code
$user_id = $bp->displayed_user->id;
//Put new Code
if (empty($user_id)) {
$user_id = $bp->displayed_user->id;
} else {
$user_id = $user_id;
}
}
Не проверено, но попробуйте это:
В цикле членов ищите
<?php
/***
* If you want to show specific profile fields here you can,
* but it'll add an extra query for each member in the loop
* (only one regadless of the number of fields you show):
*
* bp_member_profile_data( 'field=the field name' );
*/
?>
Добавить это перед закрывающим тегом php?>
buddyboss_pics_members_loop( bp_get_member_user_id() );
Скопируйте функцию buddyboss_pics_screen_picture_grid_content() в конец цикла членов.
Поместите его между тегами php и измените имя на buddyboss_pics_members_loop( $user_id)
и закомментируйте или удалите $user_id = $bp->display_user->id;