限制wordpress用户的每日门票限额

时间:2015-04-07 12:48:36

标签: php mysql wordpress

所以,基本上我有一个用户可以打印停车验证票的页面,但是每天只允许他们两次。

有什么方法可以在按钮"打印"单击以将其记录在DB中,然后如果计数器是> 2在最后一天它禁用该页面并返回一条消息?

2 个答案:

答案 0 :(得分:1)

如果您向我们提供有关如何实施此问题的详细信息,我们可以提供更多帮助。

我确定你需要将它作为插件来创建并在安装时创建一个额外的表。 WP Codex https://codex.wordpress.org/Creating_Tables_with_Plugins

详细解释了这一点

然后我创建一个函数,在该日志表上添加一个新条目,其中包含用户ID和日期AND,检查给定ID和日期的行数。这是wpdb类更新表的WP Codex页面:https://codex.wordpress.org/Class_Reference/wpdb

我从我的custom.php文件中调用它如果计数是> 2,我会使用不同的渲染顺序。也许将观点分成两部分并将其包括在内以使其更具可持续性。

<强>编辑

示例:

创建激活表:

function myPlugin_install() {
  global $wpdb;
  $tbl = $wpdb->prefix . 'myPlugin_log'; // Or anything you want

  $sql = "CREATE TABLE $tbl ......" // Define your table structure
  require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
  dbDelta( $sql ); // Use the upgrade API to create the table

}
register_activation_hook( __FILE__ , 'myPlugin_install' );  

如何插入行:

function logNewEntry() {
  global $wpdb;
  $tbl = $wpdb->prefix . 'myPlugin_log';
  $userID = get_current_user_id(); 
  $wpdb->insert(
    $tbl,
    // if you defined 'user' and 'time' as the fields to hold this info
    array( 'user'=>$userID, 'time'=>current_time( 'mysql' )  )
  );
}

答案 1 :(得分:0)

所以我想出来了,无需编写插件或任何东西。我刚用这个按钮发了POST,所以它也是触发器,这里是实际的代码(假设你已经有数据库连接,并且你创建了表,它就是在这个帖子类型调用的模板文件中) :

//start checking the DB
$bigBang = strtotime('-1 day');
$guyToKill = $username;
$fireStuff = "Select count(*) as c from wp_posjete_parking where thisGuy='$guyToKill' and thisDate>'$bigBang'";
$resultGotBack = @mysql_query($fireStuff);
$final = mysql_fetch_assoc($resultGotBack);

//kill old entries
$doomsDay = strtotime("-2 days");
mysql_query('delete from WP_TABLE_NAME where thisDate<$doomsDay');

//condition
if ($final['c'] > 2){
die ('<p style="color:red;font-weight:900;">Daily quata exceeded</p>'); //kill it
} else {
//your stuff here
echo "<p>You have done this " .$red['c']. " out of 2 times allowed.</p>";
    }

//trigger
<form method="post" action="">
<ingput name="triggerSomeStuff" value="Trigger" />
</form>

<?php if (isset($_POST['trigger'])) {

 $thisGuy = $username; //username got from WP 
 $thisDate = time();

$wpdb->insert('WP_TABLE_NAME',array( 'thisGuy'=>$thisGuy, thisDate'=>$thisDate),
array('%s', '%s')
);}
?>