سلام استاد.
بنده این تمرین رو با روش switch بازنویسی کردم و اینجا میذارم. لطفا نظرتون رو بدید.
در ضمن به اروری برخورد نکردم و بدون مشکل اجرا میشه. فقط میخوام بدونم درست انجام دادم از لحاظ استاندارد یا خیر؟؟
ممنون
در فایل main.php:
<div class="wrap">
<h1> لیست اطلاعات </h1>
<a href="<?php echo add_query_arg(['action'=>'add']); ?>">اضافه کردن آیتم جدید</a>
<table class="widefat">
<thead>
<tr>
<td>شناسه</td>
<td>نام</td>
<td>نام خانوادگی</td>
<td>موبایل</td>
<td>عملیات</td>
</tr>
</thead>
<tbody>
<?php foreach ( $samples as $sample ) : ?>
<tr>
<td><?php echo $sample->ID; ?></td>
<td><?php echo $sample->firstName; ?></td>
<td><?php echo $sample->lastName; ?></td>
<td><?php echo $sample->mobile; ?></td>
<td>
<a href="<?php echo add_query_arg(['action' => 'edit', 'item' => $sample->ID]); ?>">
ویرایش
</a>
<a href="<?php echo add_query_arg(['action' => 'delete', 'item' => $sample->ID]); ?>">
حذف کردن
</a>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
در فایل menu.php:
<?php
function wp_apis_register_menus() {
add_menu_page(
'پلاگین سفارشی',
'پلاگین سفارشی',
'manage_options',
'wp_apis_admin',
'wp_apis_main_menu_handler'
);
add_submenu_page(
'wp_apis_admin',
'تنظیمات',
'تنظیمات',
'manage_options',
'wp_apis_general',
'wp_apis_general_page'
);
}
function wp_apis_main_menu_handler() {
global $wpdb;
if ( isset( $_GET['action'] ) ) {
$action = $_GET['action'];
switch ($action){
case "delete":
$item = intval( $_GET['item'] );
if ( $item > 0 ) {
$wpdb->delete( $wpdb->prefix . 'sample', [ 'ID' => $item ] );
}
$samples = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}sample" );
include WP_APIS_TPL . '/admin/menus/main.php';
break;
case "add":
if ( isset( $_POST['saveData'] ) ) {
$wpdb->insert( $wpdb->prefix . 'sample', [
'firstName' => $_POST['firstName'],
'lastName' => $_POST['lastName'],
'mobile' => $_POST['mobile']
] );
ob_clean();
$redirect = site_url('/wp-admin/admin.php?page=wp_apis_admin');
wp_redirect( $redirect );
exit;
}
include WP_APIS_TPL . '/admin/menus/add.php';
break;
case "edit":
$item= intval( $_GET['item'] );
if ( $item > 0 && isset( $_POST['updateData'] ) ) {
$wpdb->update( $wpdb->prefix . 'sample',
[
'firstName' => $_POST['firstName'],
'lastName' => $_POST['lastName'],
'mobile' => $_POST['mobile']
],
['ID'=>$item]
);
ob_clean();
$redirect = site_url('/wp-admin/admin.php?page=wp_apis_admin');
wp_redirect( $redirect );
exit;
}
$sample = $wpdb->get_row( "SELECT * FROM {$wpdb->prefix}sample WHERE `ID`=$item" );
include WP_APIS_TPL . '/admin/menus/edit.php';
break;
}
} else {
$samples = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}sample" );
include WP_APIS_TPL . '/admin/menus/main.php';
}
}
function wp_apis_general_page() {
if ( isset( $_POST['saveSetting'] ) ) {
if ( isset( $_POST['is_plugin_active'] ) ) {
update_option( 'wp_apis_is_active', 1 );
} else {
delete_option( 'wp_apis_is_active' );
}
}
$current_plugin_status = get_option( 'wp_apis_is_active', 0 );
include WP_APIS_TPL . '/admin/menus/general.php';
}
add_action( 'admin_menu', 'wp_apis_register_menus' );
function my_custom_redirect() {
ob_start();
}
add_action('init', 'my_custom_redirect');
در فایل edit.php:
<div class="wrap">
<h1>برورسانی آیتم</h1>
<form method="post">
<table class="form-table">
<tr valign="top">
<th scope="row">نام</th>
<td>
<input type="text" name="firstName" value="<?php echo $sample->firstName; ?>">
</td>
</tr>
<tr valign="top">
<th scope="row">نام خانوادگی</th>
<td>
<input type="text" name="lastName"value="<?php echo $sample->lastName; ?>">
</td>
</tr>
<tr valign="top">
<th scope="row">شماره همراه</th>
<td>
<input type="text" name="mobile"value="<?php echo $sample->mobile; ?>">
</td>
</tr>
<tr valign="top">
<th scope="row"></th>
<td>
<input type="submit" class="button button-primary" name="updateData" value="بروز رسانی">
</td>
</tr>
</table>
</form>
</div>
فایل add.php:
<div class="wrap">
<h1>اضافه کردن آیتم جدید</h1>
<form method="post">
<table class="form-table">
<tr valign="top">
<th scope="row">نام</th>
<td>
<input type="text" name="firstName">
</td>
</tr>
<tr valign="top">
<th scope="row">نام خانوادگی</th>
<td>
<input type="text" name="lastName">
</td>
</tr>
<tr valign="top">
<th scope="row">شماره همراه</th>
<td>
<input type="text" name="mobile">
</td>
</tr>
<tr valign="top">
<th scope="row"></th>
<td>
<input type="submit" class="button button-primary" name="saveData" value="ذخیره سازی">
</td>
</tr>
</table>
</form>
</div>