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

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


لینک به پست

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

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

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

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


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

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

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


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

  • مطالب مشابه

    • توسط hamasehyaran
      سلام 
      روزبخیر
      من یه تازه وارد وردپرسی هستم ، حدود 9 ماهه با وردپرس مشغولم .
      کدنویسی هم در حد html و css بلدم. php نمیدونم
      الان هم دارم روی سایت برای انتشارات کتاب کار میکنم.
      یه کاری می خوام انجام بدم که مدت ها درگیرشم.
      میخوام توی صفحه محصولاتم، نویسنده کتاب به صورت لینک شده بیاد و شخص با کلیک کردن روی اون به صفحه نویسنده هدایت بشه.(مثل عکس پیوست)
      چند تا کار انجام دادم ، مثلا با taxonomy ها کار  کردم ولی بلد نبودم ازشون استفاده کنم.
       
      لطفا در این مورد رهنماییم کنید.


    • توسط zoh.ayat
      با عرض سلام خدمت اساتید محترم
      من دنبال افزونه ای هستم که با کلیک روی یک متن یا تصویر پنجره ای مشابه پنجره های popup باز شود و در این صفحه عکس و نوشته هایی را بتوانم قرار دهم.
      آیا کسی میتونه بنده را راهنمایی کند؟
    • توسط mr.meysam
      سلام
      وقت بخیر
      من روی وردپرس از قالب گود نیوز استفاده میکنم ولی امروز متوجه شدم که از هر تصویر حدود 18 تا سایز دیگه هم میسازه 
      چطور میتونم جلوی این کارو بگیرم؟
      حالا چطور میتونم اینا رو حذف کنم؟
      سایز هایی که میسازه اینا هستن
      120*76
       150*150
      180*120
      190*122
      220*140
      265*168
      274*173
      278*202
      284*180
      300*168
      308*192
      373*270
      45*35
      475*342
      567*365
      610*365
      90*60
      95*64
      تشکر
    • توسط iceplus
      سلام ممنون میشم کمکم کنید 
      افزونه ای میخوام که هم اعضا عضو بشن و هم بتونن تاریخچه سفارشاتشون رو ببینن 
      این افزونه رو سایت fafait.net داره ولی نمیدونم چیه
      عکسشو پیوست میکنم

    • توسط rahimi12345
      سلام
      داخل سایت افزونه  گرویتی  فرم و tracking order   نصب شده با فرم ساز فرم جدید می سازم  و می تونم حتی فرمی بسازم با ارسال داده کد پیگیری به کاربر نشان بده اما نمی دونم چطور با tracking order  و فرم ساخته شده   ارتباط برقرار کنم تا کد رهگیری می زنیم نتایج به کاربر نشان داده شود لطفا راهنمایی کنید