เอาละครับ สำหรับวันนี้เราจะมาดูเทคนิคการทำเว็บอีกสักเรื่องนะครับ เป็นเรื่องที่ยังเกี่ยวข้องกับระบบ Woocommerce อยู่เช่นเดิมครับ เพียงแต่ว่าเป็นเรื่องราวใหม่ๆเพิ่มเติม
เช่นเคยครับ ก่อนอื่นนั้นก็ต้องเล่าที่มาก่อนว่า ทำไมถึงกลายมาเป็นบทความตอนนี้ เพราะการออกแบบเว็บ สิ่งหนึ่งที่เป็นหน้าที่ของเราก็คือการแก้ปัญหาใช่ไหมละครับ เรื่องราวทั้งหลายที่ผมเขียนลงในบล็อกก็ล้วนเป็นเรื่องราวที่ใช้ในการแก้ปัญหาให้กับโปรเจ็คแต่ละตัวนั่นเองครับ อย่างตัวนี้ก็มีอยู่ว่า สินค้าของของลูกค้าเนี่ย (เป็นวารสาร) มีการจัดเก็บแบบรายปี ซึ่งปีแต่ละปีผมก็ทำเป็น Category ไว้อยู่แล้วครับ สินค้าสังกัดแค่หมวดหมู่เดียวเท่านั้น ต่อมาก็มีเงื่อนไขว่า สินค้าของลูกค้ามี PDF สองแบบคือแบบตัวอย่างให้อ่าน กับแบบเวอร์ชั่นเต็ม ซึ่งกรณีที่สินค้านั้นมีอายุน้อยกว่า 3 ปี เขาจะอ่านได้แค่ตัวเวอร์ชั่นตัวอย่างเท่านั้น แต่ถ้าสินค้านั้นผ่านไปมากกว่า 3 ปีแล้ว ก็อ่านฟรีได้เลยจ้า
หน้าที่ของผมก็คือผมก็สร้าง Custom field ขึ้นมาสองตัว สำหรับให้ลูกค้าอัพโหลดไฟล์ PDF เข้าไป อันหนึ่งสำหรับจัดเก็บตัว Preview อีกอัน สำหรับจัดเก็บไฟล์ตัวเต็มครับ
ทีนี้เราก็จะมาเช็คกันครับว่า หน้าวารสารที่ลูกค้าเข้าชมอยู่เนี่ย มันเป็นวารสารที่เกิน 3 ปีหรือยัง ถ้ายังไม่เกิน ก็ให้เห็นแค่ปุ่ม Preview ถ้าเกินแล้วก็ให้แสดงตัว Full Version ด้วย ดัง Flow ด้านล่างแบบง่ายๆครับ
และเนื่องจากว่าวารสารแต่ละตัวจะอยู่ในหมวดหมู่สินค้าที่จัดเก็บโดยตั้งชื่อเป็น พ.ศ. อยู่แล้วครับ เช่น 2512 . 2513 2514…. เป็นต้น สิ่งที่ต้องทำก็คือ เราต้องเช็คว่า หน้าสินค้าที่เราดูอยู่นี้ มันอยู่ภายในหมวดหมู่สินค้าของปีอะไร จากนั้นก็ทำการเช็คกับ “ปีปัจจุบัน” ว่าห่างมากกว่า 3 หรือไม่ ถ้ามากกว่าก็แสดงว่ามันอายุเกิน 3 ปีแล้วนั่นเองครับ
ทีนี้มาดูโค้ดกันครับ
<?php global $post; $terms = get_the_terms( $post->ID, 'product_cat' ); foreach ($terms as $term) { $product_cat_name = $term->name; break; } (int)str_replace(' ', '', $product_cat_name); //echo $product_cat_name; ?>
คำอธิบายครับผม
คำสั่งด้านบน เป็นการเก็บค่า $product_cat_name ครับ เราก็จะได้ชื่อของหมวดหมู่มาแล้ว
บรรทัด (int)str_replace(‘ ‘, ”, $product_cat_name); เป็นการเขียนบอกว่าให้แปลงชื่อตัวนั้นให้เป็นจำนวนเต็มซะ โดยถ้ามีช่องว่างระหว่างคำก็ให้ตัดช่องว่างออกไปด้วยกันการมีปัญหาครับ
คำสั่งต่อมา
<?php $current_year =543+date("Y"); $year_check = $current_year-$product_cat_name; //echo $year_check; ?>
เนื่องจากว่า เป็นการเช็คปีปัจจุบันครับ โดยใช้คำสั่ง date=(“Y”); แต่ว่ามันจะแสดงเป็นปี ค.ศ. ผมก็เลยแปลงให้เป็น พ.ศ. ด้วยการบวกกับ 543 ครับผม แล้วไปจัดเก็บไว้ในตัวแปรชื่อว่า $current_year
เสร็จแล้วก็ทำการเช็คว่ามันห่างกันกี่ปีนะ แล้วจัดเก็บในตัวแปร $year_check
<?php if(get_field('preview_pdf')){ ?> <a href="<?php the_field('preview_pdf'); ?>"><button type="button" class="btn btn-primary btn1">Preview PDF</button></a> <?php } ?> <?php if($year_check>3){ ?> <?php if(get_field('full_pdf')){ ?> <a href="<?php the_field('full_pdf'); ?>"><button type="button" class="btn btn-primary btn2">PDF Full Version</button></a> <?php } ?> <?php } ?>
ทีนี้ก็เข้าสู่กระบวนการแสดงปุ่มของเราแล้วครับ เนื่องจากว่าไม่ว่าจะวารสารนั้นมากกว่าหรือน้อยกว่า 3 ปี มันต้องแสดงปุ่ม Preview PDF อยู่แล้ว ผมก็เลยเอาไว้ด้านบนสุด ทีนี้ ก็ค่อยมาเช็คกว่า วารสารนี้เกิน 3 ปีหรือยัง ถ้าเกินก็แสดงปุ่ม PDF Full Version เข้าไปด้วยครับ
สำหรับการใช้งานโค้ดตัวนี้ ผมทดสอบไว้กับโปรเจ็คของตัวเองที่สินค้านั้นสังกัดแค่หมวดหมู่เดียวเท่านั้นนะครับ ถ้าสินค้าใดที่อยู่ภายใต้หลายหมวดหมู่ ผมยังไม่ได้ทดสอบดู เพราะอย่างที่บอกว่าผมเล่าจากประสบการณ์การเอาไปใช้กับโปรเจ็คจริงๆ แล้วครั้งนี้ระบบมันเป็นประมาณนี้ครับไม่ได้ซับซ้อนอะไร
ขอบคุณมากครับที่ติดตามอ่านเรื่องราวในบล็อกของผมครับ ไว้เจอกันใหม่อีกนะครับ