رفتن به مطلب

چك باكس در متاباكس (ضميمه دلخواه)


پست های پیشنهاد شده

سلام دوستان

من توسط روشي كه قبلا توي چند سايت ديگه خونده بودم و توي اين انجمن سوالاتي پرسيده بودم و خلاصه اينكه به جواب رسيده بودم ، امدم براي ضمينه دلخواه ها يه باكس جدا درست كردم زير قسمت ارسال مطلب به نام متاباكس ها،

حالا سوالم و مشكلم اينه كه من امدم چند مورد گذاشتم كه ورودي ميگيرم و به راحتي توي سايت نشون ميدمش ، با توجه به نياز ها ، ما نياز داريم كه يه چك باكس بزاريم اونجا توي متاباكس ها (ضميمه دلخواه) كه وقتي اين چك باكس فعال بود يه عكس نشون بده يه عكس ثابت! ولي متاسفانه من هر كاري كردم نتونستم اين خروجي رو بگيرم و روشي به ذهنم نزد! لطفا بنده رو راهنمايي كنيد

شما فرض رو بر اين بگيريد كه اين كد نمايش چك باكس ماست توي قسمت متاباكس ها:


<input type="checkbox" name="grf_check" value=""/>

حالا توي خروجي توسط اين كد ميگم كه اگر اين زمينه دلخواه من چك باكسش تيك خورده بود يه عكس پيش فرض كه قبلا تو سرور اپلود كردم رو نشون بده:


<?php $check=get_post_meta($post->ID, 'grf_check', true);
if($check){ ?>


<?php echo $check; ?>

<?php
}else{
echo "";
}
?>

كه من امدم ويرايشش كردم و لينك و ... دادم بهش و هر كاري كردم نتونستم ، ميدونيد اشكالم چيه؟ اشكالم اينه نميدونم چطور بايد بهش بفهمونم كه كي اين چك باكس تيكش ميخوره!! و اينكه با صدا زدن كد زير چطور بهش لينك عكس پيش فرض رو بدم؟؟؟ متشكرم اگر كد فوق رو برام طوري ويرايش كنيد كه اگر چك باكس تيك خورده بود فقط يه عكس نشون بده :


<?php echo $check; ?>

لینک به ارسال

پارسا جان درست متوجه نشدم ، عكس رو هم هنوز نميدونم چيكار بايد بكنم :( ميخوام بگم اگر فعال بود عكس نشون بده اگر نبود هيچي نباشه!

اين متغير رو كجا بكار بگيرم تو فانگشن قالب و يا تو جايي كه ميخوام نشون بده؟ ميشه كامل بگي؟

ویرایش شده توسط rasivell
لینک به ارسال

کجا زمینه دلخواه رو ذخیره میکنید؟

grf_check رو با مقدار متغییر بالا ذخیره کنید

لینک به ارسال

پارسا جان ، من توي فايل فانگشن يه ارايه تنظيم كردم ، كه بهش گفتم مقادير رو بگيره ، شما يه نگاه بنداز به اين :


<?php /// بخش متاباكس ها - شروع
$prefix = 'grf_';

"check" => array(
"name" => $prefix . "check",
"type" => "check",
"title" => "مطلب بدون كاور",
"scope" => array("post","page")),
);
?>
<?php

بعدش امدم و پايين ترش گفتم:


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:140px; float:right">'.$meta_box['title'].'</span>';
if( $meta_box['type'] == "check" ) {
$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="checkbox" name="'.$meta_box['name'].'" value="'.$meta_box_value.'"/><br /> ';
}

echo '</div>';
echo"";
}
}
?>

و ميخوام با دستور زير توي يه صحفه صداش كنم بگم كه : اگر تيك خورده عكس پيش فرض نمايش بده و اگر نخورده هيچي نشون نده


<?php $check=get_post_meta($post->ID, 'grf_check', true);
if($check){ ?>


<?php echo $check; ?>

<?php
}else{
echo "";
}
?>

پارسا جان قربونت برم اين عكسه خيلي مهمه و شما اصلا ازش حرف نميزني...

. متشكرم

لینک به ارسال

مناصلا توی کد شما بخش ذخیره متا رو ندیدم!

اگر متا برای پست هست ذخیره با تابع زیر انجام میشه:

http://codex.wordpress.org/Function_Reference/update_post_meta

لینک به ارسال

مرتض جان قربونت برم ، من حواسم هست اونارو قرار دادم عزيم ، احساس كردم بايد بدونيد وقتي دارم اين مساله رو اماده ميكنم حواسم به ايناشم هست ديگه :)

بفرمايد اينجا ذخير ميكنم لطفا نگاه كنيد :


<?php
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));
}
}
?>
<?php
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');

?>

ویرایش شده توسط rasivell
لینک به ارسال

نوع داده در روش شما مشخص نیست

بهتره از روش دقیق‌تری استفاده کنید

http://www.farinspace.com/how-to-create-custom-wordpress-meta-box

لینک به ارسال

دوستان عزيزم ، الان نزديك 2 ساله من روي قالب هامون از اين روش دارم متاباكس ميزارم و كارامونم خوب پيش ميره! راه ساده اون اينه كه خيلي خيلي ساده بيام ضميمه دلخواه بزارم! اين كه از اون صد مرتبه بهتره كه! همون ضميمه دلخواهه كه من براش باكس گذاشتم، مرتضي جان ممنونت ميشم اگر راهنمايي كني كه من بتونم توي خروجي بگم كه اگر تيك فعاله يه عكس نشون بده و اگر فعال نيست كه هيچي خالي باشه!

همين ، دستتونم درد نكنه دوستان كه وقت ميزاريد

اين روش هم روشي بوده كه من 6 ماه پيش توي اموزش خود پارسا جان توي همين انجمن گفته بود استفاده كردم حالا اگر اين روش قديمي شده و به ديد نميخوره شما ببخشيد دوستان عزيزم..

توي لينك هاي زير ماها پيش بنده رو دوستان با اين روش اشنا كردن:

اگر كسي ميتونه به من كمك كنه ممنون ميشم ، ما هر چي نياز داشتيم درست كرديم با ضمينه ها فقط سر اين يه تيك مونديم ، همه موارد ديگه الان نزديك 2 ساله داره كار ميكنه و هيچ اشكالي نداشته ممنونم...

.

لینک به ارسال

من اصلا منطق کدهای پست 5 رو متوجه نشدم!

ببینید اگر میخواید یک چک باکس باشه که براساس تیک خوردن یا نخوردن عکسی بیاد من اینطور مینویسم:

در متاباکس:

<input type="checkbox" name="mycheck" value="1"/>

برای ذخیره:

update_post_meta($post_id, 'mycheck', $_POST['mycheck']);

برای بررسی وجود:

$mycheck = get_post_meta($post_id, 'mycheck', true);
if(!empty($mycheck)){
//نمایش عکس
}

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...