maral_hamidi 82 ارسال شده در مرداد 96 گزارش بازنشر ارسال شده در مرداد 96 (ویرایش شده) سلام دوستان عزیز.. از یه قالب استفاده میکنم که تو مطالب و قسمت های دیگه از متاباکس استفاده میکنه. ولی بخش متاباکس رو وقتی تغییر میدم تغییر نمیکنه و ذخیره نمیشن. مثلا اگه خالی باشی همونطوری باقی میمونه و بعد از بروزرسانی مطلب مقداری که به پست متا دادم ذخیره نمیشه و همچنان خالی باقی می مونه. دلیل این اتفاق چیه؟ ممنون میشم از راهنماییتون ویرایش شده مرداد 96 توسط maraljoon نقل قول لینک به ارسال
Mirrajabi 455 ارسال شده در مرداد 96 گزارش بازنشر ارسال شده در مرداد 96 سلام . امکان داره $post-id مقدار نداشته باشه . باید از ایدی متاباکس echo بگیرید ببنید آیدی داره که مقدار واسش ذخیره کنه . یا اینکه کد همون قسمت بزارید بهتر بشه راهمناییتون کرد. نقل قول لینک به ارسال
maral_hamidi 82 ارسال شده در مرداد 96 مالک گزارش بازنشر ارسال شده در مرداد 96 در 3 ساعت قبل، Mirrajabi گفته است : سلام . امکان داره $post-id مقدار نداشته باشه . باید از ایدی متاباکس echo بگیرید ببنید آیدی داره که مقدار واسش ذخیره کنه . یا اینکه کد همون قسمت بزارید بهتر بشه راهمناییتون کرد. ممنونم. واقعیتش دقیقا نمیدونم کجا داره از این کدها استفاده میکنه.که آیدیشو هم بتونم گیر بیارم. یه چیزی پیدا کردم نمیدونم همین بخشه یا نه. <?php public static function meta( $post_id, $saved, $field ) { $meta = get_post_meta( $post_id, $field['id'], true ); // Always save as single value // Use $field['std'] only when the meta box hasn't been saved (i.e. the first time we run) $meta = ! $saved && '' === $meta ? $field['std'] : $meta; // Make sure returned value is an array if ( empty( $meta ) ) $meta = array(); // If cloneable, make sure each sub-value is an array if ( $field['clone'] ) { // Make sure there's at least 1 sub-value if ( empty( $meta ) ) $meta[0] = array(); foreach ( $meta as $k => $v ) { $meta[$k] = (array) $v; } } return $meta; } /** * Change child field name to form parent[child] * * @param string $parent Parent field's name * @param string $child Child field's name * @return string */ public static function child_field_name( $parent, $child ) { $pos = strpos( $child, '[' ); $pos = false === $pos ? strlen( $child ) : $pos; $name = $parent . '[' . substr( $child, 0, $pos ) . ']' . substr( $child, $pos ); return $name; } /** * Set value of meta before saving into database * * @param mixed $new * @param mixed $old * @param int $post_id * @param array $field * * @return int */ public static function value( $new, $old, $post_id, $field ) { $sanitized = array(); foreach ( $new as $key => $value ) { if ( is_array( $value ) && ! empty( $value ) ) { $value = self::value( $value, '', '', '' ); } if ( '' !== $value && array() !== $value ) { if ( is_int( $key ) ) { $sanitized[] = $value; } else { $sanitized[$key] = $value; } } } return $sanitized; } /** * Normalize group fields. * @param array $field * @return array */ public static function normalize( $field ) { $field = parent::normalize( $field ); $field['fields'] = RW_Meta_Box::normalize_fields( $field['fields'] ); return $field; } } نقل قول لینک به ارسال
Mirrajabi 455 ارسال شده در مرداد 96 گزارش بازنشر ارسال شده در مرداد 96 اینجا نیست . معمولا تو فانکشن . و نوشته update_post_meta .باید ببنید اول مقدار ذخیره میشه یا نه . نقل قول لینک به ارسال
Mobin 1669 ارسال شده در مرداد 96 گزارش بازنشر ارسال شده در مرداد 96 برای ایجاد یک متاباکس از تابع add_metabox استفاده میشه و برای ذخیره متاباکس باید یک هوک به save_post بزنین ایجاد متاباکس کدی مشابه زیر هست add_action( 'add_meta_boxes', 'add_post_meta_boxes' ); function add_post_meta_boxes() { add_meta_box( 'wp_parsi-post-class', // Unique ID 'Post Class', // Title 'wp_parsi_post_meta_box', // Callback function 'post', // Admin page (or post type) 'side', // Context 'default' // Priority ); } function wp_parsi_post_meta_box( $post ) { ?> <p> <label>Add a custom CSS class, which will be applied to WordPress' post class.</label> <br /> <input type="text" name="parsi-post-class" value="<?php echo esc_attr( get_post_meta( $post->ID, 'parsi_post_class', true ) ); ?>" /> </p> <?php } برای ذخیره متاباکس add_action( 'save_post', 'parsi_save_post_meta', 10, 2 ); function smashing_save_post_class_meta( $post_id, $post ) { /* Verify the nonce before proceeding. */ if ( !isset( $_POST['parsi-post-class'] )) return $post_id; update_post_meta( $post_id, 'parsi_post_class', $_POST['parsi-post-class'] ); } 2 نقل قول لینک به ارسال
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .