Tag: wordpress

  • WordPress เพิ่ม singular.php เป็น theme template ตัวใหม่

    WordPress เพิ่ม singular.php เป็น theme template ตัวใหม่

    สำหรับ WordPress เวอร์ชั่น 4.3 ที่กำลังจะมา ทางทีมพัฒนาได้เพิ่ม singular.php เข้ามาเป็น theme template ตัวใหม่ โดยหลายคนรู้จัก singular อยู่แล้วจาก is_singular() ซึ่งถ้าหน้าที่แสดงอยู่เป็นหน้าเดี่ยวของ post type ใดๆ จะส่งค่า true กลับมาให้

    ใน wp-includes/template-loader.php เพิ่ม code ดังนี้

    และใน เพิ่ม code ดังนี้

    โดยใช้สำหรับหน้าเดี่ยวโดยไม่สนใจว่าเป็น post type แบบไหน ลำดับจะอยู่หลังจาก single.php หรือ page.php หรือ หน้าเดี่ยวของ post type อื่นๆ

    singular.php ช่วยให้เราไม่ต้องคิดมากเวลาจะหาว่า หน้าเดี่ยวนี้เรียกจาก file ไหน single.php หรือเปล่า หรือจะเป็น page.php ใช้แค่ singular.php ตัวเดียวก็แทนที่ได้หมดแล้ว

  • เพิ่มสินค้าอัตโนมัติ กรณีสินค้านั้นมีหลายตัวเลือก : WooCommerce

    เพิ่มสินค้าอัตโนมัติ กรณีสินค้านั้นมีหลายตัวเลือก : WooCommerce

    ตามปรกติปุ่ม Add to cart ของ WooCommerce เองก็เพิ่มสินค้าให้อัตโนมัติอยู่แล้ว เพียงแต่ถ้าเมื่อไหร่สินค้านั้น มีหลายตัวเลือก หรือถ้าดูในหลังบ้านของ WooCommerce ก็คือ มีการตั้งค่า Variation ให้กับสินค้า ตัวอย่างเช่น สินค้า A มี 2 สี 2 ขนาด คือ สีแดง ขนาด 5ml, สีแดง ขนาด 30ml, สีเขียว ขนาด 5ml และสีเขียว ขนาด 30ml แบบนี้จะทำให้เมื่อเรากดปุ่ม Add to cart แล้ว ตัว WooCommerce จะพาเราไปยังหน้าของสินค้านั้น เพื่อให้เราเลือกก่อนว่า จะเอาสีไหน ขนาดไหน

    คราวนี้ได้โจทย์มาจากลูกค้าว่า อยากจะให้เมื่อคนซื้อมากดปุ่ม Add to cart แล้ว ระบบจะเพิ่มสินค้าเข้าตะกร้าสินค้าให้เองอัตโนมัติจำนวน 1 ชิ้น

    ซึ่งในหลังบ้านของ WooCommerce ในส่วนของ Product แต่ละชิ้นนั้น จะมีส่วนให้ตั้งค่า Default Variation ของสินค้าชิ้นนั้นๆ อยู่แล้ว เลยใช้ส่วนนี้มาต่อยอดปรับแต่งปุ่ม Add to cart ให้ทำงานแบบที่ลูกค้าต้องการได้

    ก่อนอื่นต้องทำความเข้าใจเรื่อง Template ของ WooCommerce ก่อน https://docs.woothemes.com/document/template-structure/ ไม่ขออธิบายนะครับ ไปอ่านดู

    โดยปุ่ม Add to cart จะมีอยู่ 2 ส่วนคือ ส่วนของหน้ารวมสินค้า กับส่วนของหน้ารายละเอียดสินค้า ซึ่งปุ่ม Add to cart ที่เราต้องการจะปรับคือ หน้ารวมของสินค้า โดย File ที่เราต้องทำการแก้ไข จะอยู่ใน path yourtheme/woocommerce/loop/add-to-cart.php (อันนี้ยึดหลักตาม WooCommerce 2.2.2) ซึ่งใน File จะเขียนไว้ดังนี้

    ผมเลยเพิ่มโค้ดเข้าไปเป็นแบบนี้

    โดยเช็คว่าสินค้านั้น มีตัวเลือกหรือเปล่า หลังจากนั้นมาเช็คว่ามีค่า Default ตั้งไว้มั้ย ส่วน form ที่ใช้ในการส่งค่าสำหรับเพิ่มสินค้าเข้าตะกร้านั้น นำมาจากปุ่ม Add to cart ของหน้ารายละเอียดสินค้า เพียงแต่เรากำหนดค่าของตัวเลือกลงไปเลย รวมถึงจำนวน 1 ชิ้นด้วย

    ถ้าเห็นว่าโค้ดส่วนไหนควรปรับเปลี่ยน คอมเม้นต์บอกกันได้เลยนะครับ

  • Query ในหน้านั้น เราจะเพิ่ม Parameter เข้าไปยังไง : WordPress

    Query ในหน้านั้น เราจะเพิ่ม Parameter เข้าไปยังไง : WordPress

    อันนี้ยกตัวอย่างจากที่เจอมาเลย คือในหน้า Archive อยากให้มันเรียงตามชื่อหัวข้อ ไม่ได้อยากให้มันเรียงตามวันที่ แค่เพิ่ม parameter orderby=title เข้าไปทำยังไง

    อย่างแรกก็ประกาศ global $query_string; เพื่อที่เราจะได้นำ $query_string มาใช้งาน โดยมันคือ ค่า parameter ที่ใช้ในการ query_posts() ของแต่ละหน้านั่นละ แต่เราเรียกมาเพื่อที่จะเพิ่มค่า parameter ที่เราต้องการเข้าไป ส่วนเราสามารถปรับแต่งการเรียกต่างๆ ได้จากหัวข้อนี้ query_posts

  • Widget Logic Plugin สำหรับกำหนดเงื่อนไขการแสดงผลของ Widget : WordPress

    Widget Logic Plugin สำหรับกำหนดเงื่อนไขการแสดงผลของ Widget : WordPress

    วันก่อนมีน้องมาถามว่า มี Plugin จะทำยังไงให้ Widget แสดงผลเฉพาะหน้าที่เราต้องการได้มั้ย ยังไม่ทันได้ตอบ มันก็หาเจอไปแล้ว 555

    พอมาวันนี้ไอ้เราก็จำไม่ได้ว่า ที่มันหาเจอเป็น Plugin ตัวไหน ก็เลยเป็นสาเหตุให้ลองมาหาเองว่ามี Plugin ตัวไหนที่ถูกจริตเรา แล้วใช้กำหนดเงื่อนไขการแสดงผลในหน้าที่เราต้องการได้มั้ย ก็มาจบที่ตัวนี้ละ Widget Logic

    Widget Logic

    หลังจากติดตั้ง Plugin ตัวนี้แล้ว ไม่ต้องไปมองหาว่ามันจะไปอยู่ที่เมนูไหน เพราะมันจะไปอยู่ที่หน้าจัดการ Widget ที่เมนู Appearance => Widgets ลองดูตัวอย่างตามรูปละกัน

    Pic1
    ส่วนของ Widget Logic ที่เพิ่มขึ้นมา

    หลายคนอาจจะงงว่า แล้วเราจะใส่อะไรลงไปช่อง Widget Logic ที่เพิ่มขึ้นมา ให้ไปดูที่ Conditional Tags ของ WordPress ได้เลยครับ

    คราวนี้มาลองใส่ไปว่า is_home() ซึ่งถ้าใน Reading Settings ของเราไม่ได้ตั้งค่าอะไร มันก็คือหน้าแรกนั่นละ แต่ถ้าเราไปเลือกหน้าไหนในส่วนของ Front Page หน้าแรกของเราต้องใช้เป็น is_front_page() แทนนะครับ

    Pic2
    อันนี้ตั้งชื่อ Title ให้เวลาสังเกตผล จะได้ดูง่ายๆ

    ซึ่งในกรณีนี้ ถ้าเราไปที่หน้าแรก จะต้องมี Widget ที่มีหัวข้อ Widget Logic ปรากฎอยู่

    Pic3
    หน้าแรกของเรามี Widget หัวข้อ Widget Logic อยู่ด้านขวา

    คราวนี้ลองเข้าไปที่หน้า Archive ของเว็บบ้าง จะเห็นว่า Widget ที่มีหัวข้อ Widget Logic หายไป

    Pic4
    ในหน้า Archive จะเห็นว่า Widget หัวข้อ Widget Logic หายไป

    ซึ่งเราก็สามารถปรับเงื่อนไขต่างๆ ได้แล้วแต่เราต้องการ จะใช้ && หรือ || หรือ ! ก็แล้วแต่เงื่อนไขที่จะให้แสดงผลของแต่ละคนเลย

  • [WordPress] Advanced Access Manager

    [WordPress] Advanced Access Manager

    Advanced Access Manager นั้นเป็น Plugin สำหรับจัดการ User Roles ใน WordPress ซึ่งมันสามารถปรับเปลี่ยนสิทธิของ User Roles เดิมที่มีอยู่ของ WordPress จากที่ได้พูดถึงใน [WordPress] User Roles การกำหนดสิทธิใน WordPress และยังสามารถสร้าง User Roles ขึ้นมาใหม่ เพื่อให้ไม่ทับซ้อนกับของเดิม และง่ายกับการจัดการ User ของเว็บเรา

    วิธีการใช้งาน Advanced Access Manager

    เมื่อเราติดตั้ง Plugin แล้วจะมีเมนูใหม่คือ AAM ซึ่งใช้สำหรับปรับค่าต่างๆ การ Plugin ตัวนี้
    Advanced Access Manager : Menu
    โดยส่วนการควบคุมของ Plugin ตัวนี้จะมีแบ่งออกมาเป็น 3 ส่วนหลักๆ ดังรูป
    Advanced Access Manager : Panel

    เลือกเมนูที่จะแสดงผล

    เราปรับแต่งเมนูที่จะแสดงผลในแต่ละ User Roles ได้ ตัวอย่างเช่น ใน User Roles : Editor นั้น เราอยากจะซ่อนเมนู Comments และซ่อนเมนูย่อย Categories, Tags ในเมนู Posts สามารถคลิกที่หัวข้อที่จะจัดการเมนู และติ๊กเลือกได้เลย
    Advanced Acccess Manager : Manage Menu 1

    Advanced Acccess Manager : Manage Menu 2
    หลังจากนั้นก็เลือก Save ในส่วนที่ 3 หรือถ้าหลังจาก Save ไปแล้ว เราสามารถเปลี่ยนให้ค่ากลับไปยังค่าพื้นฐานเดิมของ WordPress ก็แค่เลือกที่ Roleback

    Advanced Access Manager : Save

    ปรับแต่งความสามารถของแต่ละ User Roles

    โดยการปรับแต่งความสามารถ หรือสิทธิของแต่ละ User Roles นั้น ให้ดูในส่วนที่ 1 ในหัวข้อ Capability โดยแต่ละตัวใช้กำหนดสิทธิในการทำอะไรได้บ้างนั้น ดูได้จาก Roles and Capabilities
    Capability

    เพิ่ม User Roles

    ถ้ามองไปที่ส่วนที่ 2 จะเห็นว่าเราสามารถปรับแต่งความสามารถของแต่ละ User Roles ได้จากการเลือกที่ไอคอนที่เหมือนเฟือง และเรายังสามารถเพิ่ม User Roles ขึ้นมาเป็นของตัวเองได้ที่ไอคอนเครื่องหมายบวก

    Manage User

    ซึ่งเราสามารถตั้งชื่อ และเลือกได้ว่าจะให้มีสิทธิเหมือนกับของเก่าตัวไหน

    Create New User Roles

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

  • [WordPress] remove_image_size ฟังก์ชั่นใหม่ของ WordPress 3.9

    [WordPress] remove_image_size ฟังก์ชั่นใหม่ของ WordPress 3.9

    remove_image_size() เป็นฟังก์ชั่นใหม่ที่ถูกเพิ่มมาใน WordPress 3.9 โดยจุดประสงค์หลักของมันคือ ใช้สำหรับกรณีที่เราติดตั้ง Plugin แล้วเจ้า Plugin ตัวนั้นดันใช้ชื่อที่ตั้งสำหรับรูปขนาดนั้นไว้ เป็นชื่อเดียวกับที่เราจะใช้งานแต่คนละขนาดกัน

    วิธีการใช้งาน remove_image_size

    มาดูวิธีการใช้งานของ remove_image_size() กัน ว่ามีวิธีการใช้งานยังไง

    โดย $name ก็คือ ชื่อของรูปที่เราต้องการลบออกไป // แต่ชื่อรูปที่เราไม่สามารถลบขนาดออกไปได้คือ thumb, thumbnail, medium, large, post-thumbnail หรือชื่อรูปที่เป็นมาตรฐานของ WordPress เอง

    แต่จากที่เคยใช้งานจะเป็นในกรณีที่จะปรับแต่ง Plugin ของคนอื่นมากกว่า อย่างเช่น เค้าทำ widget ที่จะดึง post ที่เราต้องการมาโชว์พร้อมรูป featured image แล้ว plugin ตัวนั้นดันใช้ขนาดที่ไม่ตรงกับที่เราต้องการใช้งาน เราก็มา remove_image_size() ขนาดรูปใน plugin ตัวนี้ แล้วก็ add_image_size() เข้าไปใหม่ในชื่อเดิม โดยเราเปิดไปที่ functions.php และใส่ code ในลักษณะนี้ลงไป

    เพื่อที่เวลา Plugin มีการอัพเดตอะไรก็ตาม ขนาดรูปก็ยังเป็นขนาดที่เราตั้งค่าไว้อยู่ดี