在页面上显示成员加入日期

时间:2012-05-16 作者:Oliver

我在用户配置文件中添加了一个自定义字段,用于询问用户加入我的俱乐部的日期。如何提取这些数据并显示在页面上以庆祝用户周年纪念?

(例如:对于五月,此页面将按姓名、月份和日期显示最初在五月加入的所有用户)

我知道我需要一个循环,只是不知道如何从profile字段中提取数据。

1 个回复
SO网友:Milo

您可以使用WP_User_Query 类来查询用户元,但是,查询加入日期与特定月份和任何年份匹配的用户列表的特定示例需要比使用WP_User_Query

首先,如果要查询此数据,则必须正确并严格执行日期格式。我建议使用jQuery datepicker小部件将日期输入到join date字段中。YYYY-MM-DD是标准的MySQL日期格式。

下面是一个简单查询的示例,它将加载本月加入的所有用户:

$first = new DateTime();
$first->modify( \'first day of this month\' );
$first = $first->format( \'Y-m-d\' );

$args = array(
    \'meta_key\' => \'join_date\',
    \'meta_value\' => $first,
    \'meta_compare\' => \'>=\',
);

$user_query = new WP_User_Query( $args );
示例2有一个更复杂的元查询,它将在特定日期之间加载用户:

$first = new DateTime();
$first->modify( \'first day of this month\' );
$first = $first->format( \'Y-m-d\' );
$last = new DateTime();
$last->modify( \'last day of this month\' );
$last = $last->format(\'Y-m-d\');

$args = array(
    \'meta_query\' => array(
        array(
            \'key\' => \'join_date\',
            \'value\' => array( $first, $last ),
            \'compare\' => \'BETWEEN\',
            \'type\' => \'DATE\'
        )

    )
);
$user_query = new WP_User_Query( $args );
示例3对于自定义查询,可以直接修改SQL。第一步是设置一个简单的查询:

$args = array(
    \'meta_key\' => \'join_date\',
    \'meta_value\' => 0,
);

$user_query = new WP_User_Query( $args );
$users = $user_query->get_results();

foreach( $users as $user ):
    echo $user->user_nicename;
    echo \' joined \';
    echo get_user_meta( $user->ID, \'join_date\', true );
endforeach;
接下来,我们向pre_user_query 要检查我们的简单查询,并修改SQL以仅匹配月份而忽略年份,请执行以下操作:

function wpse52318_user_query( $query ){
    if( $query->query_vars[\'meta_key\'] == \'join_date\' && $query->query_vars[\'meta_value\'] === 0 ):
        global $wpdb;
        $thismonth = date(\'m\');
        $query->query_where = "WHERE 1=1 AND ( $wpdb->usermeta.meta_key = \'join_date\' AND ( MONTH( $wpdb->usermeta.meta_value ) = $thismonth ) )";
    endif;
    return $query;
}
add_action( \'pre_user_query\', \'wpse52318_user_query\' );

结束

相关推荐

WordPress“the loop”中需要的简单Foreach循环帮助

我需要“循环”中的foreach循环This is my current code (index.php) :<?php if (have_posts()) : while (have_posts()) : the_post(); ?> <div><a href=\"<?php the_permalink(); ?>\" title=\"<?php get_the_title(); ?>\"> <?php the_title()