我会创建一个自定义的帖子类型“tickets”-我发现只需使用CPT注册插件,然后删除它就更容易了。您可能更喜欢自己编写代码,在这种情况下,需要大量信息available on the Codex.
当该用户单击“加入”时,请使用以下内容:
//first define your post info
$post = array(
\'post_title\' => \'Ticket for \'.$eventname.\' (\'.date(\'r\').\')\',
\'post_type\' => \'ticket\',
\'post_status\' => \'publish\',
);
$RegisterTicket = wp_insert_post($post, false); // $post defined above
if (empty($RegisterTicket)) return \'Unable to create ticket in our system\'; //safeguard to explain or trace errors
update_post_meta($RegisterTicket, \'event_post_number\', $theEventPostID);
update_post_meta($RegisterTicket, \'state\', \'complete\'); // This extra meta can be used to change to things such as \'cancelled\', \'refunded\'.... anything you want to give extra info to the ticket
update_post_meta($RegisterTicket, \'user\', $TheUserID); //to assign the ticket to the user.
这就是我的做法,因为我发现使用自定义帖子可以为您提供更大的范围来单独编辑和更改票据,并将潜在损坏(断电、服务器问题等等)期间的损坏降至最低!
如果您正在将事件日志上的用户列表保存为列表,这是您保存可能很长的用户ID列表的唯一方法
Remember to to define all the variables mentioned in the code... 像$theEventPostID这样的东西可以很容易地定义为$theEventPostID = get_the_ID();
编辑:抱歉,我忘了添加有关此管理的任何内容。我使用Advanced Custom Fields 如果你像我一样,喜欢在你的帖子上删减和更改一些内容,并让最终用户的体验变得更轻松,那么这将节省大量的编码工作!你可以添加大量的元框和关系字段,这节省了很多时间,也是我最喜欢的插件之一。
没问题。。。关于向用户显示已注册的事件列表,您可以使用编写查询函数get_posts
:
$tickets_for_user = get_posts(array(
\'post_type\' => \'ticket\',
\'meta_query\' => array(
array(
\'key\' => \'user\',
\'value\' => $user_id
),
array(
\'key\' => \'state\',
\'value\' => \'complete\'
)
)
));