ahmad4u

درخواست آموزش ساده ساخت متاباکس

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

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

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

فیلد قیمت:


<?php $price = get_post_meta($post->ID, 'price', true); ?><?php if(get_post_custom_values('price')) : ?><?php echo ( $price ); ?> تومان<?php endif; ?>

فیلد لینک دانلود:

<?php $download = get_post_meta($post->ID, 'download', true); ?><?php if(get_post_custom_values('download')) : ?><a href="<?php echo $dlid; ?>">دانلود</a><?php endif; ?>

0

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


لینک به پست

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

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

فیلد قیمت:


<?php $price = get_post_meta($post->ID, 'price', true); ?><?php if(get_post_custom_values('price')) : ?><?php echo ( $price ); ?> تومان<?php endif; ?>

فیلد لینک دانلود:

<?php $download = get_post_meta($post->ID, 'download', true); ?><?php if(get_post_custom_values('download')) : ?><a href="<?php echo $dlid; ?>">دانلود</a><?php endif; ?>

توی مخزن وردپرس هست:


<?php
/**
* Adds a box to the main column on the Post and Page edit screens.
*/
function myplugin_add_meta_box() {
$screens = array( 'post', 'page' );
foreach ( $screens as $screen ) {
add_meta_box(
'myplugin_sectionid',
__( 'My Post Section Title', 'myplugin_textdomain' ),
'myplugin_meta_box_callback',
$screen
);
}
}
add_action( 'add_meta_boxes', 'myplugin_add_meta_box' );
/**
* Prints the box content.
*
* @param WP_Post $post The object for the current post/page.
*/
function myplugin_meta_box_callback( $post ) {
// Add a nonce field so we can check for it later.
wp_nonce_field( 'myplugin_save_meta_box_data', 'myplugin_meta_box_nonce' );
/*
* Use get_post_meta() to retrieve an existing value
* from the database and use the value for the form.
*/
$value = get_post_meta( $post->ID, '_my_meta_value_key', true );
echo '<label for="myplugin_new_field">';
_e( 'Description for this field', 'myplugin_textdomain' );
echo '</label> ';
echo '<input type="text" id="myplugin_new_field" name="myplugin_new_field" value="' . esc_attr( $value ) . '" size="25" />';
}
/**
* When the post is saved, saves our custom data.
*
* @param int $post_id The ID of the post being saved.
*/
function myplugin_save_meta_box_data( $post_id ) {
/*
* We need to verify this came from our screen and with proper authorization,
* because the save_post action can be triggered at other times.
*/
// Check if our nonce is set.
if ( ! isset( $_POST['myplugin_meta_box_nonce'] ) ) {
return;
}
// Verify that the nonce is valid.
if ( ! wp_verify_nonce( $_POST['myplugin_meta_box_nonce'], 'myplugin_save_meta_box_data' ) ) {
return;
}
// If this is an autosave, our form has not been submitted, so we don't want to do anything.
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
return;
}
// Check the user's permissions.
if ( isset( $_POST['post_type'] ) && 'page' == $_POST['post_type'] ) {
if ( ! current_user_can( 'edit_page', $post_id ) ) {
return;
}
} else {
if ( ! current_user_can( 'edit_post', $post_id ) ) {
return;
}
}
/* OK, it's safe for us to save the data now. */

// Make sure that it is set.
if ( ! isset( $_POST['myplugin_new_field'] ) ) {
return;
}
// Sanitize user input.
$my_data = sanitize_text_field( $_POST['myplugin_new_field'] );
// Update the meta field in the database.
update_post_meta( $post_id, '_my_meta_value_key', $my_data );
}
add_action( 'save_post', 'myplugin_save_meta_box_data' );


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

1

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


لینک به پست

همیشه و در همه حال به همه گفتم بهترین منبع برای یادگیری وردپرس خودش هست این بخش ها رو ببینید :

https://codex.wordpress.org/Custom_Fields

این برای دانلود :


<?php $download = get_post_meta($post->ID, 'download', true); ?>
<?php if($download) : ?>
<a href="<?php echo $download; ?>">دانلود</a>
<?php endif; ?>

این برای قیمت


<?php $price = get_post_meta($post->ID, 'price', true); ?>
<?php if($price) : ?>
<?php echo $price; ?> تومان
<?php endif; ?>

2

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


لینک به پست

همیشه و در همه حال به همه گفتم بهترین منبع برای یادگیری وردپرس خودش هست این بخش ها رو ببینید :

https://codex.wordpr...g/Custom_Fields

این برای دانلود :


<?php $download = get_post_meta($post->ID, 'download', true); ?>
<?php if($download) : ?>
<a href="<?php echo $download; ?>">دانلود</a>
<?php endif; ?>

این برای قیمت


<?php $price = get_post_meta($post->ID, 'price', true); ?>
<?php if($price) : ?>
<?php echo $price; ?> تومان
<?php endif; ?>

فکر کنم سوالشون رو درست متوجه نشدید.

3

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


لینک به پست

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

تشکر از دوستان

اگر امکان دارد بفرمایید برای اون دوتا فیلد چه کدهایی در فانکشن و چه کدهایی در قالب قرار دهم

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

ویرایش شده در توسط ahmad4u
1

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


لینک به پست

توضیح فارسی توابع ساخت متاباکس طبق نمونه ای که جناب Ghaem معرفی کردند:


<?php
/**
* Adds a box to the main column on the Post and Page edit screens.
*/
function myplugin_add_meta_box() { //-> نام تابع اصلی ساخت متاباکس (نامی دلخواه و غیر تکراری)
$screens = array( 'post', 'page' );//-> معرفی پست تایپهایی که متاباکس به ویرایشگرشون اضافه می شه
foreach ( $screens as $screen ) {
add_meta_box(
'myplugin_sectionid',
__( 'My Post Section Title', 'myplugin_textdomain' ),//-> عنوان متاباکس بجای myplugin_textdomain باید نام تکست دامین خود را جایگزین کنید تا بتوانید عنوان را با فایل زبان ترجمه کنید
'myplugin_meta_box_callback',//-> تابع برگشتی متاباکس برای معرفی دستورات متاباکس
$screen
);
}
}
add_action( 'add_meta_boxes', 'myplugin_add_meta_box' );//-> اکشن ساخت متاباکس
/**
* Prints the box content.
*
* @param WP_Post $post The object for the current post/page.
*/
function myplugin_meta_box_callback( $post ) { //-> تابع برگشتی این نام باید با نام تابع برگشتی در تابع اصلی یکسان باشد
// Add a nonce field so we can check for it later.
wp_nonce_field( 'myplugin_save_meta_box_data', 'myplugin_meta_box_nonce' );
/*
* Use get_post_meta() to retrieve an existing value
* from the database and use the value for the form.
*/
$value = get_post_meta( $post->ID, '_my_meta_value_key', true ); //-> فراخوانی نتیجه متاباکس نام _my_meta_value_key نام زمینه دلخواهیست که این متاباکس می سازد
echo '<label for="myplugin_new_field">';
_e( 'Description for this field', 'myplugin_textdomain' ); //-> توضیح متاباکس (بازهم myplugin_textdomain باید با تکست دامین شما جابجا شود.)
echo '</label> ';
echo '<input type="text" id="myplugin_new_field" name="myplugin_new_field" value="' . esc_attr( $value ) . '" size="25" />';//-> فیلد اصلی متاباکس در این نمونه متاباکس به صورت رشته تعذیف شده می توان متاباکس را به صورت آرایه تعریف نمود و بجای یک فیلد از چندین فیلد برای متغییر ها استفاده نمود
}
/**
* When the post is saved, saves our custom data.
*
* @param int $post_id The ID of the post being saved.
*/
function myplugin_save_meta_box_data( $post_id ) { //->تابع ذخیره سازی شامل چک نمودن فیلدهای لازم و دسترسی کاربر برای ذخیره و تابع به روز رسانی زمینه دلخواه ساخته شده با متاباکس
/*
* We need to verify this came from our screen and with proper authorization,
* because the save_post action can be triggered at other times.
*/
// Check if our nonce is set.
if ( ! isset( $_POST['myplugin_meta_box_nonce'] ) ) {
return;
}
// Verify that the nonce is valid.
if ( ! wp_verify_nonce( $_POST['myplugin_meta_box_nonce'], 'myplugin_save_meta_box_data' ) ) {
return;
}
// If this is an autosave, our form has not been submitted, so we don't want to do anything.
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
return;
}
// Check the user's permissions.
if ( isset( $_POST['post_type'] ) && 'page' == $_POST['post_type'] ) {
if ( ! current_user_can( 'edit_page', $post_id ) ) {
return;
}
} else {
if ( ! current_user_can( 'edit_post', $post_id ) ) {
return;
}
}
/* OK, it's safe for us to save the data now. */
// Make sure that it is set.
if ( ! isset( $_POST['myplugin_new_field'] ) ) {
return;
}
// Sanitize user input.
$my_data = sanitize_text_field( $_POST['myplugin_new_field'] );
// Update the meta field in the database.
update_post_meta( $post_id, '_my_meta_value_key', $my_data );
}
add_action( 'save_post', 'myplugin_save_meta_box_data' );//-> اکشن اجرای تابع ذخیره سازی در هنگام ذخیره مطلب

این کدها را باید به فانکشنز اضافه کنید

و کد


$value = get_post_meta( $post->ID, '_my_meta_value_key', true );
echo $value;

را هم در محل مناسب در قالب برای نمایش نتیجه

3

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


لینک به پست

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

با تشکر از دستان

الان سه سوال؟

اگر بخواهم ورودی قیمت بصورتی باشد که بین هر 3عدد یک , قرار دهد بصورت 30,000 باید چیکار کنم؟

و دوم اینکه برای اضافه کردن یک فیلد دیکر (لینک دانلود) به متاباکس چه کدی اضافه کنم؟

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

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

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


لینک به پست


<?php
/**
* Adds a box to the main column on the Post and Page edit screens.
*/
function myplugin_add_meta_box() {
$screens = array( 'post', 'page' );
foreach ( $screens as $screen ) {
add_meta_box(
'myplugin_sectionid',
__( 'My Post Section Title', 'myplugin_textdomain' ),
'myplugin_meta_box_callback',
$screen
);
}
}
add_action( 'add_meta_boxes', 'myplugin_add_meta_box' );
/**
* Prints the box content.
*
* @param WP_Post $post The object for the current post/page.
*/
function myplugin_meta_box_callback( $post ) {
// Add a nonce field so we can check for it later.
wp_nonce_field( 'myplugin_save_meta_box_data', 'myplugin_meta_box_nonce' );
/*
* Use get_post_meta() to retrieve an existing value
* from the database and use the value for the form.
*/
$value = get_post_meta( $post->ID, '_my_meta_value_key', true );
$value1 = get_post_meta( $post->ID, 'download_url', true );
echo '<label for="myplugin_new_field">';
_e( 'Description for this field', 'myplugin_textdomain' );
echo '</label> ';
echo '<input type="text" dir="ltr" onblur="this.value=addComma(this.value)" onfocus="this.value=removeComma(this.value)" id="myplugin_new_field" name="myplugin_new_field" value="' . esc_attr( $value ) . '" size="25" />';
echo '<br>';
echo '<label for="myplugin_download_url">';
_e( 'Download url', 'myplugin_textdomain' );
echo '</label> ';
echo '<input type="url" dir="ltr" id="myplugin_download_url" name="myplugin_download_url" value="' . esc_attr( $value1 ) . '" size="25" />';?>
<script>
function addComma( str ) {
var objRegex = new RegExp( '(-?[0-9]+)([0-9]{3})' );
while( objRegex.test( str ) ) {
str = str.replace( objRegex, '$1,$2' );
}
return str;
}
function removeComma(str) {
str = str.replace(/,/gi, '');
return str;
}
</script>
<?php
}
/**
* When the post is saved, saves our custom data.
*
* @param int $post_id The ID of the post being saved.
*/
function myplugin_save_meta_box_data( $post_id ) {
/*
* We need to verify this came from our screen and with proper authorization,
* because the save_post action can be triggered at other times.
*/
// Check if our nonce is set.
if ( ! isset( $_POST['myplugin_meta_box_nonce'] ) ) {
return;
}
// Verify that the nonce is valid.
if ( ! wp_verify_nonce( $_POST['myplugin_meta_box_nonce'], 'myplugin_save_meta_box_data' ) ) {
return;
}
// If this is an autosave, our form has not been submitted, so we don't want to do anything.
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
return;
}
// Check the user's permissions.
if ( isset( $_POST['post_type'] ) && 'page' == $_POST['post_type'] ) {
if ( ! current_user_can( 'edit_page', $post_id ) ) {
return;
}
} else {
if ( ! current_user_can( 'edit_post', $post_id ) ) {
return;
}
}
/* OK, it's safe for us to save the data now. */
// Make sure that it is set.
if ( ! isset( $_POST['myplugin_new_field'] ) || ! isset( $_POST['myplugin_download_url'] ) ) {
return;
}
// Sanitize user input.
$my_data = sanitize_text_field( $_POST['myplugin_new_field'] );
$my_data = str_replace(',', '', $my_data);
$my_data1 = sanitize_text_field( $_POST['myplugin_download_url'] );
// Update the meta field in the database.
update_post_meta( $post_id, '_my_meta_value_key', $my_data );
update_post_meta( $post_id, 'download_url', $my_data1 );
}
add_action( 'save_post', 'myplugin_save_meta_box_data' );
?>

و نمایش


$my_data = get_post_meta( $post->ID, '_my_meta_value_key' );
$my_data1 = get_post_meta( $post->ID, 'download_url');
if($my_data) {
echo number_format(get_post_meta( $post->ID, '_my_meta_value_key', true ), 0);
}
if($my_data1) {
echo get_post_meta( $post->ID, 'download_url', true );
}

2

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


لینک به پست

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

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

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

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


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

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

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


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

  • مطالب مشابه

    • توسط vazizi69@yahoo.com
      سلام دوستان وقت بخیر 
      من تو سایت وردپرسی میخوام یه تصویر از نقشه ایران رو بزارم و وقتی موس روی هر شهری ها کلیک میکنه دسته بندی مربوط به اون شهر رو نشون بده 
      و الان مشکلم اینه که نمیدونم با چه روشی میتونم تو یه عکس نقشه ایران چطور به هر شهری یه لینک بدم 
      ممنون میشم اگر کسی بلده راهنماییم کنه
    • توسط ghasem47
      سلام به همه ی دوستان عزیز
      من در نظر دارم که یک وبسایت برای فروش فایل هایی مربوط به وب راه اندازی کنم .و قصد من این است که علاوه بر فروش فایل در سایت ، هاست و دامنه نیز بفروشم . و همچنین این هم مهمه که کاربر برای خرید هاست و یا دامین باید در وبسایت عضو بشه و بعد از خرید نیز بتونه اطلاعات هاست و تنظیمات هاست رو از حساب کاربریش در وبسایت من انجام بده.
      مانند این وبسایت : (سایت ساز زرین )   https://sitesazz.ir/
      اما تنها مشکل و مسئله در این جاست که من نمی دونم و بلد نیستم که باید چگونه این کار رو انجام بدم؟
      من قراره که وبسایت رو با وردپرس راه اندازی کنم ولی نمی دونم چطوری باید این امکان فروش هاست رو به وبسایت اضافه کنم و کاری کنم که در وبسایت بتونم هاست و دامنه هم بفروشم و به علاوه این مسئله هم هست که باید کاربرا بتونن از حساب کاربری داخل وبسایتشون به تنظیمات هاست و یا دامنشون دسترسی پیدا کنند.
      لطفاً منو راهنمایی کنید.
      با تشکر
    • توسط iranibonsai
      درود، سایتی رو با وردپرس بالا آوردیم
      اما اکنون در صفحات داخلی سایت کد خطایی رو در بخش بالای مرورگر نشون میده که نتونستیم رفعش کنیم
      Warning: count(): Parameter must be an array or an object that implements Countable in /home3/zahrefzo/public_html/wp-includes/post-template.php on line 284
      این خطا قبلا وجود نداشت، نفهمیدم به چه علتی بوجود آمده و تو اینترنت هم چیز خاصی راجعبه رفعش پیدا نکردم، ممنون میشم اعلام نظر بفرمایید
      آدرس سایت :
      http://minelbeautysalon.com//
    • توسط sydvza
      باسلام ببخشید من کلیدواژه دکه را انتخاب کردم ولی در سرچ گوگل کلمه دکه وارد میکنم حتی جز 10 صفحه هم نیستم
      https://dackeh.com
    • توسط MajidRB
      سلام وقتتون بخیر.
      دوستان قالب placid رو به صورت های مختلف دانلود و نصب کردم ( هم از سایت های فارسی و قالب فارسی شده هم از منابع خود وردپرس)
      چه به شکل فارسی چه به شکل انگلیسی پست ها رو اونطوری که در پیش نمایش قالب نشان داده شده ، در صفحه اصلی نشان نمیده !
      عکس ها رو درج میکنم
      هیچ تنظیماتی نمانده که من دستکاری نکرده باشم
      فکر کنم باید چند خط کد کم یا زیاد بشه ( که بلد نیستم ! )
      خیلی ممنون میشم راهنمایی کنید