อย่าทำซ้ำตัวเอง: ทำงานซ้ำ ๆ โดยอัตโนมัติด้วย WP-CLI
เผยแพร่แล้ว: 2022-03-11คุณเคยพบว่าตัวเองกำลังเข้าสู่พื้นที่ผู้ดูแลระบบ WordPress เพื่ออัปเดตธีม ปลั๊กอิน และแกน WP หรือไม่? แน่นอนคุณมี คุณเคยถูกถามว่า "คุณสามารถสร้าง/อัปเดต/ลบผู้ใช้ทั้งหมดในไฟล์ CSV นี้ได้หรือไม่" ฉันแน่ใจว่าคุณเคยเจอเรื่องนั้นเหมือนกัน คุณได้ลองย้ายไซต์แล้วและต้องการมีปลั๊กอินหรือเครื่องมือของบุคคลที่สามที่คุณเอื้อมถึงได้เพื่อทำงานนี้หรือไม่? ฉันรู้ว่าฉันมี!
มีเครื่องมืออันทรงพลังที่จะช่วยคุณทำงานเหล่านี้และอื่นๆ อีกมากมาย ก่อนที่ฉันจะบอกคุณเกี่ยวกับเรื่องนี้ ฉันต้องการตั้งค่าเกร็ดเล็กเกร็ดน้อย
ปัญหา: ในโครงการล่าสุด มีงานทางโปรแกรมหลายอย่างที่ฉันต้องทำซ้ำเป็นประจำ งานหนึ่งโดยเฉพาะเกี่ยวข้องกับการอัปเดตการอนุญาตระดับผู้ใช้ตามหลักฐานการซื้อหรือสมัครสมาชิกระดับสมาชิก หากบริษัทไม่พบการชำระเงินจากผู้ใช้สำหรับระดับการเป็นสมาชิกเฉพาะ พวกเขาต้องการให้ลบระดับการเป็นสมาชิกออกจากผู้ใช้ ทำไมสิ่งนี้จึงจำเป็น? บางทีสมาชิกอาจหยุดการสมัครรับข้อมูล แต่กิจกรรมไม่เริ่มทำงาน ดังนั้นสมาชิกยังคงสามารถเข้าถึงได้แม้ว่าพวกเขาจะไม่ได้ชำระเงิน (ใช่!) หรืออาจมีใครบางคนกำลังทดลองใช้ข้อเสนอ แต่ข้อเสนอนั้นหมดอายุแล้วและลูกค้ายังคงมีการสมัครรับข้อมูลอยู่ (เช่นกัน!)
วิธีแก้ปัญหา: แทนที่จะไปที่แผงการดูแลระบบและลบการสมัครรับข้อมูลหลายร้อย (อาจเป็นพัน) ด้วยตนเอง ฉันเลือกที่จะเข้าถึงเครื่องมือ 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 ของเรา วิธีที่ง่ายที่สุดในการเพิ่มฟังก์ชันการทำงานให้กับไซต์ใดๆ คือการสร้างปลั๊กอิน เราจะใช้ปลั๊กอินในกรณีนี้ด้วยเหตุผลหลักสามประการ:
- เราจะสามารถปิดคำสั่งที่กำหนดเองได้หากไม่ต้องการ
- เราสามารถขยายคำสั่งและคำสั่งย่อยของเราทั้งหมดได้อย่างง่ายดายโดยยังคงรักษาสิ่งต่าง ๆ ให้เป็นโมดูล
- เราสามารถรักษาฟังก์ชันการทำงานข้ามธีมและแม้กระทั่งการติดตั้ง 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' );
บล็อกของรหัสนี้ทำสองสิ่งสำหรับเรา:
- มันกำหนดคลาส
TOPTAL_WP_CLI_COMMANDS
ซึ่งเราสามารถส่งผ่านอาร์กิวเมนต์ได้ - มันกำหนดคำสั่ง
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/