วิธีเพิ่มการรองรับ WP-CLI ให้กับปลั๊กอิน WordPress ใดๆ

เผยแพร่แล้ว: 2018-08-14

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

การเพิ่มการสนับสนุน @wpcli ให้กับปลั๊กอิน #WordPress ของคุณ จะเป็นการเปิดให้กับนักพัฒนา ผู้ใช้ระดับสูง และผู้ดูแลระบบ

คลิกเพื่อทวีต

GUI นิรันดร์กับการต่อสู้ CLI

ออกไปให้พ้นทางกันเถอะ: GUI (Graphical User Interface) ไม่ได้ดีไปกว่า CLI (Command Line Interface) และในทางกลับกัน: CLI ไม่ได้ดีไปกว่า GUI ผู้คนชอบสิ่งใดสิ่งหนึ่งมากกว่ากัน มันเป็นเรื่องของความชอบส่วนตัวหรือนิสัย “เหมือนกันหรือเปล่า ใช้แทนกันได้หรือเปล่า” ด้วยการประนีประนอม ใช่พวกเขาสามารถเป็นได้ แต่ไม่มีใครชอบเลือกสีในอินเทอร์เฟซบรรทัดคำสั่งขาวดำ นั่นเป็นเพียงการต่อต้าน พวกเขาแต่ละคนมีจุดประสงค์เฉพาะ

“แล้วทำไมเราถึงต้องการทั้งสองอย่าง? WP ไม่ใช่ GUI ที่มุ่งเน้นมากกว่าหรือไม่ มันคือ WP นั้นเน้น GUI มากกว่า แต่ไม่ใช่สำหรับผู้ใช้ทั้งหมด บางคนใช้ WP ในลักษณะที่เหมาะสมกับ CLI มากกว่า และทำให้พวกเขาทำงานได้เร็วขึ้นมาก ยิ่งกว่านั้นทำไมไม่มีทั้ง? มันไม่ได้บวมอะไรหรือขวางทาง

ดังนั้น WP-CLI เป็นปลั๊กอินใช่ไหม

ไม่ มันไม่ใช่ปลั๊กอิน คุณไม่จำเป็นต้องเพิ่มอะไรในการติดตั้ง WordPress เพื่อให้ WP-CLI ทำงานได้ คุณต้องใช้ WP-CLI บนระบบปฏิบัติการของคุณเท่านั้น WP-CLI เขียนด้วย PHP และบรรจุใน Phar เป็นวิธีการรวมแอปพลิเคชัน PHP ทั้งหมดไว้ในไฟล์เดียว "phar" (PHP Archive) เพื่อการแจกจ่ายและติดตั้งที่ง่ายดายบน OS-es ต่างๆ ขั้นตอนการติดตั้งขึ้นอยู่กับระบบปฏิบัติการของคุณ แต่เป็นเรื่องง่ายและได้รับการบันทึกไว้อย่างดีในคู่มือ WP-CLI – หรือหากคุณชอบวิดีโอมากกว่านี้ นี่คือหนึ่งในการติดตั้ง WP-CLI บน Windows

ฉันจะไม่พูดซ้ำเนื้อหาข้างต้น มีรายละเอียดเพียงพอและน่าจะช่วยให้คุณใช้งาน WP-CLI ได้ในเวลาไม่กี่นาที เมื่อคุณเปิดใช้งานแล้ว ให้เปลี่ยนไดเร็กทอรีการทำงานของคุณเป็นการติดตั้ง WP ที่คุณวางแผนจะใช้งานและเรียกใช้ wp option get home เพื่อให้แน่ใจว่าคุณใช้การติดตั้ง WP ที่ถูกต้องและ WP-CLI นั้นใช้งานได้

การทำงานกับ WP-CLI บน Windows 10 – เอาต์พุตสำหรับคำสั่ง “site-info” ที่กำหนดเองของเรา

ง่ายกว่าที่คิด

อันดับแรก เราต้องการฟังก์ชันที่จะบอกเราว่าผู้ใช้โต้ตอบกับ WP ผ่าน CLI หรือไม่ มีประโยชน์สำหรับหลายๆ อย่าง เช่น การไม่ส่งส่วนหัว HTTP ใดๆ ขณะอยู่ใน CLI และไม่รวมฟังก์ชัน CLI ในการเรียก "ปกติ" นอกจากนี้ยังเปิดโอกาสให้เรานำฟังก์ชันเก่าที่เขียนขึ้นสำหรับ GUI มาใช้ซ้ำโดยมีการเปลี่ยนแปลงเพียงเล็กน้อย

function is_cli_running() {
  return defined( 'WP_CLI' ) && WP_CLI;
}

ขั้นตอนต่อไปคือการหาชื่อสำหรับคำสั่ง CLI ของคุณ มีคำสั่งในตัวประมาณ 40 คำสั่ง ดังนั้นคุณจึงไม่สามารถใช้ชื่อเหล่านั้นได้ และคุณควรหลีกเลี่ยงชื่อแบรนด์ใดๆ เช่น “google” เนื่องจากคุณอาจไม่ได้เป็นเจ้าของ Google ตามหลักการแล้ว ควรเป็นชื่อของปลั๊กอินหรือชื่อร่มสำหรับชุดของฟังก์ชันที่ทำ ดังนั้นคุณสามารถใส่คำสั่งทั้งหมดภายใต้คำสั่งนั้น เพื่อไม่ให้เนมสเปซหลักเสียหาย เป็นสามัญสำนึกเช่นเดียวกับโค้ดชิ้นใดชิ้นหนึ่ง ลองใช้ site-info และเราจะสร้างฟังก์ชันบางอย่างที่ส่งคืนข้อมูลต่างๆ เกี่ยวกับไซต์

เพื่อให้ทุกอย่างเรียบร้อยและเป็นระเบียบเรียบร้อย ให้ใส่รหัสที่เกี่ยวข้องกับ WP-CLI ทั้งหมดลงในไฟล์ใหม่ – custom-wp-cli-commands.php เราจะรวมไฟล์นั้นเมื่อจำเป็นและเมื่อรหัสที่เกี่ยวข้องกับ CLI ทั้งหมดพร้อมใช้งานเท่านั้น สำหรับสิ่งนั้น เราจะใช้ฟังก์ชันที่เราเพิ่งสร้างขึ้น เพื่อการทดสอบและการเรียนรู้ ให้วางไฟล์นั้นไว้ในโฟลเดอร์ของธีมที่ใช้งานอยู่ แล้วเพิ่มไฟล์นี้ลงในไฟล์ functions.php ของธีม

if ( is_cli_running() ) {
  require_once 'custom-wp-cli-commands.php';
}

จากนั้นใส่ไว้ใน custom-wp-cli-commands.php ;

/**
 * Just a few sample commands to learn how WP-CLI works
 */
class cli_site_info extends WP_CLI_Command {
  /**
   * Display version information.
   * ## OPTIONS
   *
   * [--wponly]
   * : Shows only WP version info, omitting the plugin one.
   */
  function version( $args, $assoc_args ) {
    if ( !empty( $assoc_args['wponly'] ) ) {
      WP_CLI::line( 'Version of WordPress is ' . get_bloginfo( 'version' ) . '.' );
    } else {
      WP_CLI::line( 'Version of this plugin is 0.1-beta, and version of WordPress ' . get_bloginfo( 'version' ) . '.' );
    }
  }
    
    
  /**
   * Display the number of plugins.
   */
  function plugins() {
    WP_CLI::line( 'There are a total of ' . sizeof( get_plugins() ) . ' plugins on this site.' );
  }
}

WP_CLI::add_command( 'site-info', 'cli_site_info' );

หากคุณเปิดไซต์ หน้าแรก หรือผู้ดูแลระบบ ในเบราว์เซอร์จะไม่มีอะไรเกิดขึ้น ดีแล้ว. ในการทดสอบคำสั่ง CLI ใหม่ ให้กลับไปที่หน้าต่างบรรทัดคำสั่งของคุณ รัน wp site-info version แล้วคุณจะได้ปลั๊กอินและเวอร์ชันของไซต์ หรือเรียกใช้ wp site-info plugins คุณจะได้รับจำนวนปลั๊กอินทั้งหมดบนเว็บไซต์ ง่ายใช่มั้ย? มาดูโค้ดกัน

ง่ายเหมือนการขยายคลาส PHP

คลาส cli_site_info ของเราขยายคลาส WP_CLI_Command ไม่มีอะไรแฟนซีที่นั่น เรียกชั้นอะไรก็ได้ตามใจชอบ สิ่งที่สำคัญคือรหัสในบรรทัดสุดท้ายของไฟล์ – WP_CLI::add_command( 'site-info', 'cli_site_info' ) มันลงทะเบียนคำสั่งระดับบนสุดของเราและเชื่อมโยงคลาสของเรากับมัน หากคุณต้องการเปลี่ยนคำสั่ง site-info เป็นอย่างอื่น นี่คือที่ที่ต้องทำ

ทุกเมธอดสาธารณะ (ฟังก์ชัน) ในคลาสเป็นคำสั่งย่อยใน WP-CLI อย่าลืมตรวจสอบกายวิภาคของคำสั่งเพื่อเรียนรู้ศัพท์แสง WP-CLI ที่เหมาะสม ไม่จำเป็นต้อง "ลงทะเบียน" วิธีการใดๆ หรือทำอะไรเพิ่มเติม เช่นเดียวกับที่เราทำสำหรับ plugins() และ version() – สร้างฟังก์ชันมาตรฐาน เท่านี้ก็เรียบร้อย WP-CLI จะได้รู้ว่าต้องทำอย่างไร

เมื่อคุณอยู่ในวิธีการนี้แล้ว คุณสามารถเรียกใช้โค้ดใดก็ได้ที่ต้องการ อย่างไรก็ตาม การโต้ตอบกับ CLI จะต้องใช้ฟังก์ชันที่กำหนดเองบางอย่าง เนื่องจากสิ่งต่างๆ เช่น echo จะไม่ทำงานตามที่คาดไว้ แทนที่จะ echo มี WP_CLI::line() WP-CLI API ภายในครอบคลุมทุกสิ่งที่คุณต้องการ และฟังก์ชันทั้งหมดได้รับการจัดทำเป็นเอกสารอย่างดี รวมทั้งแยกออกเป็นอินพุต เอาต์พุต เบ็ดเตล็ด ระบบ และหมวดหมู่อื่นๆ ซึ่งทำให้ค้นหาได้ง่ายสุดๆ

นอกจากการพิมพ์ข้อความแล้ว คุณอาจต้องการใช้อาร์กิวเมนต์คำสั่ง (เชื่อมโยง) เพื่อให้คุณสามารถเรียกสิ่งต่าง ๆ เช่น wp site-info version --wponly (ลองใช้งาน) ซึ่งแสดงเฉพาะข้อมูลเวอร์ชัน WP อาร์กิวเมนต์ที่เชื่อมโยงจะถูกเก็บไว้ในอาร์กิวเมนต์ของฟังก์ชันที่สองของเมธอด ในกรณีของเราเรียกว่า $assoc_args เหลือเพียงการทดสอบคีย์อาร์เรย์สำหรับค่าเฉพาะและปรับโค้ดตามนั้น ตามที่เราทำใน function version( $args, $assoc_args )

เอกสารและความช่วยเหลือใน CLI

WP-CLI มีระบบช่วยเหลือในตัว มันค่อนข้างสะดวก ไม่จำเป็นต้องมีเอกสารภายนอกสำหรับคำสั่งใดๆ หากนักพัฒนาใช้เวลาสักเล็กน้อยเพื่ออธิบายคำสั่งในโค้ดของเขา เอกสารจะไม่เขียนเอง (น่าเสียดาย) แต่ถ้าคุณลงทุนขั้นต่ำเปล่าในขณะที่สร้างคำสั่ง ผู้ใช้จะรู้สึกขอบคุณตลอดไป เพราะคุณจะรวมเอกสารทั้งหมดไว้ในที่เดียว

คุณเขียนเอกสารในชั้นเรียนของคุณเป็นความคิดเห็น โดยใช้รูปแบบ PHPDoc สำหรับการขุดลึกยิ่งขึ้น โปรดดูคู่มือ CLI โดยการรัน wp help site-info คุณจะได้รับรายการและคำอธิบายของคำสั่งย่อยของเรา และถ้าคุณดูในโค้ด คุณจะเห็นว่ามันมาจากไหน อธิบายตนเองได้ดีมาก สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับคำสั่งย่อยเวอร์ชัน ให้รัน wp help site-info version และคุณจะได้รับรายละเอียดเกี่ยวกับตัวเลือกด้วย

แม้ว่าจะไม่ได้ใช้โดยคนจำนวนมาก แต่ @wpcli มักถูกใช้โดยผู้ที่กำหนดอนาคตของ #WordPress & ความคิดเห็นของผู้ใช้จำนวนมาก การเพิ่ม CLI ให้กับปลั๊กอินของคุณอาจเป็นการเคลื่อนไหวที่ชาญฉลาด

คลิกเพื่อทวีต

ทำให้ผู้ใช้ของคุณมีความสุข

แน่นอนว่า หากคุณกำลังพัฒนาวิดเจ็ตสภาพอากาศที่เพิ่มการรองรับ WP-CLI ดูเหมือนจะไม่ใช่วิธีที่ถูกต้อง อย่างไรก็ตาม เครื่องมือใดๆ ที่ใช้โดย devs และผู้ดูแลระบบ die-hard เช่น WP Reset จะได้รับประโยชน์อย่างมากจาก WP-CLI ผู้ใช้จะสามารถใช้คำสั่งลูกโซ่ เขียนสคริปต์ทุบตี และทำสิ่งต่างๆ ให้เสร็จได้เร็วและง่ายขึ้น นั่นนำไปสู่การรีวิวที่ดีขึ้น ผู้ใช้ที่มีความสุขมากขึ้น ผู้ใช้มากขึ้นและในที่สุด เงินก็มากขึ้นสำหรับคุณ โดยไม่คำนึงถึงรูปแบบการสร้างรายได้ที่คุณมี