Hallo wordpressler,
ich arbeite zur Zeit an meinem ersten Buddypress Projekt. Ich habe die Benutzer mit einem erforderlichen Profile field in verschiedene Benutzergruppen gegliedert.
Um diese Gruppen als Übersichten anzeigen zu können habe ich für jede Gruppe eine Seite und ein Seiten Template erstellt.
Dort habe ich den code aus der Buddypress member-loop.php benutzt und den code innerhalb von <ul id="members-list" class="item-list" role="main"> gelöscht. Dort habe ich dann den Loop aus dem ersten Beitrag von dieser Seite genommen und meine Profile field Daten eingesetzt. Und die Funktion in die functions.php eingefügt.
Wenn es Benutzer mit dem betreffenden Value für das Profile field gibt, funktioniert das ganze ohne Probleme.
ABER wenn es keine Benutzer mit dem Value gibt, werden auf der Seite alle registrierten Benutzer angezeigt.
Da ich mich nur wenig mit php auskenne, hoffe ich, dass mir hier jemand helfen kann.
Würde mich sehr über Antworten freuen.
Mona
Hier nochmal meine Template-Datei:
<?php
/*
Template Name: Benutzergruppe
*/
?>
<?php get_header() ?>
<div id="content">
<div class="padder">
<?php do_action( 'bp_before_blog_page' ) ?>
<div class="page" id="blog-page" role="main">
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<h2 class="pagetitle"><?php the_title(); ?></h2>
<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<div class="bands">
<!-- Loop Start -->
<?php do_action( 'bp_before_members_loop' ); ?>
<?php if ( bp_has_members( bp_ajax_querystring( 'members' ) ) ) : ?>
<div id="pag-top" class="pagination">
<div class="pag-count" id="member-dir-count-top">
<?php bp_members_pagination_count(); ?>
</div>
<div class="pagination-links" id="member-dir-pag-top">
<?php bp_members_pagination_links(); ?>
</div>
</div>
<?php do_action( 'bp_before_directory_members_list' ); ?>
<ul id="list" >
<?php if (bp_has_members( array( 'include' => include_by_meta('Profilefieldvalue', 'Profilefieldname'), 'type' => 'alphabetical') )) : ?>
<?php while (bp_members()) : bp_the_member() ; ?>
<li>
<div class="view view-first">
<a href="<?php bp_member_permalink(); ?>" ><?php bp_member_avatar('type=full&width=150&height=150'); ?></a>
<a href="<?php bp_member_permalink(); ?>"><div class="mask">
<h2><?php bp_member_name(); ?></h2>
<p><?php $dname = bp_get_member_profile_data( 'field=Genre' ); echo $dname; ?> </p>
</a></div>
<?php do_action( 'bp_directory_members_item' ); ?>
<?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 regardless of the number of fields you show):
*
* bp_member_profile_data( 'field=the field name' );
*/
?>
</div>
</li>
<?php endwhile; ?>
<?php endif; ?>
</ul>
<div id="clear"></div>
<?php do_action( 'bp_after_directory_members_list' ); ?>
<?php bp_member_hidden_fields(); ?>
<div id="pag-bottom" class="pagination">
<div class="pag-count" id="member-dir-count-bottom">
<?php bp_members_pagination_count(); ?>
</div>
<div class="pagination-links" id="member-dir-pag-bottom">
<?php bp_members_pagination_links(); ?>
</div>
</div>
<?php else: ?>
<div id="message" class="info">
<p><?php _e( "Sorry, no members were found.", 'buddypress' ); ?></p>
</div>
<?php endif; ?>
<?php do_action( 'bp_after_members_loop' ); ?>
<!-- Loop End -->
<?php wp_link_pages( array( 'before' => '<div class="page-link"><p>' . __( 'Pages: ', 'buddypress' ), 'after' => '</p></div>', 'next_or_number' => 'number' ) ); ?>
</div>
</div>
<?php endwhile; endif; ?>
</div><!-- .page -->
<?php do_action( 'bp_after_blog_page' ) ?>
</div><!-- .padder -->
</div><!-- #content -->
<?php get_sidebar() ?>
<?php get_footer(); ?>
Alles anzeigen