🎉 سال نو، مهارت نو، مشاوره رایگان نقشه راه برنامه نویسی (آفر ویژه ثبت نام قبل از افزایش قیمت 🔥)
۰ ثانیه
۰ دقیقه
۰ ساعت
۲ احمد اسماعیلی
جواب تمرین این جلسه
جامعه وردپرس (برنامه نویسی) ایجاد شده در ۱۶ خرداد ۱۴۰۰

سلام استاد.

بنده این تمرین رو با روش 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>

سلام خدمت شما. تمرین‌ها این جا بررسی نمیشن. حتما در بخش تمرین پاسخ خودتون رو ارسال کنید.

کیوان علی محمدی ۱۸ خرداد ۱۴۰۰، ۰۶:۲۳

برای این قسمت بخش ارسال تمرین وجود نداشت.

احمد اسماعیلی ۱۸ خرداد ۱۴۰۰، ۰۶:۳۳