با سلام خدمت دوستان از آنجا كه منابع فارسي در اين زمينه بسيار محدود مي باشد به فكر اين افتادم كه اين تاپيك ايجاد كنم
وردپرس توابعي براي اين كار در اختيار ما قرار داده كه اين توابع به اين شرح مي باشد
get_option => تنظيمات مورد نظر را فراخواني مي كند
get_settings => مورد استفاده قرار دادن خواص محيط ايجاد شده
update_option => براي تغيير خواص يك محيط كه ايجاد شده است
delete_option => براي حذف خواص يك محيط كه ايجاد شده است
به وسله اين توابع مي توانيم تنظيمات خود را اعمال و ست كنيم در اينجا يه نمونه پنل ايجاد مي كنيم تا فهم آموزش راحت تر شود پنل كه در اينجا ايجاد مي كنيم چند فيلد ساده مي باشد و شما مي توانيد اين پنل را افزايش دهيد
براي راحتي كار خود نام پوسته و مخفف نام پوسته را درون متغييري دخيره مي كنيم و بعد مي بايست آرايه چند بعدي را تعريف كنيم كه حاوي چند خصوصيت كه در ادامه برسي مي كنيم مي باشند كه كد آن به صورت زير مي باشد
$themename = "name_theme";
$shortname = "NT";
$options = array (
array( "name" => $themename."تنظيمات ",
"type" => "title"),
array("name"=>"Favicon",
"desc"=>"آدرس آيكون سايت",
"id"=>$shortname."_favicon",
"type"=>"text",
"std"=>"defultUrl"
),
array("name"=>"text footer",
"desc"=>"متن درون فوتر را وارد كنيد",
"id"=>$shortname."_text_footer",
"type"=>"textarea",
"std"=>"كليه حقوق اين سايت محفوظ مي باشد"
)
);
همان طور كه در كد فوق ملاحظه مي كنيد ما يك آرايه چند بعدي با نام options ايجاد كرديم كه اين آرايه خود شامل آرايه ديگر نيز مي باشد اين آرايه ها داراي خانه هايي با نام هاي مشخص مي باشد كه اين نام ها به اين شرح مي باشند
name => نام فيلد و يا عنصر مورد نظر
type => نوع فيلد يا عنصر مورد نظر
desc => توضيحات
id => نام مشخصه كه براي شناسايي آن فيلد مورد استفاده قرار مي گيرد اين نام يكتا و نبايد تكراري باشد
std => مقدار پيش فرض
مرحله بعد ايجاد صفحه مديريت مي باشد
در اين مرحله صفحه و فرمي كه مي خواهيم نمايش داده شود را ايجاد مي كنيم كه كد هاي اين صفحه به اين شرح مي باشد
function page_admin() {
global $themename, $shortname, $options;
if ($_REQUEST['saved'])
{
echo '<div id="message" class="updated fade">
<p><strong> تنظيمات قالب '.$themename.' با موفقيت اعمال شد.</strong>
</p></div>';
}
if ($_REQUEST['reset'])
{
echo '<div id="message" class="updated fade">
<p><strong> تنظيمات قالب '.$themename.' با موفقيت به حالت اوليه باز گشت.</strong>
</p></div>';
}
?>
<h2>تنظيمات پوسته .<?php echo $themename ?></h2>
<form method="post">
<?php
foreach($options as $value)
{
switch($value['type'])
{
case "title":
?>
<h4><?php echo $value['name']?></h4>
<?php
break;
case"text":
?>
<label for="<?php echo $value['id']?>"><?php echo $value['name']?></label>
<input type="<?php echo $value['type']?>" name="<?php echo $value['id']; ?>"
id="<?php echo $value['id']?>" value="<?php if ( get_settings( $value['id'])!= "")
{
echo stripslashes(get_settings( $value['id']) );
} else {
echo $value['std']; }
?>" />
<p><?php echo $value['desc']?></p>
<hr/>
<?php
break;
case"textarea":
?>
<label for="<?php echo $value['id']?>"><?php echo $value['name']?></label>
<textarea name="<?php echo $value['id']; ?>" id="<?php echo $value['id']?>">
<?php if ( get_settings( $value['id'])!= "")
{
echo stripslashes(get_settings( $value['id']));
} else {
echo $value['std']; }
?>
</textarea>
<p><?php echo $value['desc']?></p>
<hr/>
<?php
break;
default:
break;
}
}?>
<p class="box">
<input type="hidden" name="action" value="save" />
<input type="submit" value="ذخيره تنظيمات" />
</form>
<form method="post">
<input name="reset" type="submit" class="reset" value="تنظيمات اوليه" />
<input type="hidden" name="action" value="reset" />
</p>
</form>
<?php }
همان طور كه در كد فوق ملاحظه مي كنيد ابتدا ما برسي مي كنيم كه متغيير action كه در آدرس بار صفحه مي باشد چه مقدار است كه در صورت مقدارsave يا reset باشد كدهاي درون آن قسمت اجرا و پيغام مربوطه در صفحه نمايش داده مي شود. مرحله بعد به وسيله فرمان foreach بر روي خانه هاي آرايه options حركت و مقدار را درون متغيير value دخيره ميكند كه خروجي يك آرايه ديگر است وبعد مقدار خانه type اين آرايه به وسيله دستور switch برسي مي شود كه در صورت برابر بودن با مقدار case دستورات آن قسمت را اجرا مي كند نكته ديگر در كدهاي بالا اين است كه ما برسي مي كنيم كه در صورتي كه اين آرايه قبلاً مقدار دهي شده باشد آن مفدار را مي گذاريم و در غيره اين صورت مقدار پيش فرض را مي گذاريم
مرحله بعد برسي فرم ارسالي
در اين قسمت چك ميشود كه ورودي از كدام فرم بوده است كه كدهاي آن به اين صورت مي باشد
function function_add_admin() {
global $themename, $shortname, $options;
if ( $_GET['page'] == basename(__FILE__) )
{
if ( 'save' == $_REQUEST['action'] )
{
foreach ($options as $value)
{
update_option($value['id'], $_REQUEST[$value['id']]);
}
foreach ($options as $value)
{
if(isset($_REQUEST[ $value['id']]))
{
update_option($value['id'],$_REQUEST[$value['id']]);
}
else
{
delete_option( $value['id'] );
}
}
header("Location: admin.php?page=functions.php&saved=true");
die;
}
else if( 'reset' == $_REQUEST['action'] )
{
foreach ($options as $value)
{
delete_option( $value['id'] );
}
header("Location: admin.php?page=functions.php&reset=true");
die;
}
}
add_theme_page($themename,"تنظيمات پوسته",10, basename(__FILE__), 'page_admin');
}
در كدهاي بالا ابتدا چك مي شود كه كدام فرم كاربر را به اين قسمت هدايت كرده است كه در صورت كه از فرم save باشد اطلاعات را درون فرم دخيره مي شود و مقدار true را باز مي گرداند و در صورت از فرم reset باشد اطلاعات را پاك مي كند و مقدار true را باز مي گرداند. دركدهاي فوق تابعي وجود دارد به نام add_theme_page كه به وسيله اين تابع لينك فرم در منو پنل وردپرس قرار مي گيرد كه كاربر را به وسيله آن به فرم هدايت مي كند توابع ديگري نيز براي اين كار وجود دارند كه عبارتند از
مرحله آخر فراخواني تابع مي باشد كه به وسيله تابه زير انجام مي شود
add_action('admin_menu', 'function_add_admin');
از آنجا كه كار آدمي بي نقص نيست ممنون مي شم از دوستان كه در صورت وجود مشكل آن را مطرح كنند موفق و پيروز باشيد