การใช้ function_exists ในการพัฒนาเว็บไซต์ด้วย WordPress

Chalermchai Prompunya
Artisan Digital
Published in
1 min readDec 27, 2017

function_exists เป็นฟังก์ชั่นที่เห็นได้บ่อยในการพัฒนาเว็บไซต์ด้วย WordPress แต่จะใช้งานอย่างไร และตอนไหนล่ะ

PHP: function_exists

function_exists เป็นฟังก์ชั่นของภาษา PHP ที่เอาไว้สำหรับตรวจสอบว่าฟังก์ชั่นนั้นมีจริงหรือไม่ ตัวฟังก์ชั่นเป็น Boolean มีการ Return ค่า จริง กับ ไม่จริง มีฟังก์ชั่นนี้อยู่จริง ให้ทำอะไร และ ไม่มีฟังก์ชั่นนี้อยู่จริง ให้ทำอะไร

<?php
if ( function_exists( 'myFunction' ) ) {
echo "
function has been defined";
} else {
echo "
function has not been defined";
}
?>

เมื่อเข้าใจตัวฟังก์ชั่น ทำให้เราเข้าใจฟังก์ชั่นการทำงาน และรู้ว่าเมื่อไหร่ควรใช้ ไม่ควรใช้ เช่น หากต้องการตรวจสอบฟังก์ชั่นที่เอาไว้ตรวจสอบว่า เว็บไซต์ของเราเปิดใช้งาน Plugin: WooCommerce หรือไม่

ฟังก์ชั่น is_woocommerce_activated เป็นฟังก์ชั่นตรวจสอบว่ามีการใช้งาน Class ที่ชื่อว่า woocommerce หรือไม่ ถ้าจริงให้ทำอะไร ถ้าไม่จริงให้ทำอะไร

if ( ! function_exists( 'is_woocommerce_activated' ) ) { 
function is_woocommerce_activated() {
if ( class_exists( 'woocommerce' ) ) {
return true;
} else {
return false;
}
}
}

เข้าใจแบบง่าย ๆ มีไหม ?

ถ้าหากว่าตัวอย่างข้างบนอ่านแล้วยัง งง ผมมีวิธีคิดแบบง่าย ๆ มาให้นั่นก็คือ ถ้าเราเขียนฟังก์ชั่น wp_enqueue_style หรือ wp_enqueue_script ใน ChildTheme ก็ไม่ต้องใช้ function_exists เพราะฟังก์ชั่นนี้น่าจะเป็นบรรทัดแรก ๆ ในไฟล์ function.php ของ Theme อยู่แล้ว ถ้าธีมไม่ซับซ้อน ปกติก็ทำไว้ฟังก์ชั่นเดียวเพื่อ นำไฟล์ CSS, JS ไปเข้าคิวเพื่อเรียกใช้งาน

ถ้าเราต้องการเขียนฟังก์ชั่นเพื่อเข้าไปจัดการปลั๊กอิน หรือส่วนเสริมที่นอกเหนือจากฟังก์ชั่นของ WordPress แบบนี้ควรใช้ function_exists เพื่อตรวจสอบว่าเราได้ใช้งานฟังก์ชั่นนั้นของปลั๊กอินอยู่หรือไม่ ถ้ามีไม่ฟังก์ชั่นนั้นก็ไม่ต้องทำงาน ลดขั้นตอนการทำงานของ PHP ไปได้ เช่น ตรวจสอบว่าเราเปิดใช้งานปลั๊กอิน WooCommerce อยู่หรือไม่ ถ้าเปิดใช้งานปลั๊กอิน WooCommerce ให้ทำอะไร ถ้าไม่เปิดใช้งานปลั๊กอิน WooCommerce ให้ทำอะไร

สรุปส่งท้าย

หากฟังก์ชั่นนั้นของเราที่สร้างขึ้นมาไม่ได้ Override ฟังก์ชั่นที่มีอยู่แล้วของธีมแม่ หรือ ปลั๊กอิน ก็ไม่ต้องใช้ function_exists เช่น นำเข้าไฟล์ CSS, JS ของ Child Theme

หากฟังก์ชั่นนั้นของเราต้องการ Override ฟังก์ชั่นของธีมแม่ หรือ ปลั๊กอิน ก็ควรใช้ function_exists เพื่อตรวจสอบว่ามีฟังก์ชั่นนั้นมีจริงหรือไม่ จากนั้นก็ทำการ Hooks ในขั้นตอนต่อไป

แหล่งข้อมูล

--

--