วิธีดาวน์โหลด, ติดตั้ง, เปิดใช้งาน & แทนที่ปลั๊กอิน WordPress โดยทางโปรแกรม & โดยอัตโนมัติ
เผยแพร่แล้ว: 2018-09-18การให้ผู้ใช้ทำอะไรก็เป็นเรื่องยาก ไม่ว่าจะเป็นการกรอกแบบฟอร์มหรือดำเนินการเพียงไม่กี่คลิก – มีการต่อต้านโดยธรรมชาติ แม้ว่าการกระทำนั้นจะทำเพื่อประโยชน์ของผู้ใช้ เช่น การเปลี่ยนรหัสผ่านที่ไม่รัดกุม พวกเขาจะไม่ทำ เช่นเดียวกับการให้ผู้ใช้ติดตั้งปลั๊กอินที่จำเป็น หรือที่แย่กว่านั้นคือการแทนที่ปลั๊กอินที่ใช้งานอยู่ด้วยปลั๊กอินใหม่ ภารกิจแนวเขตเป็นไปไม่ได้
โชคดีที่ด้วยโค้ดเล็กน้อยและความยินยอมของผู้ใช้ เราสามารถดาวน์โหลด ติดตั้ง เปิดใช้งาน ปิดใช้งาน และแม้กระทั่งลบปลั๊กอิน WordPress กระบวนการอัตโนมัตินี้ เมื่อปรับใช้อย่างมีความรับผิดชอบ สามารถปรับปรุงประสบการณ์ของผู้ใช้ได้อย่างมาก และเพิ่มอัตราการแปลงสำหรับการดำเนินการที่จำเป็นของผู้ใช้ในผู้ดูแลระบบ WordPress
การให้ผู้ใช้ทำอะไรก็เป็นเรื่องยาก เหตุใดจึงไม่ดาวน์โหลด ติดตั้ง & เปิดใช้งานปลั๊กอิน #WordPress โดยอัตโนมัติ ใช้โค้ดเพียงไม่กี่บรรทัด
คลิกเพื่อทวีตทำไมต้องดาวน์โหลด ติดตั้ง และเปิดใช้งานปลั๊กอินผ่านโค้ด?
มีหลายสถานการณ์ แต่นอกเหนือจากทฤษฎีแล้ว มาดูสถานการณ์ WP Reset ที่อยู่ในมือกัน ฉันได้เขียนโพสต์เกี่ยวกับการรีแบรนด์ reset-wp เป็น WP Reset แล้ว นอกเหนือจากสิ่งอื่น ๆ กระบวนการยังเกี่ยวข้องกับการให้ผู้ที่ใช้ reset-wp อยู่แล้วเพื่อลบออกจากเว็บไซต์ของตนแล้วติดตั้ง WP Reset ทำไมบางคนถึงทำอย่างนั้นเพียงเพราะเราถาม? และแม้ว่าพวกเขาต้องการจะทำ พวกเขาจะลังเลเพราะอยู่ไกลจากการคลิกสองครั้ง อย่างไรก็ตาม หากเราอธิบายทุกอย่างและสรุปเป็นปุ่มเดียว “ใช่ ไปข้างหน้า แทนที่ reset-wp ด้วย Reset WP” สิ่งต่างๆ ก็ไม่ได้ดูแย่ขนาดนั้น
อย่ายุ่งกับไซต์ของผู้อื่นโดยไม่ได้รับอนุญาต! ระยะเวลา. แม้จะเป็นเพียง “สิ่งเล็กน้อย” ที่ไม่เย็น ไม่ใช่ไซต์ของคุณ แจ้งให้ผู้ใช้ทราบถึงการเปลี่ยนแปลงใด ๆ เมื่อพวกเขาอัปเดตปลั๊กอินหรือเมื่อคุณเพิ่มคุณสมบัติใหม่
เนื่องจากกฎ wp.org ที่ป้องกันไม่ให้เราติดตามการกระทำของผู้ใช้ (โดยไม่ได้รับความยินยอมจากพวกเขา และเราไม่ต้องการรบกวนพวกเขาด้วยการถาม) ฉันไม่มีตัวเลขที่จะแบ่งปัน แต่สิ่งที่ฉันสามารถบอกคุณได้ก็คือ เราไม่มีข้อตำหนิจากผู้ใช้ reset-wp ที่ผ่านกระบวนการเปลี่ยน หรือเพิ่งเห็นการแจ้งเตือนในปลั๊กอิน และเราได้ดำเนินการตามกระบวนการนี้มานานกว่าเจ็ดสัปดาห์แล้ว
ทำแบบนี้โอเคมั้ย? ผู้ใช้จะรังเกียจไหม
ผู้ใช้จะต้องใส่ใจในสิ่งที่คุณทำอยู่เบื้องหลังอย่างแน่นอน! อย่าทำอย่างนั้น! อย่าทำอะไรโดยไม่ได้รับอนุญาตจากผู้ใช้ โดยเฉพาะอย่างยิ่งถ้าปลั๊กอินโฮสต์อยู่บน wp.org เพราะนั่นขัดต่อกฎ หากคุณทำเช่นนั้น ผู้ดูแลระบบจะลบปลั๊กอินของคุณออกจากที่เก็บโดยทันที
แต่ถ้าคุณขออนุญาต – “เราสามารถแทนที่ปลั๊กอิน A ด้วยปลั๊กอิน B ได้หรือไม่? กรุณายืนยัน." ถ้าอย่างนั้นก็ไม่เป็นไร กระบวนการปิดใช้งานและลบปลั๊กอินหนึ่งตัว และการดาวน์โหลดและเปิดใช้งานปลั๊กอินอื่นใช้เวลามากกว่าสองถึงสามคลิก ดังนั้น หากคุณจัดการเพื่อทำให้กระบวนการนั้นเป็นอัตโนมัติ และลดขั้นตอนให้เหลือเพียงคลิกเดียว ผู้ใช้จะพึงพอใจ
กระบวนการที่คล้ายคลึงกันในการเปิดใช้งานปลั๊กอินที่จำเป็นสำหรับธีมนั้นมีมานานแล้ว และผู้ใช้ก็พอใจกับมัน แทนที่จะติดตามหลายลิงก์เพื่อติดตั้งปลั๊กอิน พวกเขายืนยันว่าพวกเขาตกลงกับกระบวนการและมีการติดตั้งปลั๊กอินหลายตัวในคลิกเดียว
ตามปกติแล้ว ต้องใช้โค้ดเพียงเล็กน้อย
ในโค้ดหลอก นี่คือแนวคิดทั่วไปของสิ่งที่เราต้องการทำ:
// pseudo code only! // DO NOT copy & paste var $old_plugin; var $new_plugin; if ( is_plugin_installed( $new_plugin ) ) { // new plugin is already installed // make sure we have the last version upgrade_plugin( $new_plugin ); } else { install_plugin( $new_plugin ); } if ( !is_plugin_active( $new_plugin ) ) { // new plugin is not active - activate it activate_plugin( $new_plugin ); } // deactivate old plugin deactivate_plugin( $old_plugin ); // if needed delete old plugin delete_plugin( $old_plugin ); // pseudo code only! // DO NOT copy & paste
มันค่อนข้างง่ายและตรงไปตรงมา ตราบใดที่ผู้ใช้มีสิทธิ์ไฟล์ที่ถูกต้อง ตั้งค่าทุกอย่างจะราบรื่น การเปลี่ยนทั้งหมดใช้เวลาไม่เกินหนึ่งหรือสองวินาทีจึงจะเสร็จสมบูรณ์
เราต้องการฟังก์ชั่นบางอย่าง
โชคดีที่ WordPress มีฟังก์ชันส่วนใหญ่ที่เราต้องการไม่ว่าจะทำเสร็จแล้วหรือกึ่งสำเร็จรูป ดังนั้นจึงเป็นเรื่องของการรวมสิ่งต่าง ๆ เข้าด้วยกัน
แนวคิดสำคัญที่ต้องทำความเข้าใจคือ WordPress ระบุปลั๊กอินได้อย่างไร รู้ได้อย่างไรว่าปลั๊กอินตัวใด มันทำได้โดยปลั๊กอินกระสุน - การรวมกันของชื่อโฟลเดอร์ปลั๊กอินและไฟล์ PHP หลัก ตัวอย่างเช่น: hello-dolly/hello-dolly.php ไฟล์ PHP หลักคือไฟล์ที่มีส่วนหัวของปลั๊กอิน ในการรับกระสุนรัน plugin_basename( __FILE__ )
เมื่อใดก็ตามที่คุณต้องตรวจสอบว่าปลั๊กอินทำงานอยู่หรือต้องการทำอะไรกับมัน คุณจำเป็นต้องใช้ตัวทากของปลั๊กอิน ทากนี้คล้ายกันแต่ไม่เหมือนกับทากจาก wp.org บนที่เก็บ กระสุนเป็นเพียงชื่อโฟลเดอร์ โดยไม่มีชื่อไฟล์ ดังนั้นสำหรับ Hello Dolly ก็คือ “สวัสดีดอลลี่” เราไม่ต้องการสิ่งนั้นในขณะนี้ แต่จำเป็นต้องได้รับการชี้แจง สำหรับการอ่านเชิงลึกในหัวข้อที่ค่อนข้างสับสน ลองดูกระทู้นี้ใน Stack Exchange
WordPress ระบุปลั๊กอินด้วยกระสุนของพวกเขา เช่น hello-dolly/hello-dolly.php ในการรับกระสุนรัน plugin_basename( __FILE__ )
ในไฟล์หลักของปลั๊กอิน
is_plugin_active( $plugin_slug )
มีมาให้ในตัว ดังนั้นเราไม่ต้องทำอะไรเลย หน้า Codex ไม่ได้เปิดเผยอะไรมาก มันเป็นฟังก์ชั่นที่เรียบง่าย
is_plugin_installed( $plugin_slug )
ไม่มีมาให้ในตัว แต่มีเพียงไม่กี่บรรทัดในการเขียนโค้ด
function is_plugin_installed( $slug ) { if ( ! function_exists( 'get_plugins' ) ) { require_once ABSPATH . 'wp-admin/includes/plugin.php'; } $all_plugins = get_plugins(); if ( !empty( $all_plugins[$slug] ) ) { return true; } else { return false; } }
ทั้งหมดนี้เป็นฟังก์ชันการทดสอบแบบมีเงื่อนไขที่เราต้องการ ตอนนี้สำหรับคนที่ทำอะไรบางอย่าง activate_plugin( )
มีอยู่แล้วภายในและมีพารามิเตอร์สี่ตัว โปรดตรวจสอบหน้า Codex เกี่ยวกับมัน
deactivate_plugins( $plugin_slug )
ยังมีให้ใช้งานได้ทันที แต่ต้องสังเกตเครื่องหมาย “s” (พหูพจน์) ในชื่อฟังก์ชันด้วย มีพารามิเตอร์บางอย่างเช่นกัน ดังนั้นโปรดอ่านหน้า Codex
install_plugin( $plugin_zip )
มีให้โดยเป็นส่วนหนึ่งของคลาส Plugin_Upgrader
ไม่ต้องใช้โค้ดพิเศษใดๆ แค่คลาสใหม่เท่านั้น เช่นเดียวกันสำหรับ upgrade_plugin( $plugin_slug )
function install_plugin( $plugin_zip ) { include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; wp_cache_flush(); $upgrader = new Plugin_Upgrader(); $installed = $upgrader->install( $plugin_zip ); return $installed; } function upgrade_plugin( $plugin_slug ) { include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; wp_cache_flush(); $upgrader = new Plugin_Upgrader(); $upgraded = $upgrader->upgrade( $plugin_slug ); return $upgraded; }
อาจไม่จำเป็นต้องใช้ wp_cache_flush()
แต่ฉันเพิ่มมันเข้าไปเพื่อความปลอดภัย นอกจากสิ่งที่ต้องใช้เวลานานกว่า 10 มิลลิวินาทีในการรัน มันไม่สามารถทำอันตรายใดๆ ได้
วางมันทั้งหมดเข้าด้วยกัน
หากคุณกำลังอ่านบทความนี้ไม่ใช่เพราะความอยากรู้ แต่เนื่องจากความจำเป็นจริงๆ ในการนำโค้ดไปใช้ในปลั๊กอิน ฉันขอแนะนำให้ติดตั้งปลั๊กอิน reset-wp เป็นอย่างยิ่ง การอ่านเกี่ยวกับโค้ดเป็นเรื่องที่ดี แต่ไม่มีอะไรเทียบได้กับการทดสอบในธรรมชาติ
ความชอบของฉันคือการใช้ admin_action สำหรับเกือบทุกอย่างที่ไม่ต้องการ GUI ของผู้ดูแลระบบแบบเต็ม ดังนั้น เพิ่มสิ่งนี้ในฟังก์ชันที่มีการเพิ่มการกระทำและตัวกรองอื่นๆ: add_action( 'admin_action_replace_plugin', 'replace_plugin' );
. เมื่อผู้ใช้เปิด admin.php?action=replace_plugin รหัสของเราจะทำงาน โปรดอย่าฮาร์ดโค้ด URL นั้น ใช้บางอย่างเช่น: $url = add_query_arg(array('action' => 'replace_plugin'), admin_url('admin.php'));
. มันพูดถึงคุณภาพโค้ดของคุณอย่างมากมาย
นี่คือรหัสที่คุณสามารถคัดลอก/วาง แน่นอน แก้ไขสามตัวแปรด้านบนด้วยค่าของคุณ
function replace_plugin() { // modify these variables with your new/old plugin values $plugin_slug = 'wp-reset/wp-reset.php'; $plugin_zip = 'https://downloads.wordpress.org/plugin/wp-reset.latest-stable.zip'; $old_plugin_slug = 'reset-wp/reset-wp.php'; echo 'If things are not done in a minute <a href="plugins.php">click here to return to Plugins page</a><br><br>'; echo 'Starting ...<br><br>'; echo 'Check if new plugin is already installed - '; if ( is_plugin_installed( $plugin_slug ) ) { echo 'it\'s installed! Making sure it\'s the latest version.'; upgrade_plugin( $plugin_slug ); $installed = true; } else { echo 'it\'s not installed. Installing.'; $installed = install_plugin( $plugin_zip ); } if ( !is_wp_error( $installed ) && $installed ) { echo 'Activating new plugin.'; $activate = activate_plugin( $plugin_slug ); if ( is_null($activate) ) { echo '<br>Deactivating old plugin.<br>'; deactivate_plugins( array( $old_plugin_slug ) ); echo '<br>Done! Everything went smooth.'; } } else { echo 'Could not install the new plugin.'; } } function is_plugin_installed( $slug ) { if ( ! function_exists( 'get_plugins' ) ) { require_once ABSPATH . 'wp-admin/includes/plugin.php'; } $all_plugins = get_plugins(); if ( !empty( $all_plugins[$slug] ) ) { return true; } else { return false; } } function install_plugin( $plugin_zip ) { include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; wp_cache_flush(); $upgrader = new Plugin_Upgrader(); $installed = $upgrader->install( $plugin_zip ); return $installed; } function upgrade_plugin( $plugin_slug ) { include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; wp_cache_flush(); $upgrader = new Plugin_Upgrader(); $upgraded = $upgrader->upgrade( $plugin_slug ); return $upgraded; }
รหัสนี้ใช้ทุกอย่างที่เราพูดถึงไปแล้ว GUI และข้อความเป็นพื้นฐานมาก ดังนั้นให้เพิ่ม CSS เล็กน้อยหรือโหลด URL ในไลท์บ็อกซ์เหมือนที่เราทำใน reset-wp
การทำงานธรรมดาที่น่าเบื่อให้กับผู้ใช้โดยอัตโนมัตินั้นเป็นประโยชน์อย่างมากสำหรับ #UX ดูวิธีที่คุณสามารถดาวน์โหลด ติดตั้ง และเปิดใช้งานปลั๊กอิน #WordPress หลายตัวได้อย่างง่ายดายด้วยการคลิกเพียงครั้งเดียว
คลิกเพื่อทวีตคลิกเดียวดีกว่าสิบเสมอ
การให้ผู้ใช้คลิกหนึ่งครั้งแทนที่จะเป็นสิบครั้งนั้นเป็นสิ่งที่ดีเสมอ! เป็นสัญญาณของ UX ที่ดี (ประสบการณ์ผู้ใช้) ดังนั้น หากปลั๊กอินหรือธีมของคุณต้องใช้ปลั๊กอินอื่น ฉันขอแนะนำให้ใช้ขั้นตอนการติดตั้งแบบคลิกเดียวสำหรับการขึ้นต่อกันทั้งหมด คุณจะได้รับตั๋วสนับสนุนน้อยลงจากผู้ที่อยู่ในช่วงเริ่มต้นของการใช้ปลั๊กอินอย่างไม่ต้องสงสัย
สำหรับการแทนที่ปลั๊กอินตัวหนึ่งด้วยอีกตัวหนึ่ง – พยายามหลีกเลี่ยงสถานการณ์เหล่านั้น บางครั้งก็หลีกเลี่ยงไม่ได้ แต่ปัญหาคือ คุณจะไม่มีวันให้ผู้ใช้ทั้งหมดเปลี่ยนไปใช้ปลั๊กอินใหม่ ซึ่งหมายความว่าคุณต้องสนับสนุนปลั๊กอินสองตัวหรือละทิ้งและทำให้ส่วนหนึ่งของฐานผู้ใช้ของคุณผิดหวังที่ยังคงใช้ปลั๊กอินเก่าต่อไป เราเผชิญกับการตัดสินใจแบบเดียวกันด้วย reset-wp และไม่ชอบวิธีใดวิธีหนึ่งจากสองวิธีนั้น