导语:有一位客户要求开发一个活动报名的页面,要求前台可以报名,后台可以清空和导出数据。叶子根据网上的资料,自己改了一些代码,修改了表名,屏蔽了导入功能。
说明与演示
该代码请放置在functions.php中,叶子只使用了导出功能,而且是导出的固定一个表wp_leafevent,如果你有多个表需要导出,请自行修改语句。导入功能屏蔽了,没有验证代码的正确性,如果需要导入功能,请自行恢复和验证。
具体的代码
function application_admin_pages() {
add_menu_page(__('活动信息'), __('活动信息'), 'manage_options', basename(__FILE__), 'application_landing_function');
}
add_action('admin_menu', 'application_admin_pages');
function application_admin_submenu() {
add_submenu_page( 'functions.php', 'import_export', '导出', 'manage_options', 'backup-page', 'application_import_export_page');
}
add_action('admin_menu', 'application_admin_submenu');
/* application_landing_function */
function application_landing_function() { ?>
<div class="wrap">
<h1>活动报名信息内容</h1>
<table>
<?php
global $wpdb;
$querystr = "SELECT id,post_id,author,author_name,name,phone,email,cre_date FROM wp_leafevent order by cre_date desc LIMIT 50";
$results = $wpdb->get_results($wpdb->prepare($querystr,$post_id),ARRAY_A);
echo '<tr>';
echo '<td>序号</td>'.'<td>活动页面编号</td>'.'<td>提交用户</td>'.'<td>提交用户</td>'.'<td>参加人</td>'.'<td>电话</td>'.'<td>电邮</td>'.'<td>创建时间</td>';
echo '</tr>';
foreach ($results as $r){
echo '<tr>';
echo '<td>'.$r['id'].'</td>'.'<td>'.$r['post_id'].'</td>'.'<td>'.$r['author'].'</td>'.'<td>'.$r['author_name'].'</td>'.'<td>'.$r['name'].'</td>'.'<td>'.$r['phone'].'</td>'.'<td>'.$r['email'].'</td>'.'<td>'.$r['cre_date'].'</td>';
echo '</tr>';
} ?>
</table>
</div>
<?php }
/* application_import_export_page */
function application_import_export_page() {?>
<div class="wrap">
<h1>活动信息导出</h1>
<!--h2>Import CSV</h2>
<form method="post" action="" method="post" enctype="multipart/form-data">
<fieldset>
<legend><strong>Choose a CSV (.csv) file to upload, then click Import .</strong></legend>
<input type="file" name="file" size="50" maxlength="100000" /><br/>
</fieldset>
<p class="submit">
<input type="submit" name="import" class="button button-primary button-import" value="Import" />
</p>
</form-->
<!-- End Import from HTML-->
<?php echo export_UI(); ?><!-- Export CSV HTML-->
<p></p>
<?php import_form_action();?><!-- Import form action -->
</div>
<script type="text/javascript" charset="utf-8">
$(document).on('click','input.button-import', function(){
if (!confirm("Are You Sure")) {
return false;
}
})
</script>
<?php }
/* Import Form Action */
function import_form_action() {
define('UPLOAD_PATH', dirname(__FILE__).'/upload/');
global $wpdb;
if ( count($_POST) > 0 && isset($_POST['import']) ) {
$up_info = $_FILES['file'];
if($up_info['error']>0) {
echo "Error: " . $up_info['error']. "<br />";
} else {
$file = fopen($up_info["tmp_name"],"r");
$count = 0;
$table_name = array();
$wpdb->query ('TRUNCATE TABLE wp_leafevent') ;
while(!feof($file) && $data = fgetcsv($file)) {
$column = count($data);
$result = array();
if($count==0 && !empty($data)) {
for($i=0;$i<$column;$i++){
array_push($table_name,$data[$i]);
}
} elseif ($count>0 && !empty($data)) {
for($i=0;$i<$column;$i++) {
array_push($result,$data[$i]);
}
$temp_result = array();
$i=0;
foreach($table_name as $table_name_key => $table_name_val) {
$temp_result[$table_name_val] = $result[$i];
$i++;
}
$res = $wpdb->insert( "_cwcustom_rebate_devices", $temp_result );
echo $res ? $count.' Succeed<br/>' : $count.' False<br/>';
}
$count++;
}
fclose($file);
}
}
}
/* Export */
define('CONST_CSV_SLUG', 'admin.php?page=backup-page&action=');
function export_UI() {
?>
<div id="wrapper">
<h2>导出 CSV</h2>
<div id="page">
<table cellspacing="0" class="wp-list-table widefat">
<thead>
<tr>
<th>序号</th>
<th>导出表到 CSV</th>
<th>清空表</th>
</tr>
</thead>
<tbody>
<?php
$array_table_name = array('1' => 'wp_leafevent');
foreach ($array_table_name as $serial_number => $table_name){?>
<tr>
<td><?php echo $serial_number;?></td>
<td><a class="button button-large" href="<?php echo CONST_CSV_SLUG.$table_name.'&eventtype=export';?>">导出 <strong> <?php echo $table_name;?></strong></a></td>
<td><a class="button button-large" href="<?php echo CONST_CSV_SLUG.$table_name.'&eventtype=truc';?>">清空 <strong> <?php echo $table_name;?></strong></a></td>
</tr>
<?php }
?>
</tbody>
</table>
</div>
</div>
<?php
}
/*Prompt to open/save exported data as .CSV file*/
function application_export(){
$getTable = isset($_REQUEST['action']) ? $_REQUEST['action'] : '';
$gettype = isset($_REQUEST['eventtype']) ? $_REQUEST['eventtype'] : '';
if ($getTable){echo csv_generate($getTable,$gettype);exit;}
}
add_action('init', 'application_export');
/* Convert table data into CSV format */
function csv_generate($getTable,$gettype){
ob_clean();
global $wpdb;
$field='';
$getField ='';
if($getTable){
if ($gettype=='export') {
$result = $wpdb->get_results("SELECT * FROM wp_leafevent",ARRAY_N);
$fieldsCount =8;
$csv_file_name = $getTable.'_'.date('Ymd_His').'.csv'; # CSV FILE NAME WILL BE table_name_yyyymmdd_hhmmss.csv
# GET FIELDS VALUES WITH LAST COMMA EXCLUDED
foreach($result as $row){
if(is_array($row)){
for($j = 0; $j < $fieldsCount; $j++){
if($j == 0) $fields .= "\n"; # FORCE NEW LINE IF LOOP COMPLETE
$value = str_replace(array("\n", "\n\r", "\r\n", "\r"), "\t", $row[$j]); # REPLACE NEW LINE WITH TAB
$value = str_getcsv ( $value , ",", "\"" , "\\"); # SEQUENCING DATA IN CSV FORMAT, REQUIRED PHP >= 5.3.0
$fields .= $value[0].','; # SEPARATING FIELDS WITH COMMA
}
$fields = substr_replace($fields, '', -1); # REMOVE EXTRA SPACE AT STRING END
}
}
header("Content-type: text/x-csv"); # DECLARING FILE TYPE
header("Content-Transfer-Encoding: binary");
header("Content-Disposition: attachment; filename=".$csv_file_name); # EXPORT GENERATED CSV FILE
header("Pragma: no-cache");
header("Expires: 0");
return $fields;
}
if ($gettype=='truc') {
$querystr = "truncate table wp_leafevent";
$results = $wpdb->query($querystr);
header("Location: /wp-admin/admin.php?page=functions.php");
return $results;
}
}
}
/* End Export*/
结束
你学会了么?如果需要讨论,请加入我们的QQ群。





4.8出错了