maraljoon

عدم تغییر و ذخیره شدن محتویات متاباکس در وردپرس

5 پست در این موضوع قرار دارد

ارسال شده در (ویرایش شده)

سلام دوستان عزیز..

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

دلیل این اتفاق چیه؟

ممنون میشم  از راهنماییتون

ویرایش شده در توسط maraljoon
0

به اشتراک گذاری این پست


لینک به پست

سلام .

امکان داره $post-id مقدار نداشته باشه .

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

0

به اشتراک گذاری این پست


لینک به پست
در 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;
	}
}

 

0

به اشتراک گذاری این پست


لینک به پست

اینجا نیست .

معمولا تو فانکشن . و نوشته update_post_meta .باید ببنید اول مقدار ذخیره میشه یا نه .

0

به اشتراک گذاری این پست


لینک به پست

برای ایجاد یک متاباکس از تابع 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

به اشتراک گذاری این پست


لینک به پست

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری