0

I have a problem with listing my users, who have a birthday today (for this instance today is March 3rd).

I've created a custom field 'birth_date' using tutorial here with some minor tweaks.

My WP_User_Query doesn't show any users. Here's my code:

    $args = array(
    'meta_key' => 'birth_date',
    'meta_value' => array( 'day' => '03', 'month' => '03')
    );

    // The Query
    $user_query = new WP_User_Query( $args );

    // User Loop
    if ( ! empty( $user_query->results ) ) {
    foreach ( $user_query->results as $user ) {


    echo '<p>' . $user->display_name . '</p>';

    }
    } else {
    echo 'No users found.';
    }

Here is var_dump of 'birth_date':

    array(1) { [0]=>
    array(3) { 
              ["day"]=> string(2) "03" 
              ["month"]=> string(2) "03" 
              ["year"]=> string(4) "1992" 
              } }

I suspect there is a problem with the way I express 'meta_value' in $args, however my knowledge in PHP is very limited.

  • You can't save it as an array if you want to reliably query on that data, it needs to be a single yyyy-mm-dd value. – Milo Jun 5 '17 at 15:09
  • @Milo I've figure it out, gonna post my solution in a bit – ERDFX Jun 5 '17 at 15:30
0

Here is what I did and it worked for me:

$current_day = date("d");
$current_month = date("m");

$args = array(
'orderby' => 'login',
'order' => 'ASC',
);

// The Query
$user_query = new WP_User_Query( $args );

// User Loop
if ( ! empty( $user_query->results ) ) {
    foreach ( $user_query->results as $user ) {

        if ( $user->birth_date['day'] == $current_day &&
             $user->birth_date['month'] == $current_month )

         { echo '<span>' . $user->display_name . '</span>'; }   

    }
}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.