8
Mar

Woocommerce การรับค่าชื่อ Product Category สำหรับสินค้านั้นๆ

Category: Blog / 132 views

เอาละครับ สำหรับวันนี้เราจะมาดูเทคนิคการทำเว็บอีกสักเรื่องนะครับ เป็นเรื่องที่ยังเกี่ยวข้องกับระบบ 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 เข้าไปด้วยครับ

สำหรับการใช้งานโค้ดตัวนี้ ผมทดสอบไว้กับโปรเจ็คของตัวเองที่สินค้านั้นสังกัดแค่หมวดหมู่เดียวเท่านั้นนะครับ ถ้าสินค้าใดที่อยู่ภายใต้หลายหมวดหมู่ ผมยังไม่ได้ทดสอบดู เพราะอย่างที่บอกว่าผมเล่าจากประสบการณ์การเอาไปใช้กับโปรเจ็คจริงๆ แล้วครั้งนี้ระบบมันเป็นประมาณนี้ครับไม่ได้ซับซ้อนอะไร

ขอบคุณมากครับที่ติดตามอ่านเรื่องราวในบล็อกของผมครับ ไว้เจอกันใหม่อีกนะครับ

Tags:


Phraisohn Siripool is a Graphic Designer and Website Developer. Contact Buksohn for Your Business Endeavours