همه ی ما از قدرت و انعطاف پذیری باور نکردنی وردپرس با خبریم، که یکی از بزرگترین دلایل محبوبیت آن در میان کاربران خود است. اگر به دلایل انعطاف پذیری وردپرس نگاه کنیم اولین چیزی که به ذهنمان میرسد زمینه دلخواه است. زمینههای دلخواه شما را قادر به اضافه کردن هر گونه اطلاعات اضافی به پستها و صفحات میسازند. مانند این که متغییرهای خود رو برای پستها و صفحات تعریف میکنیم. زمینههای دلخواه یکی از قدرتمند ترین ابزارها برای سفارشی کردن قالبهای شماست.

نکته: در این مثالها که برای زمینه ی دلخواه آماده شده است، من اضافه کردن ۵ زمینه ی دلخواه رو توضیح خواهم داد.
ما به دو دلیل میخواهیم زمینههای دلخواه را به یک بخش جداگانه در قسمت ارسال پست تبدیل کنیم:
- دلیل ۱: این نشان میدهد که تمام زمینههای سفارشی در یک منو باز شو نشان داده میشوند که کاربر میتواند آن را انتخاب و مقدار دلخواه خود را به آن بدهد. البته این کار احتمال خطا را بالا میبرد یعنی کاربر با انتخاب کردن زمینه نامناسب و یا وارد کردن مقدار نامناسب خطا ایجاد میکنند. عکس زیر تصویر انتخابی یک زمینه ی دلخواه است.
دلیل ۲: همچنین گاهی اوقات برای ساده تر کردن کارها برای کاربران و اضافه کردن توضیحات خاص برای آنها ورودیهای دلخواه ایجاد میکنیم. برای یک کاربر معمولی حتما استفاده از ورودیهای دلخواه ساده تر از زمینههای دلخواه خواهد بود. با کمیاطلاعات PHPمیتوانید زمینه دلخواه را به یک طرح ساده تبدیل کنید.
ارائه زمینههای دلخواه به شیوه ای مناسب و زمینههای مرتبط با گروه شما نیاز به اضافه کردن قطعه کدهای زیر را به قالب functions.php دارد. \wp-content\themes\your_theme\functions.php
قدم اول
یک آرایه برای تعریف زمینه دلخواه و تولید اطلاعات آماده میکنیم.
$arr_sample_details =
array (
"sample-url-input" => array(
"name" => "sample-url-input", // custom field name i.e. the KEY
"type" => "input", // type of custom field i.e. required form's element type could be input/textarea/select etc ...
"title" => "آدرس نمونه", // title to be used for the key i.e. form's label
"description" => "", // field description (if any)
"scope" => array("post","page")), // define the scope in posts/pages
"sample-url-input-1" => array(
"name" => "sample-url-input-1",
"type" => "input",
"title" => "آدرس نمونه ۱",
"description" => "",
"scope" => array("post","page")),
"sample-url-input-2" => array(
"name" => "sample-url-input-1",
"type" => "input",
"title" => "آدرس نمونه ۳",
"description" => "",
"scope" => array("post","page")),
"sample-url-input-3" => array(
"name" => "sample-url-input-3",
"type" => "input",
"title" => "آدرس نمونه ۳",
"description" => "توضیحات نمونه",
"scope" => array("post","page")),
"sample-url-input-4" => array(
"name" => "sample-url-input-4",
"type" => "input",
"title" => "آدرس نمونه ۴",
"description" => "",
"scope" => array("post","page"))
);
قدم دوم
ایجاد تابع برای تولید کردن قالب مورد نیاز آریه ی بالا.
function generate_sample_form() {
global $post, $arr_sample_details;
foreach($arr_sample_details as $meta_box) {
echo'<input type="hidden" name="'.$meta_box['name'].'_noncename" id="'.$meta_box['name'].'_noncename" value="'.wp_create_nonce( plugin_basename(__FILE__) ).'" />';
echo'<div><span style="width:200px; float:right">'.$meta_box['title'].'</span>';
if( $meta_box['type'] == "input" ) {
$meta_box_value = get_post_meta($post->ID, $meta_box['name'], true);
if($meta_box_value == "")
$meta_box_value = $meta_box['std'];
echo'<input type="text" name="'.$meta_box['name'].'" value="'.$meta_box_value.'" size="98" /><br />';
} elseif ( $meta_box['type'] == "select" ) {
echo'<select name="'.$meta_box['name'].'">';
foreach ($meta_box['options'] as $option) {
echo'<option';
if ( get_post_meta($post->ID, $meta_box['name'], true) == $option ) {
echo ' selected="selected"';
} elseif ( $option == $meta_box['std'] ) {
echo ' selected="selected"';
}
echo'>'. $option .'</option>';
}
echo'</select>';
}
echo '</div>';
echo'<p><label for="'.$meta_box['name'].'">'.$meta_box['description'].'</label></p>';
}
}
قدم سوم
تابع برای ذخیره کردن اطلاعات موجود در پست.
function save_form_data( $post_id ) {
global $post, $arr_sample_details;
foreach($arr_sample_details as $meta_box) {
if ( !wp_verify_nonce( $_POST[$meta_box['name'].'_noncename'], plugin_basename(__FILE__) )) {
return $post_id;
}
if ( 'page' == $_POST['post_type'] ) {
if ( !current_user_can( 'edit_page', $post_id ))
return $post_id;
} else {
if ( !current_user_can( 'edit_post', $post_id ))
return $post_id;
}
$data = $_POST[$meta_box['name']];
if(get_post_meta($post_id, $meta_box['name']) == "")
add_post_meta($post_id, $meta_box['name'], $data, true);
elseif($data != get_post_meta($post_id, $meta_box['name'], true))
update_post_meta($post_id, $meta_box['name'], $data);
elseif($data == "")
delete_post_meta($post_id, $meta_box['name'], get_post_meta($post_id, $meta_box['name'], true));
}
}
قدم چهارم
تابع برای ایجاد زمینه جعبه ی متا.
function create_meta_box() {
global $theme_name, $arr_sample_details;
if (function_exists('add_meta_box')) {
add_meta_box( 'my-custom-fields', 'آدرس نمونهها', 'generate_sample_form', 'post', 'normal', 'low' );
}
}
در آخر هم اضافه کردن اکشنها برای فعالیت توابع
add_action('admin_menu', 'create_meta_box');
add_action('save_post', 'save_form_data');
راهنمایی اضافی:
- شما میتوانید نام آرایهها را به دلخواه خود تغییر دهید. مانند تغییر
generate_sample_form()بهgenerate_other_form(). اگر این کار را میکنید مطمئن شوید که تمامینامهای آرایه را تغییر داده اید. - اگر شما میخواهید فیلدهای دیگری غیر از فیلد ورودی ایجاد کنید میتوانید در قسمت آرایهها نوع (
type) آن را ازinputبه دیگر فیلدها تغییر دهید.

الان پس میشه دیگه با وردپرس یه سیستم درج آگهی مثل ایستگاه زد دیگه؟ عجب سوالی میکنم حتما میشه دیگه، فقط باید این ورودیهای دلخواه از طریق بخش قالب در دسترس باشند.
ممنون واسه این پست. من رفتم قالب جوبپرس رو ادزپرس کنم :دی
کارت ۱۹٫۷۵ بود!
بله میشه این کارو کرد. البته یه چیزایی واسه این کار هست.
درود بر شما واقعا مطالب کاملی بود
فقط یه مشکا من اصلا زمینه دلخواه واسم نمیاد چه کنم !؟
درود،
برای دیدن زمینه ی دلخواه باید در صفحه ارسال پست از تنظیمات صفحه گزینه زمینه دلخواه رو تیک بزنید.
آقا یه جور بگو ما مبتدیها هم یخده یاد بگیریم!
من که هیچی نفهمیدم! :د
درود
والا آموزش کاملا واضح هست. خیلی ساده بیان شده!
سلام
خوب چطوری میشه که برای یک زمینه دلخواه خاص این کار رو انجام داد داخل این تعیین زمینه دلخواه نبود !
فرمها رو به دلخواه با توجه به قسمت راهنماییهای اضافی تغییر دهید.
سلام
اقا من یه مشکلی دارم چون شاپ دارم نیازم به زمینه دلخواه خیلی زیاده
ولی نمیدونم چرا بعد از مدتی یه دفعه یه مشکلی پیدا م یکنه مثلا میزنم که زمینه دلخواه ثبت بشه زرد میشه ولی اعمال نمیشه و یا باید دو بار کلیک کنم که اون ثبت بشه یه مشکل عجیب غریب پیدا کرده
هر چی هم نسخه اصلی ورد پرس رو ریستور میکنم بی فایده است خودمم موندم چیکار کنم
ای دی یاهوی من welcomepeyman
لطفا بهم کمک کنید اکثراً آنلاین هستم
با تشکر
کریمیاز شیراز
این مشکل فکر کنم از جی کوئری هست و مشکل خاصی نیست به نظرم.
بسیار عالی برادر
فوق العاده مفید
درود.
ممنون!
آقا یه سوال
من اگر زمینه دلخواهی بنام download داشته باشم
اینو باید با چی توی این کدها عوض کنم ؟
با سیو صفحه خودش سیو میشه دیگه ؟
علامتی داره که متوجه بشیم مقدار رو حفظ کرده یا نه ؟
یعنی لینک دانلودی که میدیم توش میمونه ؟
درود.
خوب خیلی اسونه من کدها رو برای ۵ تا فیلد متنی تعریف کرده بودم حالا شما ۴ تا رو حذف کنید.
بله با ذخیره صفحه خودش ذخیره میشه (قدم سوم)
متوجه منظورم نشدی عزیز
الان اینایی که شما ساختی
خود بخود زمینه ی دلخواه سایت رو به ترتیب داخل خودشون قرار میدن ؟
یا من باید توشون نام زمینه ی دلخواه خودمو تعریف کنم ؟
اگر باید تعریف کنم کجا بزارمش؟
آهان!
درسته شما باید زمینههای دلخواه خودتون رو مانند قدم اول تعریف کنید
سلام. آموزش خوبی بود ولی من یک مشکلی دارم. بعد از اینکه دور هر قدم از کدها رو قرار دادم و چهار کد رو توی function قالبم گذاشتم دیگه نمیتونم داخل کنترل پنل وردپرسم لاگین کنم. آخه php بلد نیستم نمیدونم مشکل چیه. میشه یک راهنمایی کنید؟
باید این توابع رو داخل تگهای
phpقرار بدید و داخل فایلfunctions.phpبگذارید.من php بلد نیستم. میشه داخل یک فایل text بهم بدید؟ ( به صورتی که داخل توابع php باشه که کد رو اضاف کنم به functions.php قالبم )
فقط کافیه به بالای هر کد تگ
< ?phpو به پایین آنها هم؟>اضافه کنید.خوب من دقیقا همین کارو کرده بودم که نمیتونستم لاگین کنم. دور ۴ تا کد اینو گذاشتم و توی function.php گذاشتم. ولی نشد. مشکلم از همون اول همین بود.
اسم فایل
function.phpنیست.functions.phpهستش!سلاممحل قرار گیری آرایهها کجاست ؟
اونم داخل فانکشن ؟
بله همه ی کدها داخل فایل
functions.phpقرار میگیرند.من اینجا اشتباه نوشتم، به جای functions.php نوشتم function.php .شما اگر لطف کنید کدش رو در یک فایل .txt به من بدید. تمام مشکلات حل میشه. آخه من هر کاری که شما گفتید رو کردم ولی هنوز نمیتونم لاگین کنم به خاطر این کدها.
والا فایلی که من بدم با کدهای بالا هیچ تفاوتی نخواهد داشت.
گمونم این کدها رو این دوستمون در تگ پی اچ پی قرار نمیدن
در تگهای php قرار دادم ولی بازم نمیتونم لاگین کنم به خاطر این کدها.
اقا دمت گرم گل کاشتی ممنونم
[...] هم اینجا خوندم ولی تقریبا با چیزهایی که گفتید فرق داشت: http://geniusboy.ir/wordpress/598/how-to-simplify-wordpress-custom-fields-layout-for-a-layman من هم همچین چیزی را میخواهم که زمینه دلخواهی که درست [...]
درود و خسته نباشید پسر نابغه….
داداش من میخوام لینک لوگین به وردپرسم را تغییر بدم باید چیکار کنم؟! من بخاطره همین موضوع یکبار هک شدم
آدرس پیش فرض به این شکله>>>>>>> http://mehdiXXXXX.ir/wp-admin/
و اینکه فایل htcccp تویهاست من موجود نیست؟! کجاس یعنی؟
باید به فایل
.htaccessچند کد اضافه کنی که پیشنهاد نمیکنم. از افزونههای اکمنیتی استفاده کن.سلام.
بسیار عالی بود.
قبلا هم به وردپرس بیش از هر سیستمیاعتقاد داشتم.
لان بیشتر!
ممنون!
سلام
دقیقا همون چیزی بود که میخواستم …
ایول به وردپرس و ایول به شما …
دمت گرم عزیز …
وردپرس و دیگر هیچ …