رفتن به مطلب

ايجاد متاباكس براي زمينه دلخواه


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

سلام به همه دوستان عزيز ! از عنوان هم معلوم فك كنم ! ميخوام ي متاباكس ايجاد كنم براي زمينه هاي دلخواه !

توي انجمن هم گشتم ولي آموزشي پيدا نكردم بيشترشون مشكلي داشتن !

و اين كه آيا اين متاباكس ها بعد تعويض قالب ، و اضافه كردن كد هاي متاباكسمون به قالب جديد قابل استفاده هستن !؟‌يا از بين ميرن ؟!‌

لینک به ارسال

چه فیلدهایی در متاباکس میخواین بذارین؟ متنی - چک باکس - ....؟

و اینکه این متاباکس برای همه ی پست ها هست یا برای نوع خاصی از پست ها؟

لینک به ارسال

اگر فیلدها متنوع هستند از افزونه استفاده کنید

به هر حال برای تک فیلد متنی در فایل فانکشن قرار دهید:


/*Adding Meta Boxes to Any Posts*/
add_action( 'add_meta_boxes', 'adding_meta_box' );
function adding_meta_box()
{
add_meta_box( 'meta_box_id', 'اطلاعات پست', 'frst_meta_box', 'post', 'normal', 'high' );
}
function frst_meta_box( $post )
{
$value = get_post_custom( $post->ID );
$text_field = isset( $value['meta_box_text_field'] ) ? esc_attr( $value['meta_box_text_field'][0] ) : '';
wp_nonce_field( 'my_meta_box_nonce', 'meta_box_nonce' );
?>
<p>
<label for="meta_box_text_field">عنوان باکس</label>
<input type="text" name="meta_box_text_field" id="meta_box_text_field" value="<?php echo $text_field; ?>" />
</p>
<?php
}
add_action( 'save_post', 'saving_meta_box' );
function saving_meta_box( $post_id )
{
if( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;
if( !isset( $_POST['meta_box_nonce'] ) || !wp_verify_nonce( $_POST['meta_box_nonce'], 'my_meta_box_nonce' ) ) return;
if( !current_user_can( 'edit_post' ) ) return;
$accepted_field = array(
'a' => array('href' => array() )
);
if( isset( $_POST['meta_box_text_field'] ) )
update_post_meta( $post_id, 'meta_box_text_field', wp_kses( $_POST['meta_box_text_field'], $accepted_field ) );
}

در بین جایی که تگ php بسته و بعد باز شده سایر فیلدها رو اضافه کنید - البته باید در انتهای کد، جایی که ذخیره اتفاق می افته هم باید برای سایر فیلدهایی که اضافه می کنید دستورات ذخیره کردن رو اضافه کنید!

بیشتر:


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

لینک به ارسال

برای اینکه در هر قالبی قابل استفاده باشه باید در فایل فانکشن هر قالب اضافه بشه

اما میشه بصورت پلاگین هم به کار برده بشه:

adding-meta-box.php

لینک به ارسال

اگر بخواهیم چندین متاباکس برای دسته هایی که ایجاد کردیم اضافه کنیم از کجا باید slug اون دسته خاص رو اضافه کنیم ؟ و 2، 3 تا زیر هم اضافه کنیم باید تکرارش کنیم؟

لینک به ارسال
اگر بخواهیم چندین متاباکس برای دسته هایی که ایجاد کردیم اضافه کنیم از کجا باید slug اون دسته خاص رو اضافه کنیم ؟ و 2، 3 تا زیر هم اضافه کنیم باید تکرارش کنیم؟

فکر میکنم باید با id های متفاوت کد تکرار بشه ، برای استفاده از خروجی متاباکسهای ایجاد شده از چه کدی باید استفاده کرد ؟ همون کد نمایش زمینه دلخواه ؟

لینک به ارسال

اگر بخواهیم چندین متاباکس برای دسته هایی که ایجاد کردیم اضافه کنیم از کجا باید slug اون دسته خاص رو اضافه کنیم ؟ و 2، 3 تا زیر هم اضافه کنیم باید تکرارش کنیم؟

چندین متاباکس یا یک متاباکس با چندین فیلد؟

برای چندین متاباکس باید کد بالا رو با اسامی متفاوت تکرار کنید

برای یک متاباکس با چندین فیلد ، در زیر همون پست 4 توضیح داده شده

اما اگر منظور اینه که برای یک دسته ی خاص متاباکس ایجاد بشه - چون وقتی وارد افزودن پست میشید هنوز دسته ایی انتخاب نشده که بشه تشخیص داد آیا متاباکس برای این دسته هست یا نیست - برای انجامش 2 راه دارید

1 - استفاده از پست تایپ که در اینصورت میشه متاباکس رو فقط برای پست تایپ بخصوصی اضافه کرد

2 - چند ماه قبل یه آموزش برای ایجاد تمپلیت برای دسته ایی خاص قرار دادم که در اون قبل از ورود به افزودن نوشته، می شد دسته رو انتخاب کرد:

آموزش انتخاب دسته قبل از نوشته

برای استفاده از خروجی متاباکسهای ایجاد شده از چه کدی باید استفاده کرد ؟ همون کد نمایش زمینه دلخواه ؟

بله - مثلاً برای مثال بالا:


<?php echo (get_post_meta($post->ID, "meta_box_text_field", true)); ?>

ویرایش شده توسط isk
لینک به ارسال
  • 2 هفته بعد...

من این رو بهفانکشن اضافه میکنم و در قسمت ارسال مطلی میادش

اما وقتی مطلب رو ارسال میکنم و اون اطلاعات متاباکس رو هم مینویسم , در مطلب ارسال شده در سایت هیچ کدوم از اون فیلدهایی که پر کردم نمیادش؟

باید تابعی رو هم در فایل سینگل قرار بدم؟

لینک به ارسال

من این رو بهفانکشن اضافه میکنم و در قسمت ارسال مطلی میادش

اما وقتی مطلب رو ارسال میکنم و اون اطلاعات متاباکس رو هم مینویسم , در مطلب ارسال شده در سایت هیچ کدوم از اون فیلدهایی که پر کردم نمیادش؟

باید تابعی رو هم در فایل سینگل قرار بدم؟

تابعی که در پوسته باید استفاده بشه get_post_meta هست

که نمونه در پست 8 هست

لینک به ارسال

اگر فیلدها متنوع هستند از افزونه استفاده کنید

به هر حال برای تک فیلد متنی در فایل فانکشن قرار دهید:


/*Adding Meta Boxes to Any Posts*/
add_action( 'add_meta_boxes', 'adding_meta_box' );
function adding_meta_box()
{
add_meta_box( 'meta_box_id', 'اطلاعات پست', 'frst_meta_box', 'post', 'normal', 'high' );
}
function frst_meta_box( $post )
{
$value = get_post_custom( $post->ID );
$text_field = isset( $value['meta_box_text_field'] ) ? esc_attr( $value['meta_box_text_field'][0] ) : '';
wp_nonce_field( 'my_meta_box_nonce', 'meta_box_nonce' );
?>
<p>
<label for="meta_box_text_field">عنوان باکس</label>
<input type="text" name="meta_box_text_field" id="meta_box_text_field" value="<?php echo $text_field; ?>" />
</p>
<?php
}
add_action( 'save_post', 'saving_meta_box' );
function saving_meta_box( $post_id )
{
if( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;
if( !isset( $_POST['meta_box_nonce'] ) || !wp_verify_nonce( $_POST['meta_box_nonce'], 'my_meta_box_nonce' ) ) return;
if( !current_user_can( 'edit_post' ) ) return;
$accepted_field = array(
'a' => array('href' => array() )
);
if( isset( $_POST['meta_box_text_field'] ) )
update_post_meta( $post_id, 'meta_box_text_field', wp_kses( $_POST['meta_box_text_field'], $accepted_field ) );
}

در بین جایی که تگ php بسته و بعد باز شده سایر فیلدها رو اضافه کنید - البته باید در انتهای کد، جایی که ذخیره اتفاق می افته هم باید برای سایر فیلدهایی که اضافه می کنید دستورات ذخیره کردن رو اضافه کنید!

بیشتر:


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

لطفا 2 تا قیلد به این متاباکس اضافه کنید ، توی قسمت ذخیره اش مشکل دارم .

ممنون

لینک به ارسال

/*Adding Meta Boxes to Any Posts*/
add_action( 'add_meta_boxes', 'adding_meta_box' );
function adding_meta_box()
{
add_meta_box( 'meta_box_id', 'اطلاعات پست', 'frst_meta_box', 'post', 'normal', 'high' );
}
function frst_meta_box( $post )
{
$value = get_post_custom( $post->ID );
$text_field_one = isset( $value['meta_box_text_field_one'] ) ? esc_attr( $value['meta_box_text_field_one'][0] ) : '';
$text_field_two = isset( $value['meta_box_text_field_two'] ) ? esc_attr( $value['meta_box_text_field_two'][0] ) : '';
$text_field_three = isset( $value['meta_box_text_field_three'] ) ? esc_attr( $value['meta_box_text_field_three'][0] ) : '';
wp_nonce_field( 'my_meta_box_nonce', 'meta_box_nonce' );
?>
<p>
<label for="meta_box_text_field_one">عنوان باکس</label>
<input type="text" name="meta_box_text_field_one" id="meta_box_text_field_one" value="<?php echo $text_field_one; ?>" />
</p>
<p>
<label for="meta_box_text_field_two">عنوان باکس دوم</label>
<input type="text" name="meta_box_text_field_two" id="meta_box_text_field_two" value="<?php echo $text_field_two; ?>" />
</p>
<p>
<label for="meta_box_text_field_three">عنوان باکس سوم</label>
<input type="text" name="meta_box_text_field_three" id="meta_box_text_field_three" value="<?php echo $text_field_three; ?>" />
</p>
<?php
}
add_action( 'save_post', 'saving_meta_box' );
function saving_meta_box( $post_id )
{
if( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;
if( !isset( $_POST['meta_box_nonce'] ) || !wp_verify_nonce( $_POST['meta_box_nonce'], 'my_meta_box_nonce' ) ) return;
if( !current_user_can( 'edit_post' ) ) return;
$accepted_field = array(
'a' => array('href' => array() )
);
if( isset( $_POST['meta_box_text_field_one'] ) )
update_post_meta( $post_id, 'meta_box_text_field_one', wp_kses( $_POST['meta_box_text_field_one'], $accepted_field ) );
if( isset( $_POST['meta_box_text_field_two'] ) )
update_post_meta( $post_id, 'meta_box_text_field_two', wp_kses( $_POST['meta_box_text_field_two'], $accepted_field ) );
if( isset( $_POST['meta_box_text_field_three'] ) )
update_post_meta( $post_id, 'meta_box_text_field_three', wp_kses( $_POST['meta_box_text_field_three'], $accepted_field ) );
}

لینک به ارسال
  • 1 سال بعد...

سلام

خسته نباشید

یه سئوال داشتم

میخوام داخل متاباکس هام یک فیلد برای آپلود باشه

همچین کاری رو میشه کرد؟؟

http://code.tutsplus.com/articles/attaching-files-to-your-posts-using-wordpress-custom-meta-boxes-part-1--wp-22291

لینک به ارسال

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

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

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

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

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

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

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

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

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