it-swarm.com.de

Listet Benutzer nach meta_key und meta_value auf

Die folgende Funktion zeigt eine Liste der Benutzer basierend auf ihren Metadaten an:

<?php function get_users_by_meta_data( $meta_key, $meta_value ) {

    $user_query = new WP_User_Query(
        array(
            'meta_key'    =>    $meta_key,
            'meta_value'    =>  $meta_value
        )
    );

    $users = $user_query->get_results();

    return $users;

} ?>

Ich benutze die folgende Funktion, wobei "school_division" der meta_key und "Richmond" der meta_value ist:

<h2>REGION 2</h2>
<ul>
    <?php foreach( get_users_by_meta_data( 'school_division', 'Richmond') as $user ) { ?>

        <li><?php echo $user->first_name; ?> <?php echo $user->last_name; ?></li>  

    <?php } ?>
</ul>

Das listet alle Benutzer in der Richmond-Schulabteilung korrekt auf. Ich möchte aber nicht "Richmond" (den meta_value) angeben müssen. Ich möchte jeden meta_value in der "school_division" meta_key durchlaufen und dann die zugeordneten Benutzer auflisten. Die Ausgabe würde also ungefähr so ​​aussehen:

Richmond

  • Jane Doe
  • John Doe

Chicago

  • Julie Doe
  • Jim Doe
  • Jeff Doe

New York

  • Joe Doe
  • Jenny Doe

Ich denke, ich muss eine weitere foreach-Schleife hinzufügen. Aber ich bin nicht sicher, wie ich die Funktion umschreiben soll, um all das zu tun. Vielleicht ist die Funktion, die ich benutze, für diesen Zweck rückwärts. Vielen Dank für jede Hilfe!

****** UPDATE *********

Ich habe einige Änderungen vorgenommen, die hoffentlich effizienter sind (?). Nachfolgend ist mein aktualisierter Code aufgeführt. Es gibt alle Benutzer in Region 2 zurück, gruppiert nach ihrer Schulabteilungsstadt.

<?php function get_users_by_meta_data( $region, $division ) {

$user_query = new WP_User_Query( 
    array(
        'meta_query'    => array(
            'relation'  => 'AND',
            array( 
                'key'     => 'REGION',
                'value'   => $region,
            ),
            array(
                'key'     => 'SCHOOL_DIVISION',
                'value'   => $division
            )
        )
    ) 
);

// Get the results from the query
    $users = $user_query->get_results();

    return $users;
}
?>

<h1> REGION 2</h2>
<?php 

$cities = $wpdb->get_col("SELECT DISTINCT meta_value FROM $wpdb->usermeta WHERE meta_key = 'SCHOOL_DIVISION'" );

foreach ( $cities as $city ) { ?>

    <h2><?php echo $city; ?></h2>
    <ul><?php
    foreach ( get_users_by_meta_data( '2', $city ) as $user ) { ?>
        <li><?php echo $user->first_name; ?> <?php echo $user->last_name; ?></li>  
    <?php } ?>
    </ul><?php
}
?>    
1
LBF

Was ist mit der Anordnung der Stadt/Regionen/was auch immer in einem Array, das Sie durchlaufen können? Etwas wie das:

$cities = array( 'Richmond', 'Chicago', 'New York' );
foreach ( $cities as $city ) { ?>

    <h2><?php echo $city; ?></h2>
    <ul><?php
    foreach ( get_users_by_meta_data( 'school_division', $city ) as $user ) { ?>
        <li><?php echo $user->first_name; ?> <?php echo $user->last_name; ?></li>  
    <?php } ?>
    </ul><?php
}
0
butlerblog