Siaavash 4 ارسال شده در تیر 96 گزارش بازنشر ارسال شده در تیر 96 با استفاده از این آموزش یک متاباکس ساختم: add_action( 'add_meta_boxes', 'cd_meta_box_add' ); function cd_meta_box_add() { add_meta_box( 'my-meta-box-id', 'My First Meta Box', 'cd_meta_box_cb', 'post', 'normal', 'high' ); } function cd_meta_box_cb() { // $post is already set, and contains an object: the WordPress post global $post; $values = get_post_custom( $post->ID ); $text = isset( $values['my_meta_box_text'] ) ? $values['my_meta_box_text'] : ''; $selected = isset( $values['my_meta_box_select'] ) ? esc_attr( $values['my_meta_box_select'] ) : ''; $check = isset( $values['my_meta_box_check'] ) ? esc_attr( $values['my_meta_box_check'] ) : ''; // We'll use this nonce field later on when saving. wp_nonce_field( 'my_meta_box_nonce', 'meta_box_nonce' ); ?> <p> <label for="my_meta_box_text">Text Label</label> <input type="text" name="my_meta_box_text" id="my_meta_box_text" value="<?php echo $text; ?>" /> </p> <?php } add_action( 'save_post', 'cd_meta_box_save' ); function cd_meta_box_save( $post_id ) { // Bail if we're doing an auto save if( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return; // if our nonce isn't there, or we can't verify it, bail if( !isset( $_POST['meta_box_nonce'] ) || !wp_verify_nonce( $_POST['meta_box_nonce'], 'my_meta_box_nonce' ) ) return; // if our current user can't edit this post, bail if( !current_user_can( 'edit_post' ) ) return; // now we can actually save the data $allowed = array( 'a' => array( // on allow a tags 'href' => array() // and those anchors can only have href attribute ) ); // Make sure your data is set before trying to save it if( isset( $_POST['my_meta_box_text'] ) ) update_post_meta( $post_id, 'my_meta_box_text', wp_kses( $_POST['my_meta_box_text'], $allowed ) ); } به جز یک مورد همه موارد درسته! اون یک مورد هم اینه که در صفحه ارسال/ویرایش مطلب بعد از اینکه باکس مربوطه رو پر می کنم و دکمه به روز رسانی رو می زنم، صفحه که دوباره لود می شه، داخل باکس متنی که نوشتم رو نمایش نمی ده! و کلمه "Array" نمایش داده شده! مشکل از کجاست؟ نقل قول لینک به ارسال
Mirrajabi 455 ارسال شده در تیر 96 گزارش بازنشر ارسال شده در تیر 96 به جای کد بالا از این کد استفاده کنید. <?php function specials_posts(){ add_meta_box('add_meta_title','آگهی ویژه','add_specials_posts','post','normal','high'); } add_action('add_meta_boxes','specials_posts'); function add_specials_posts(){ global $post; ?> <div class=""> <?php global $post; ?> <table> <tr> <td>متن :</td> <td><input type="text" name="text" value="<?php echo get_post_meta($post->ID,'_text',true); ?>" /></td> </tr> </table> </div> <?php } function save_post_information(){ global $post; if(isset($_POST['text'])){ update_post_meta($post->ID,'_text',$_POST['text']); } } add_action('save_post','save_post_information'); ?> 1 نقل قول لینک به ارسال
Siaavash 4 ارسال شده در تیر 96 مالک گزارش بازنشر ارسال شده در تیر 96 (ویرایش شده) در 14 دقیقه قبل، Mirrajabi گفته است : به جای کد بالا از این کد استفاده کنید. <?php function specials_posts(){ add_meta_box('add_meta_title','آگهی ویژه','add_specials_posts','post','normal','high'); } add_action('add_meta_boxes','specials_posts'); function add_specials_posts(){ global $post; ?> <div class=""> <?php global $post; ?> <table> <tr> <td>متن :</td> <td><input type="text" name="text" value="<?php echo get_post_meta($post->ID,'_text',true); ?>" /></td> </tr> </table> </div> <?php } function save_post_information(){ global $post; if(isset($_POST['text'])){ update_post_meta($post->ID,'_text',$_POST['text']); } } add_action('save_post','save_post_information'); ?> ممنون. فقط می شه توضیح بدید مشکل کد قبلی چی بود؟ و اینکه اگر مقدوره یک توضیح کوتاه در مورد این کدها بدید. یک دراپ باکس و یک چک باکس هم دارم! اونا رو چی کار کنم؟ ویرایش شده تیر 96 توسط Siaavash نقل قول لینک به ارسال
Mirrajabi 455 ارسال شده در تیر 96 گزارش بازنشر ارسال شده در تیر 96 function specials_posts(){ add_meta_box('add_meta_title','آگهی ویژه','add_specials_posts','post','normal','high'); } add_action('add_meta_boxes','specials_posts'); function add_specials_posts(){ global $post; ?> <div class=""> <?php global $post; ?> <table> <tr> <td> آگهی ویژه :</td> <td><input type="checkbox" name="show_special" <?php if( get_post_meta($post->ID,'_show_special',true)) echo 'checked'; ?> value="1" /></td> </tr> <tr> <td>متن :</td> <td><input type="text" name="text" value="<?php echo get_post_meta($post->ID,'_text',true); ?>" /></td> </tr> <tr> <td><label>لیبل : </label></td> <td> <?php $up_date=get_post_meta($post->ID, '_update_postt', true); ?> <select name="update_postt" id="update_postt" style="height:35px;width: 215px;"> <option value="green" <?php if($up_date == 'green'){ echo 'selected';} ?>>سبز</option> <option value="blue" <?php if($up_date == 'blue'){ echo 'selected';} ?>>آبی</option> <option value="orange" <?php if($up_date == 'orange'){ echo 'selected';} ?>>نارنجی</option> <option value="yellow" <?php if($up_date == 'yellow'){ echo 'selected';} ?>>زرد</option> <option value="red" <?php if($up_date == 'red'){ echo 'selected';} ?>>قرمز</option> <option value="gray" <?php if($up_date == 'gray'){ echo 'selected';} ?>>خاکستری</option> </select> </td> </tr> </table> </div> <?php } function save_video_information(){ global $post; if(isset($_POST['text'])){ update_post_meta($post->ID,'_text',$_POST['text']); } if(isset($_POST['update_postt'])){ update_post_meta($post->ID,'_update_postt',$_POST['update_postt']); } update_post_meta($post->ID,'_show_special',$_POST['show_special']); } add_action('save_post','save_video_information'); به جای کد قبلی از این کد استفاده کنید. هم دراپ باکس و هم چک باکس اضافه شده . مشکل از $post->id بود. 1 نقل قول لینک به ارسال
Siaavash 4 ارسال شده در تیر 96 مالک گزارش بازنشر ارسال شده در تیر 96 در ۱ ساعت قبل، Mirrajabi گفته است : function specials_posts(){ add_meta_box('add_meta_title','آگهی ویژه','add_specials_posts','post','normal','high'); } add_action('add_meta_boxes','specials_posts'); function add_specials_posts(){ global $post; ?> <div class=""> <?php global $post; ?> <table> <tr> <td> آگهی ویژه :</td> <td><input type="checkbox" name="show_special" <?php if( get_post_meta($post->ID,'_show_special',true)) echo 'checked'; ?> value="1" /></td> </tr> <tr> <td>متن :</td> <td><input type="text" name="text" value="<?php echo get_post_meta($post->ID,'_text',true); ?>" /></td> </tr> <tr> <td><label>لیبل : </label></td> <td> <?php $up_date=get_post_meta($post->ID, '_update_postt', true); ?> <select name="update_postt" id="update_postt" style="height:35px;width: 215px;"> <option value="green" <?php if($up_date == 'green'){ echo 'selected';} ?>>سبز</option> <option value="blue" <?php if($up_date == 'blue'){ echo 'selected';} ?>>آبی</option> <option value="orange" <?php if($up_date == 'orange'){ echo 'selected';} ?>>نارنجی</option> <option value="yellow" <?php if($up_date == 'yellow'){ echo 'selected';} ?>>زرد</option> <option value="red" <?php if($up_date == 'red'){ echo 'selected';} ?>>قرمز</option> <option value="gray" <?php if($up_date == 'gray'){ echo 'selected';} ?>>خاکستری</option> </select> </td> </tr> </table> </div> <?php } function save_video_information(){ global $post; if(isset($_POST['text'])){ update_post_meta($post->ID,'_text',$_POST['text']); } if(isset($_POST['update_postt'])){ update_post_meta($post->ID,'_update_postt',$_POST['update_postt']); } update_post_meta($post->ID,'_show_special',$_POST['show_special']); } add_action('save_post','save_video_information'); به جای کد قبلی از این کد استفاده کنید. هم دراپ باکس و هم چک باکس اضافه شده . مشکل از $post->id بود. الآن اگه چک باکس رو اول تیک بزنم و به روز رسانی کنم بعد بخوام تیک رو حذف کنم، نمی شه! اون قسمت چک باکس شرطش کامل و درسته؟ نقل قول لینک به ارسال
Mirrajabi 455 ارسال شده در تیر 96 گزارش بازنشر ارسال شده در تیر 96 (ویرایش شده) الآن اگه چک باکس رو اول تیک بزنم و به روز رسانی کنم بعد بخوام تیک رو حذف کنم، نمی شه! من همین الان یک تیک زدم بروز رسانی کردم بعد تیک برداشتم دوباره بروزرسانی کردم تیک برداشته شد. مشکلی نبود. اون طرف هم برای نمایش : <?php global $post; if (get_post_meta($post->ID,'_show_special',true) == '1') { echo 'نمایش پست'; } ?> ویرایش شده تیر 96 توسط Mirrajabi نقل قول لینک به ارسال
Siaavash 4 ارسال شده در تیر 96 مالک گزارش بازنشر ارسال شده در تیر 96 در 27 دقیقه قبل، Mirrajabi گفته است : الآن اگه چک باکس رو اول تیک بزنم و به روز رسانی کنم بعد بخوام تیک رو حذف کنم، نمی شه! من همین الان یک تیک زدم بروز رسانی کردم بعد تیک برداشتم دوباره بروزرسانی کردم تیک برداشته شد. مشکلی نبود. اون طرف هم برای نمایش : <?php global $post; if (get_post_meta($post->ID,'_show_special',true) == '1') { echo 'نمایش پست'; } ?> این کدیه که من قرار دادم: <td><input type="checkbox" name="show_special" <?php if( get_post_meta($post->ID,'_show_special',true)) echo 'checked'; ?> value="هشدار" /></td> این کد وقتی برقرار باشه کد زیر رو برقرار می کنه درسته؟ echo 'checked' در صورت عدم برقراری شرط چی؟! نقل قول لینک به ارسال
Mirrajabi 455 ارسال شده در تیر 96 گزارش بازنشر ارسال شده در تیر 96 در 7 دقیقه قبل، Siaavash گفته است : این کدیه که من قرار دادم: <td><input type="checkbox" name="show_special" <?php if( get_post_meta($post->ID,'_show_special',true)) echo 'checked'; ?> value="هشدار" /></td> این کد وقتی برقرار باشه کد زیر رو برقرار می کنه درسته؟ echo 'checked' در صورت عدم برقراری شرط چی؟! checked چون خودم تو کدهام نیاز داشتم چون می خواستم جی کوئری استفاده کنم شما هم اگه نیاز دارید می تونید یک else اضافه کنید . مثال: <?php if( get_post_meta($post->ID,'_show_special',true)) {echo 'checked'; } else { echo 'notchecked';}?> value="هشدار" /> شما دقیقا می خواید چیکار کنید ؟ ببینید الان اگه تیک بزنید مقدار get_post_meta($post->ID,'_show_special',true) ,هشدار در دیتابیس ذخیره می کنه ولی اگر تیک بردارید مقدار null ذخیره میشه . 1 نقل قول لینک به ارسال
Siaavash 4 ارسال شده در تیر 96 مالک گزارش بازنشر ارسال شده در تیر 96 در 26 دقیقه قبل، Mirrajabi گفته است : checked چون خودم تو کدهام نیاز داشتم چون می خواستم جی کوئری استفاده کنم شما هم اگه نیاز دارید می تونید یک else اضافه کنید . مثال: <?php if( get_post_meta($post->ID,'_show_special',true)) {echo 'checked'; } else { echo 'notchecked';}?> value="هشدار" /> شما دقیقا می خواید چیکار کنید ؟ ببینید الان اگه تیک بزنید مقدار get_post_meta($post->ID,'_show_special',true) ,هشدار در دیتابیس ذخیره می کنه ولی اگر تیک بردارید مقدار null ذخیره میشه . می خوام اگر این باکس تیک خورد، یه متن (هشدار) داخل پست نمایش داده بشه و اگر تیک نخورد نمایش داده نشه اون عنوان. اما با این کد هم همچنان تیک از بین نمی ره! نقل قول لینک به ارسال
Mirrajabi 455 ارسال شده در تیر 96 گزارش بازنشر ارسال شده در تیر 96 پس همون کد قبلی باید بزارید. <?php global $post; if (get_post_meta($post->ID,'_show_special',true) == '1') { echo 'نمایش پست'; } ?> ولی الان مهم تر از این باید برید تو دیتابیس این پست ببینید بعد ببینید این چک باکس اصلا ذخیره میشه یا نه، چون کد تست کردم برای من درست بود، باید ببینیم مشکل از کجاست. 1 نقل قول لینک به ارسال
Siaavash 4 ارسال شده در تیر 96 مالک گزارش بازنشر ارسال شده در تیر 96 (ویرایش شده) در 17 ساعت قبل، Mirrajabi گفته است : پس همون کد قبلی باید بزارید. <?php global $post; if (get_post_meta($post->ID,'_show_special',true) == '1') { echo 'نمایش پست'; } ?> ولی الان مهم تر از این باید برید تو دیتابیس این پست ببینید بعد ببینید این چک باکس اصلا ذخیره میشه یا نه، چون کد تست کردم برای من درست بود، باید ببینیم مشکل از کجاست. در حال حاضر اگر تیک نخوره نمایش نمی ده عنوان مورد نظر رو، بعد از اینکه تیک خورد نمایش می ده اما دیگه نمی شه تیک رو ورداشت! تو دیتابیس تو کدوم جدول رو باید چک کنم؟ تو جدول هایی که فکر می کردم باشه ندیدم همچین موردی رو! ویرایش شده تیر 96 توسط Siaavash نقل قول لینک به ارسال
Mirrajabi 455 ارسال شده در تیر 96 گزارش بازنشر ارسال شده در تیر 96 توtable postmeta metakey=' _show_special ' سرچ کنید. نقل قول لینک به ارسال
Siaavash 4 ارسال شده در تیر 96 مالک گزارش بازنشر ارسال شده در تیر 96 (ویرایش شده) در 2 ساعت قبل، Mirrajabi گفته است : توtable postmeta metakey=' _show_special ' سرچ کنید. ذخیره شده و "هشدار" رو به عنوان value ذخیره کرده! ویرایش شده تیر 96 توسط Siaavash نقل قول لینک به ارسال
Mirrajabi 455 ارسال شده در تیر 96 گزارش بازنشر ارسال شده در تیر 96 خب خوبه، حالا تیک بردارید بروز رسانی کنید ببینید چی ذخیره میکنه؟ نقل قول لینک به ارسال
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .