如何获取wp_usermeta内特定meta_key的meta_值

时间:2015-09-02 作者:Amine Richer

使用S2member插件,上次付款时间的meta\\u键自动存储在WordPress DB中wp\\u usermeta表下(自定义字段称为wp\\u medsmember\\u last\\u payment\\u time)。

在wp\\u usermeta中,名为meta\\u key的列的值为“wp\\u medsmember\\u last\\u payment\\u time”。但我试图收集的内容是它的meta\\u值等价物。The meta_value

我没有找到如何将这个meta\\u值调用到下面的函数中,在这里我使用上次付款时间的日期开始对用户创建的帖子进行新计数。

function check_post_limit(){
   if(current_user_can(\'edit_posts\')) {
   global $userdata;
   global $post_type;
   global $wpdb;
   $postintervall = date(\'Y-m-d H:i:s\', $s2member_last_payment_time );
   $item_count = $wpdb->get_var( "SELECT count(*) FROM $wpdb->posts WHERE post_status = \'publish\' AND post_author = $userdata->ID AND post_date > \'$postintervall\'" );
    if(( $item_count >= 2 ) && (current_user_is("s2member_level1")) )
  { wp_die( \'Do not create too much posts.\',\'check-limit\' ); }

return;   }
}
有什么建议吗?谢谢

2 个回复
最合适的回答,由SO网友:Amine Richer 整理而成

@克里斯蒂安·拉瓦克谢谢你的提示;)

实际上,我成功地解决了阻止此函数的问题(显示上面隐藏的注释)。如果这对任何人都有帮助,以下是最终工作代码:

function check_post_limit() {
    if ( current_user_can( \'edit_posts\' ) ) {
        global $userdata;
        global $wpdb;
        $s2member_last_payment_time = get_user_meta( get_current_user_id(), 
            \'wp_s2member_last_payment_time\', true );
        $postintervall = date( \'Y-m-d H:i:s\', $s2member_last_payment_time );
        $item_count = $wpdb->get_var( "SELECT count(*) FROM $wpdb->posts 
            WHERE post_status = \'publish\' AND post_author = $userdata->ID 
            AND post_date > \'$postintervall\'" );
        if ( ( $item_count >= 2 ) && ( current_user_is( "s2member_level1" ) ) ) { 
            wp_die( \'Do not create too much posts.\', \'check-limit\' ); 
        }
        return;   
    }
}

SO网友:Cristián Lávaque

@Amine,元域的名称是s2member_last_payment_time, 因此,请不要使用wp_med 添加前缀,看看是否有效。

$2member_last_payment_time = get_user_meta(get_current_user_id(), \'s2member_last_payment_time\', true);
您还可以尝试s2Member的功能get_user_field: http://www.s2member.com/codex/stable/s2member/api_functions/package-functions/#src_doc_get_user_field%28%29

$s2member_last_payment_time = get_user_field (\'s2member_last_payment_time\');
如果没有实际发生付款,则不会记录付款时间,但如果有,则会有时间戳。

我希望这能有所帮助。:)

相关推荐

未受保护的页面在发布到Facebook时显示为受保护(S2Member)

我最近删除了以下页面上的限制:http://www.boulderwritersworkshop.org/2012/10/21/david-jessup/我现在可以在不登录的情况下查看它。然而,如果我将此URL发布到我的Facebook墙,它会显示“加入”页面,好像Facebook认为我需要登录查看该内容。我尝试清除快速缓存并从远程计算机加载页面——所有人都可以看到。显然除了脸书。想法?