0

私はbuddypressテーマ[buddyboss](http://buddyboss.com/)を使用しています。主な理由は、このテーマが画像ギャラリーを管理できることでした(これはうまく機能します)。

ここで、members-loop内でそのpicture-functionを呼び出したいと思います。バディボス管理者の一人が私に言った:

「buddy_boss_pics.phpの関数が必要になります。具体的には、285行目から関数buddyboss_pics_screen_picture_grid_content()を使用する必要があります。現在displayed_user_idを使用しているため、members-loopで機能するようにファイルを編集する必要があります。」

関数は次のようになります。

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 );

私は本当にそれをする必要があるので、どんな助けも素晴らしいでしょう!

4

2 に答える 2

0

ここで、buddyboss_pics_screen_picture_grid_content()関数は、主にuser_idを使用して、データベースから画像を取得します。

member-loop.phpファイルのwhileループ内で関数を呼び出しただけです。 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;
    }

}  
于 2012-11-29T06:00:30.873 に答える
0

テストされていませんが、これを試してください:

メンバーループで、探します

                <?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() 関数を members-loop の一番下にコピーします。

php タグの間に入れて、名前を buddyboss_pics_members_loop( $user_id ) に変更します。

$user_id = $bp->displayed_user->id; をコメントアウトまたは削除します。

于 2012-04-17T19:05:31.980 に答える