💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۴ میثم کیانی
اضافه کردن فیلد اختصاصی به صفحه cart
جامعه وردپرس (برنامه نویسی) ایجاد شده در ۰۵ آذر ۱۴۰۲

سلام استاد وقتتون بخیر امیدوارم حالتون خوب باشه. همچنین سلام به منتور‌های عزیز.

یک سوال داشتم من میخواستم یک فیلد اختصاصی (checkbox, textarea یا ...) فقط در صفحه cart زیر هر محصولی که به سبد خرید اضافه شده، داشته باشم.

نحوه اضافه کردنش رو که مشکلی ندارم و این مورد اوکیه. تنها مشکلم اینکه میخواهم هر اطلاعاتی که کاربر اضافه میکنه به سفارشش اضافه بشه و منم توی پنل مدیریت ووکامرس بخش جزئیات محصول این موارد رو ببینم. ولی هرکاری میکنم اطلاعات داخل این فیلد نه با استفاده از جدول option و متدهای وردپرس و نه با متد‌های ووکامرس ذخیره نمیشه و نمیتوانم اطلاعات رو ببینم.

میتونید بهم کمک کنید چطور میشه زمانی که ما فیلدی رو فقط توی صفحه cart اضافه میکنیم، اطلاعاتش همراه با سفارش ارسال بشه؟

امیدوارم منظورم رو کامل رسونده باشم اگرم لازمه میتونم کدهایی که نوشتم رو در اختیارتون بزارم.

ممنونم

سلام من دقیق متوجه نشدم چه اطلاعاتی رو میخواید ذخیره کنید منتهی یک ایده ای که هست تا جایی که متوجه نیازتون شدم شما میتونید با ajax و گرفتن آیدی کارت اطلاعات رو به کارت اضافه کنید و توی پنل قسمت سفارشات هم اونو نمایشش بدین

ابوالفضل محجوب ۰۷ آذر ۱۴۰۲، ۰۱:۴۲

سلام وقت بخیر خدمت جناب محجوب گرامی،

من این کلاس رو درست کردم که کاربر وقتی داره یک محصولی رو میخره بتونه توی بخش کارت یک گزینه انتخاب کنه که آیا این محصول یک هدیه حساب میشه یا نه؟ اگه هدیه هست میتونه یک متن بنویسه و اگه دوست داشت میتونه بسته بندی اختصاصی هم انتخاب کنه که مبلغش به سبد خریدش اضافه میشه. (یه چیزی شبیه به کاری که آمازون داره انجام میده)

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

اینم بگم که من حتی اومدم این اطلاعات رو داخل جدول option هم ذخیره کنم ولی نشد. حتی یک جدول اختصاصی هم درست کردم بازم اطلاعات اصلا داخل جدول نمیشینه نمیدونم مشکلش چیه.

این کدی هست که من نوشتم (متدهایی که برای ذخیره هستن رو دیگه نیوردم چون درست کار نمیکنه اگه لطف کنید بگید چطور میتونم با یکی از هوک‌های وردپرس یا ووکامرس این مورد رو اوکی کنم ممنونم میشم) :

class WC_Gift_Checkbox {
	public static function init() {
		add_action('woocommerce_after_cart_item_name', [self::class, 'display_gift_checkbox'], 10, 2);
	}
	public static function display_gift_checkbox( $cart_item, $cart_item_key ) {
		?>
        <!-- ... checkbox display code ... -->
		<div class="gift-checkbox">
			<label>
				<input type="checkbox" class="gift-checkbox-input"
				       name="gift_checkbox[<?php echo esc_attr( $cart_item_key ); ?>]"/>
				This is a gift
			</label>
			<div class="gift-options" style="display: none;">
				<div class="gift-message-section">
					<p>Gift message:</p>
					<textarea name="gift_message[<?php echo esc_attr( $cart_item_key ); ?>]"></textarea>
				</div>
				<div class="gift-addons-section">
					<p>Add ons:</p>
					<label>
						<input type="checkbox" name="gift_packaging1[<?php echo esc_attr( $cart_item_key ); ?>]"/>
						Persian Art gift packaging - £2.99
					</label>
					<label>
						<input type="checkbox" name="gift_packaging2[<?php echo esc_attr( $cart_item_key ); ?>]"/>
						Persis Collection gift packaging
					</label>
				</div>
			</div>
		</div>
		<script>
            jQuery(document).ready(function ($) {
                $('.gift-checkbox-input').change(function () {
                    $(this).closest('.gift-checkbox').find('.gift-options').toggle(this.checked);
                });
            });
		</script>
		<?php
	}
}
میثم کیانی ۰۷ آذر ۱۴۰۲، ۰۵:۳۶

سلام وقت بخیر، بعد تقریبا یه هفته جستجو و تست راه حل‌های مختلف، تصمیم گرفتم که فانکشنمو بجای اینکه توی صفحه سبد خرید باشه و ایجکس ارسال کنه بیارمش توی صفحه پرداخت. همونجا همراه با ثبت سفارش اطلاعات ذخیره میشد. خیلیم راحت به اطلاعاتش دسترسی دارم.

میثم کیانی ۱۴ آذر ۱۴۰۲، ۰۹:۴۳

آقا من یک عذرخواهی بابت تاخیرم به شما بدهکارم پیامتون بین پیام‌ها گم شده بود 

ببینید هر اورد که ثبت میشه یک پست در نظر گرفته میشه و آیدی سفارش همون آیدی پست هستش پس میشه هر اطلاعاتی که خواستین رو با آیدی سفارش با post meta ذخیره کنید

برای نمایشش هم یک اد متاباکس درست میکنید برای پست تایپ‌های order و با استفاده از آیدی پست‌ها پست متا هاشون رو نمایش میدین تازه میتونید امکان ویرایش هم بزارین

ابوالفضل محجوب ۱۵ آذر ۱۴۰۲، ۱۹:۴۹