อย่าทำซ้ำตัวเอง: ทำงานซ้ำ ๆ โดยอัตโนมัติด้วย WP-CLI

เผยแพร่แล้ว: 2022-03-11

คุณเคยพบว่าตัวเองกำลังเข้าสู่พื้นที่ผู้ดูแลระบบ WordPress เพื่ออัปเดตธีม ปลั๊กอิน และแกน WP หรือไม่? แน่นอนคุณมี คุณเคยถูกถามว่า "คุณสามารถสร้าง/อัปเดต/ลบผู้ใช้ทั้งหมดในไฟล์ CSV นี้ได้หรือไม่" ฉันแน่ใจว่าคุณเคยเจอเรื่องนั้นเหมือนกัน คุณได้ลองย้ายไซต์แล้วและต้องการมีปลั๊กอินหรือเครื่องมือของบุคคลที่สามที่คุณเอื้อมถึงได้เพื่อทำงานนี้หรือไม่? ฉันรู้ว่าฉันมี!

ทำงานซ้ำๆ โดยอัตโนมัติด้วย WP-CLI

มีเครื่องมืออันทรงพลังที่จะช่วยคุณทำงานเหล่านี้และอื่นๆ อีกมากมาย ก่อนที่ฉันจะบอกคุณเกี่ยวกับเรื่องนี้ ฉันต้องการตั้งค่าเกร็ดเล็กเกร็ดน้อย

ปัญหา: ในโครงการล่าสุด มีงานทางโปรแกรมหลายอย่างที่ฉันต้องทำซ้ำเป็นประจำ งานหนึ่งโดยเฉพาะเกี่ยวข้องกับการอัปเดตการอนุญาตระดับผู้ใช้ตามหลักฐานการซื้อหรือสมัครสมาชิกระดับสมาชิก หากบริษัทไม่พบการชำระเงินจากผู้ใช้สำหรับระดับการเป็นสมาชิกเฉพาะ พวกเขาต้องการให้ลบระดับการเป็นสมาชิกออกจากผู้ใช้ ทำไมสิ่งนี้จึงจำเป็น? บางทีสมาชิกอาจหยุดการสมัครรับข้อมูล แต่กิจกรรมไม่เริ่มทำงาน ดังนั้นสมาชิกยังคงสามารถเข้าถึงได้แม้ว่าพวกเขาจะไม่ได้ชำระเงิน (ใช่!) หรืออาจมีใครบางคนกำลังทดลองใช้ข้อเสนอ แต่ข้อเสนอนั้นหมดอายุแล้วและลูกค้ายังคงมีการสมัครรับข้อมูลอยู่ (เช่นกัน!)

วิธีแก้ปัญหา: แทนที่จะไปที่แผงการดูแลระบบและลบการสมัครรับข้อมูลหลายร้อย (อาจเป็นพัน) ด้วยตนเอง ฉันเลือกที่จะเข้าถึงเครื่องมือ WordPress ที่ฉันโปรดปรานอย่าง WP-CLI ซึ่งแก้ไขปัญหาด้วยการกดแป้นเพียงไม่กี่ครั้ง

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

WP-CLI คืออะไร?

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

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

คำสั่งต่อไปนี้จะแสดงให้คุณเห็นถึงพลังของ WP-CLI ทันทีที่แกะกล่อง:

  • wp plugin update --all ที่อัปเดตได้ทั้งหมด
  • wp db export ออกการถ่ายโอนข้อมูล SQL ของฐานข้อมูลของคุณ
  • wp media regenerate สร้างภาพขนาดย่อสำหรับสิ่งที่แนบมา (เช่น หลังจากที่คุณเปลี่ยนขนาดในธีมของคุณ)
  • wp checksum core ตรวจสอบว่าไฟล์หลักของ WordPress ไม่ถูกดัดแปลง
  • wp search-replace ค้นหาและแทนที่สตริงในฐานข้อมูล

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

คุณมั่นใจ? พร้อมที่จะเริ่มต้นหรือยัง ยอดเยี่ยม!

คุณจะต้องติดตั้ง WP-CLI กับ WordPress ของคุณ (หรือทั่วโลกในเครื่องของคุณ) หากคุณยังไม่ได้ติดตั้ง WP-CLI บนสภาพแวดล้อมการพัฒนาในพื้นที่ สามารถดูคำแนะนำในการติดตั้งได้บนเว็บไซต์ที่นี่ หากคุณกำลังใช้ Varying Vagrant Vagrants (VVV2) WP-CLI จะรวมอยู่ด้วย ผู้ให้บริการโฮสติ้งหลายรายมี WP-CLI รวมอยู่ในแพลตฟอร์มด้วย ฉันจะถือว่าคุณติดตั้งสำเร็จแล้วในอนาคต

การใช้ WP-CLI เพื่อแก้ปัญหา

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

  1. เราจะสามารถปิดคำสั่งที่กำหนดเองได้หากไม่ต้องการ
  2. เราสามารถขยายคำสั่งและคำสั่งย่อยของเราทั้งหมดได้อย่างง่ายดายโดยยังคงรักษาสิ่งต่าง ๆ ให้เป็นโมดูล
  3. เราสามารถรักษาฟังก์ชันการทำงานข้ามธีมและแม้กระทั่งการติดตั้ง WordPress อื่นๆ

การสร้างปลั๊กอิน

ในการสร้างปลั๊กอิน เราจำเป็นต้องเพิ่มไดเร็กทอรีไปยังไดเร็กทอรี /plugins ในไดเร็กทอรี wp-content ของเรา เราสามารถเรียกไดเร็กทอรีนี้ toptal-wpcli จากนั้นสร้างสองไฟล์ในไดเร็กทอรีนั้น:

  • index.php ซึ่งควรมีเพียงหนึ่งบรรทัดของรหัส: <?php // Silence is golden
  • plugin.php ซึ่งเป็นที่ที่โค้ดของเราจะไป (คุณสามารถตั้งชื่อไฟล์นี้ได้ตามที่คุณต้องการ)

เปิดไฟล์ plugin.php และเพิ่มรหัสต่อไปนี้:

 <?php /** * Plugin Name: TOPTAL WP-CLI Commands * Version: 0.1 * Plugin URI: https://n8finch.com/ * Description: Some rando wp-cli commands to make life easier... * Author: Nate Finch * Author URI: https://n8finch.com/ * Text Domain: toptal-wpcli * Domain Path: /languages/ * License: GPL v3 */ /** * NOTE: THIS PLUGIN FILE WILL NOT WORK IN PRODUCTION AS IS AND IS ONLY FOR DEMONSTRATION PURPOSES! * You can of course take the code and repurpose it:-). */ if ( !defined( 'WP_CLI' ) && WP_CLI ) { //Then we don't want to load the plugin return; }

มีหลายบรรทัดแรกเหล่านี้มีสองส่วน

อันดับแรก เรามีส่วนหัวของปลั๊กอิน ข้อมูลนี้ถูกดึงเข้าสู่หน้าผู้ดูแลระบบปลั๊กอิน WordPress และช่วยให้เราสามารถลงทะเบียนปลั๊กอินของเราและเปิดใช้งานได้ ต้องใช้ชื่อปลั๊กอินเท่านั้น แต่เราควรรวมส่วนที่เหลือไว้สำหรับทุกคนที่อาจต้องการใช้รหัสนี้ (รวมถึงตัวของเราในอนาคตด้วย!)

ประการที่สอง เราต้องการตรวจสอบว่ามีการกำหนด WP-CLI นั่นคือ เรากำลังตรวจสอบเพื่อดูว่ามีค่าคงที่ WP-CLI หรือไม่ หากไม่เป็นเช่นนั้น เราต้องการประกันตัวและไม่เรียกใช้ปลั๊กอิน หากมีอยู่ แสดงว่าเราสามารถเรียกใช้โค้ดที่เหลือได้อย่างชัดเจน

ระหว่างสองส่วนนี้ ฉันได้เพิ่มหมายเหตุว่าโค้ดนี้ไม่ควรใช้ "ตามที่เป็น" ในการผลิต เนื่องจากฟังก์ชันบางส่วนเป็นตัวยึดตำแหน่งสำหรับฟังก์ชันจริง หากคุณเปลี่ยนฟังก์ชันที่พักเหล่านี้เป็นฟังก์ชันที่ใช้งานได้จริง โปรดลบบันทึกย่อนี้

การเพิ่มคำสั่งกำหนดเอง

ต่อไป เราต้องการรวมรหัสต่อไปนี้:

 class TOPTAL_WP_CLI_COMMANDS extends WP_CLI_Command { function remove_user() { echo "\n\n hello world \n\n"; } } WP_CLI::add_command( 'toptal', 'TOPTAL_WP_CLI_COMMANDS' );

บล็อกของรหัสนี้ทำสองสิ่งสำหรับเรา:

  1. มันกำหนดคลาส TOPTAL_WP_CLI_COMMANDS ซึ่งเราสามารถส่งผ่านอาร์กิวเมนต์ได้
  2. มันกำหนดคำสั่ง toptal ให้กับคลาส เพื่อให้เราสามารถเรียกใช้จากบรรทัดคำสั่ง

ตอนนี้ถ้าเรารัน wp toptal remove_user เราจะเห็น:

 $ wp toptal hello hello world

ซึ่งหมายความว่าคำสั่ง toptal ของเราได้รับการลงทะเบียนและคำสั่งย่อย remove_user ของเรากำลังทำงาน

การตั้งค่าตัวแปร

เนื่องจากเรากำลังดำเนินการลบผู้ใช้จำนวนมาก เราจึงต้องการตั้งค่าตัวแปรต่อไปนี้:

 // Keep a tally of warnings and loops $total_warnings = 0; $total_users_removed = 0; // If it's a dry run, add this to the end of the success message $dry_suffix = ''; // Keep a list of emails for users we may want to double check $emails_not_existing = array(); $emails_without_level = array(); // Get the args $dry_run = $assoc_args['dry-run']; $level = $assoc_args['level']; $emails = explode( ',', $assoc_args['email'] );

เจตนาของตัวแปรแต่ละตัวมีดังนี้:

  • total_warnings : เราจะนับการเตือนหากไม่มีอีเมล หรือหากอีเมลไม่เกี่ยวข้องกับระดับสมาชิกที่เรากำลังลบ
  • $total_users_removed : เราต้องการนับจำนวนผู้ใช้ที่ถูกลบในกระบวนการ (ดูข้อแม้ด้านล่าง)
  • $dry_suffix : หากเป็นการดำเนินการแบบแห้ง เราต้องการเพิ่มถ้อยคำในการแจ้งความสำเร็จขั้นสุดท้าย
  • $emails_not_existing : เก็บรายชื่ออีเมลที่ไม่มีอยู่
  • $emails_without_level : เก็บรายชื่ออีเมลที่ไม่มีระดับที่ระบุ
  • $dry_run : บูลีนที่เก็บว่าสคริปต์กำลังทำงานแบบแห้ง (จริง) หรือไม่ (เท็จ)
  • $level : จำนวนเต็มแสดงถึงระดับที่จะตรวจสอบและอาจลบออก
  • $email : อาร์เรย์ของอีเมลที่จะตรวจสอบกับระดับที่กำหนด เราจะวนรอบอาร์เรย์นี้

เมื่อตั้งค่าตัวแปร เราก็พร้อมที่จะเรียกใช้ฟังก์ชันจริง ตามแบบฉบับของ WordPress เราจะดำเนินการวนซ้ำ

การเขียนฟังก์ชันเอง

เราเริ่มต้นด้วยการสร้าง foreach loop เพื่อวนรอบอีเมลทั้งหมดในอาร์เรย์ $emails ของเรา:

 // Loop through emails foreach ( $emails as $email ) { // code coming soon } // end foreach

จากนั้น เราเพิ่มการตรวจสอบตามเงื่อนไข:

 // Loop through emails foreach ( $emails as $email ) { //Get User ID $user_id = email_exists($email); if( !$user_id ) { WP_CLI::warning( "The user {$email} does not seem to exist." ); array_push( $emails_not_existing, $email ); $total_warnings++; continue; } } // end foreach

การตรวจสอบนี้ช่วยให้มั่นใจว่าเรามีผู้ใช้ที่ลงทะเบียนพร้อมอีเมลที่เรากำลังตรวจสอบอยู่ ใช้ email_exists() เพื่อตรวจสอบว่ามีผู้ใช้อีเมลนั้นหรือไม่ หากไม่พบผู้ใช้ที่มีอีเมลนั้น ระบบจะส่งคำเตือนเพื่อให้เราทราบบนหน้าจอเทอร์มินัลว่าไม่พบอีเมลดังกล่าว:

 $ wp toptal remove_user [email protected] --dry-run Warning: The user [email protected] does not seem to exist.

อีเมลจะถูกเก็บไว้ในอาร์เรย์ $emails_not_existing เพื่อแสดงผลในภายหลัง จากนั้นเราเพิ่มการเตือนทั้งหมดทีละรายการและดำเนินการวนซ้ำไปยังอีเมลฉบับถัดไป

หากมีอีเมล เราจะใช้ตัวแปร $user_id และ $level เพื่อตรวจสอบว่าผู้ใช้มีสิทธิ์เข้าถึงระดับหรือไม่ เราเก็บค่าบูลีนที่ได้ไว้ในตัวแปร $has_level :

 // Loop through emails foreach ( $emails as $email ) { //Get User ID $user_id = email_exists($email); if( !$user_id ) { WP_CLI::warning( "The user {$email} does not seem to exist." ); array_push( $emails_not_existing, $email ); $total_warnings++; continue; } // Check membership level. This is a made up function, but you could write one or your membership plugin probably has one. $has_level = function_to_check_membership_level( $level, $user_id ); } // end foreach

เช่นเดียวกับฟังก์ชันส่วนใหญ่ในตัวอย่างนี้ function_to_check_membership_level() นี้ถูกสร้างขึ้นมา แต่ปลั๊กอินสำหรับสมาชิกส่วนใหญ่ควรมีฟังก์ชันตัวช่วยเพื่อให้คุณได้รับข้อมูลนี้

ตอนนี้ เราจะไปยังการดำเนินการหลัก: ลบระดับออกจากผู้ใช้ เราจะใช้โครงสร้าง if/else ซึ่งมีลักษณะดังนี้:

 foreach ( $emails as $email ) { // Previous code here... // Check membership level. This is a made up function, but you could write one or your membership plugin probably has one. $has_level = function_to_check_membership_level( $level, $user_id ); if ( $has_level ) { if ( !$dry_run ) { // Deactivate membership level. This is a made up function, but you could write one or your membership plugin probably has one. function_to_deactivate_membership_level( $level, $user_id, 'inactive' ); } WP_CLI::success( "Membership canceled for {$email}, Level {$level} removed" . PHP_EOL ); $total_users_removed++; } else { WP_CLI::warning( "The user {$email} does not have Level = {$level} membership." ); array_push( $emails_without_level, $email ); $total_warnings++; } // We could echo something here to show that things are processing... } // end foreach

หากค่าของ $has_level คือ “จริง” หมายความว่าผู้ใช้สามารถเข้าถึงระดับสมาชิกภาพได้ เราต้องการเรียกใช้ฟังก์ชันเพื่อลบระดับนั้น ในตัวอย่างนี้ เราจะใช้ function_to_deactivate_membership_level() เพื่อดำเนินการนี้

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

ในทางกลับกัน หากค่าของ $has_level เป็น "เท็จ" หมายความว่าผู้ใช้ไม่มีสิทธิ์เข้าถึงระดับสมาชิก เราต้องการบันทึกคำเตือนไปยังเทอร์มินัล ดันอีเมลไปที่อาร์เรย์ $emails_without_level และดำเนินการต่อ วนซ้ำผ่านอีเมล

เสร็จสิ้นและการรายงาน

เมื่อวนซ้ำเสร็จสิ้น เราต้องการบันทึกผลลัพธ์ของเราไปยังคอนโซล หากเป็นการดำเนินการแบบแห้ง เราต้องการบันทึกข้อความพิเศษไปยังคอนโซล:

 if ( $dry_run ) { $dry_suffix = 'BUT, nothing really changed because this was a dry run:-).'; }

$dry-suffix นี้จะถูกผนวกเข้ากับคำเตือนและการแจ้งเตือนความสำเร็จที่เราบันทึกต่อไป

เมื่อเสร็จสิ้น เราต้องการบันทึกผลลัพธ์ของเราเป็นข้อความแสดงความสำเร็จ และคำเตือนของเราเป็นข้อความเตือน เราจะทำดังนี้:

 WP_CLI::success( "{$total_users_removed} User/s been removed, with {$total_warnings} warnings. {$dry_suffix}" ); if ( $total_warnings ) { $emails_not_existing = implode(',', $emails_not_existing); $emails_without_level = implode(',', $emails_without_level); WP_CLI::warning( "These are the emails to double check and make sure things are on the up and up:" . PHP_EOL . "Non-existent emails: " . $emails_not_existing . PHP_EOL . "Emails without the associated level: " . $emails_without_level . PHP_EOL ); }

โปรดทราบว่าเรากำลังใช้วิธีการตัว WP_CLI::success และ WP_CLI::warning helper สิ่งเหล่านี้ถูกจัดเตรียมโดย WP-CLI สำหรับการบันทึกข้อมูลไปยังคอนโซล คุณสามารถบันทึกสตริงได้อย่างง่ายดาย ซึ่งเป็นสิ่งที่เราทำที่นี่ รวมถึงตัวแปร $total_users_removed , $total_warnings และ $dry_suffix

สุดท้าย หากเราได้รับคำเตือนตลอดรันไทม์ของสคริปต์ เราต้องการพิมพ์ข้อมูลนั้นไปยังคอนโซล หลังจากรันการตรวจสอบเงื่อนไข เราจะแปลงตัวแปรอาร์เรย์ $emails_not_existing และ $emails_without_level เป็นตัวแปรสตริง เราทำเช่นนี้เพื่อให้เราสามารถพิมพ์ไปยังคอนโซลโดยใช้วิธีการตัวช่วย WP_CLI::warning

การเพิ่มคำอธิบาย

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

 /** * Remove a membership level from a user * * ## OPTIONS * --level=<number> * : Membership level to check for and remove * * --email=<email> * : Email of user to check against * * [--dry-run] * : Run the entire search/replace operation and show report, but don't save changes to the database. * * ## EXAMPLES * * wp toptal remove_user --level=5 [email protected],[email protected], [email protected] --dry-run * * @when after_wp_load */

ใน longdesc เรากำหนดสิ่งที่เราคาดหวังให้คำสั่งกำหนดเองของเราได้รับ ไวยากรณ์สำหรับ shortdesc และ longdesc คือ Markdown Extra ภายใต้ส่วน ## OPTIONS เรากำหนดอาร์กิวเมนต์ที่เราคาดว่าจะได้รับ หากต้องการอาร์กิวเมนต์ เราจะใส่อาร์กิวเมนต์ไว้ใน < > และหากเป็นทางเลือก เราจะใส่อาร์กิวเมนต์ลงใน [ ]

ตัวเลือกเหล่านี้ได้รับการตรวจสอบเมื่อรันคำสั่ง ตัวอย่างเช่น หากเราไม่ระบุพารามิเตอร์อีเมลที่จำเป็น เราจะได้รับข้อผิดพลาดดังต่อไปนี้:

 $ wp toptal remove_user --level=5 --dry-run Error: Parameter errors: missing --email parameter (Email of user to check against)

ส่วน ## EXAMPLES มีตัวอย่างว่าคำสั่งจะมีลักษณะอย่างไรเมื่อมีการเรียก

คำสั่งกำหนดเองของเราเสร็จสมบูรณ์แล้ว คุณสามารถดูส่วนสำคัญสุดท้ายได้ที่นี่

คำเตือนและห้องสำหรับการปรับปรุง

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

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

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

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

พื้นที่อื่นในการปรับปรุงสคริปต์คือการอนุญาตให้ลบหลายระดับในแต่ละครั้งออกจากที่อยู่อีเมลเดียว สคริปต์สามารถตรวจจับได้โดยอัตโนมัติหากมีระดับหนึ่งหรือหลายระดับ และต้องลบอีเมลหนึ่งฉบับขึ้นไป ฉันได้รับไฟล์ CSV ตามระดับ ดังนั้นฉันจึงต้องเรียกใช้ทีละระดับเท่านั้น

เรายังสามารถปรับโครงสร้างโค้ดบางตัวใหม่เพื่อใช้ตัวดำเนินการ ternary แทนการตรวจสอบแบบมีเงื่อนไขแบบละเอียดที่เรามีในปัจจุบัน ฉันได้เลือกที่จะทำให้การอ่านง่ายขึ้นเพื่อการสาธิต แต่อย่าลังเลที่จะสร้างโค้ดของคุณเอง

ในขั้นตอนสุดท้าย แทนที่จะพิมพ์อีเมลไปยังคอนโซลในขั้นตอนสุดท้าย เราสามารถส่งออกไปยังไฟล์ CSV หรือไฟล์ข้อความธรรมดาได้โดยอัตโนมัติ

สุดท้าย ไม่มีการตรวจสอบเพื่อให้แน่ใจว่าเราได้รับจำนวนเต็มสำหรับตัวแปร $level หรืออีเมลหรือรายการอีเมลที่คั่นด้วยเครื่องหมายจุลภาคในตัวแปร $emails ในปัจจุบัน หากมีคนใส่สตริงแทนที่จะเป็นจำนวนเต็ม หรือชื่อผู้ใช้สำหรับเข้าสู่ระบบแทนอีเมล สคริปต์จะไม่ทำงาน (และไม่มีข้อผิดพลาด) สามารถเพิ่มการตรวจสอบจำนวนเต็มและอีเมลได้

แนวคิดสำหรับการทำงานอัตโนมัติเพิ่มเติมและการอ่านเพิ่มเติม

อย่างที่คุณเห็น แม้แต่ในกรณีการใช้งานเฉพาะนี้ WP-CLI ค่อนข้างยืดหยุ่นและมีประสิทธิภาพเพียงพอที่จะช่วยให้คุณทำงานให้เสร็จได้อย่างรวดเร็วและมีประสิทธิภาพ คุณอาจกำลังสงสัยกับตัวเองว่า “ฉันจะเริ่มใช้ WP-CLI ในขั้นตอนการพัฒนารายวันและรายสัปดาห์ได้อย่างไร”

คุณสามารถใช้ WP-CLI ได้หลายวิธี นี่คือรายการโปรดบางส่วนของฉัน:

  • อัปเดตธีม ปลั๊กอิน และคอร์ WP โดยไม่ต้องไปที่แผงการดูแลระบบ
  • ส่งออกฐานข้อมูลสำหรับการสำรองข้อมูลหรือดำเนินการดัมพ์ SQL อย่างรวดเร็ว หากฉันต้องการทดสอบการสืบค้น SQL
  • โยกย้ายไซต์ WordPress
  • ติดตั้งไซต์ WordPress ใหม่ด้วยข้อมูลจำลองหรือการตั้งค่าชุดปลั๊กอินที่กำหนดเอง
  • เรียกใช้ checksums ในไฟล์หลักเพื่อให้แน่ใจว่าไม่มีการบุกรุก (จริงๆ แล้วมีโครงการที่กำลังดำเนินการเพื่อขยายไปยังธีมและปลั๊กอินใน WP repo)
  • เขียนสคริปต์ของคุณเองเพื่อตรวจสอบ อัปเดต และดูแลโฮสต์ของไซต์ (ซึ่งฉันเขียนเกี่ยวกับที่นี่)

ความเป็นไปได้ของ WP-CLI นั้นไร้ขีดจำกัด นี่คือแหล่งข้อมูลบางส่วนที่จะช่วยให้คุณก้าวไปข้างหน้า:

  • เว็บไซต์ WP-CLI หลัก: http://wp-cli.org
  • คำสั่ง WP-CLI: https://developer.wordpress.org/cli/commands/
  • บล็อก WP-CLI อย่างเป็นทางการ: https://make.wordpress.org/cli/
  • คู่มือ WP-CLI: https://make.wordpress.org/cli/handbook/
  • เข้าสู่ WooCommerce? ชำระเงิน WC-CLI: https://github.com/woocommerce/woocommerce/wiki/WC-CLI-Overview#woocommerce-commands
  • บทสัมภาษณ์กับ Daniel Bachhuber ผู้ดูแลโครงการ: https://howibuilt.it/episode-28-daniel-bachhuber-wp-cli/