โหลดสภาพแวดล้อม WordPress ขั้นต่ำ


12

ฉันสร้างบริการอัพโหลดของฉันเองสำหรับเว็บไซต์ของฉันที่แยกต่างหากจาก WP แต่ใช้ WP เพื่อจัดเตรียมฟังก์ชัน db ระดับต่ำและการตรวจสอบผู้ใช้ ในการทำเช่นนั้นฉันได้รวม wp-load.php ไว้ในสคริปต์หลักของฉัน (Uploadify) แต่การทำเช่นนั้นดูเหมือนว่าจะเติมหน่วยความจำของเซิร์ฟเวอร์ด้วยองค์ประกอบที่ไม่จำเป็น ขอบคุณที่ฉันเห็นข้อผิดพลาดในสคริปต์ของฉันที่ดูเหมือนจะชี้ไปที่ปลั๊กอิน WP ที่ติดตั้ง

ฉันจะโหลดเฉพาะคอมโพเนนต์ WP หลักและละเว้นปลั๊กอินได้อย่างไร เป็นไปได้ไหม


1
ตรวจสอบBackPress
Soulseekah

คำตอบ:


9

การปิดใช้งานปลั๊กอินทั้งหมดหมายความว่าคุณสูญเสียข้อดีหลายประการ

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

นี่คือบางสิ่งที่สามารถทำได้

Short Init

วางสิ่งนี้ลงใน wp-config.php ของคุณ:

define( 'SHORTINIT', TRUE );

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

การติดตั้งน้ำหนักเบารอง

ตั้งค่าการติดตั้ง WordPress ครั้งที่สองโดยมีเฉพาะปลั๊กอินและธีมที่คุณต้องการ (ถ้ามี) จากนั้นกำหนดค่า wp-config.php เพื่อใช้ไดเรกทอรี wp-content และค่าฐานข้อมูลเดียวกัน

Backpress

WordPress, BBpress ดั้งเดิมและ glotpress ท่ามกลางคนอื่น ๆ ถูกสร้างขึ้นรอบ ๆ ห้องสมุด BackPress คุณสามารถใช้สิ่งนี้แทน WordPress เพื่อทำงานของคุณแม้ว่า API และฟีเจอร์ต่าง ๆ อาจหายไปหรือต้องการการนำกลับมาใช้ใหม่ / การย้ายพอร์ต

ตารางตัวเลือก

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

ออกเร็ว

คุณสามารถลองใช้ฟังก์ชั่นก่อนหน้านี้ในกระบวนการโหลด WordPress และออกจากกระบวนการ PHP ก่อน WordPress เสร็จ แต่ฉันไม่สามารถให้คำแนะนำเกี่ยวกับความปลอดภัยได้

เลือกโหลดปลั๊กอิน

นอกจากนี้ยังมีบทความเกี่ยวกับการเลือกปลั๊กอินการโหลดแต่มันไม่จำเป็นต้องแฮ็กไปยังไฟล์แกน wordpress


+1 เคยลอง"การติดตั้งน้ำหนักเบาสำรอง"หรือไม่?
Kaiser

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

8

ใช้BackPressแต่ฉันมีการพัฒนาเล็กน้อยที่ฉันใช้การติดตั้งเริ่มต้นและแหล่งเล็กผ่านทาง const

ดูที่ wp-settings.php

// Stop most of WordPress from being loaded if we just want the basics.
if ( SHORTINIT )
    return false;

ตั้งค่า const SHORTINIT เป็น true ในwp-config.phpและดูการวิ่งที่รวดเร็ว define( 'SHORTINIT', TRUE );

นี่คือไฟล์ที่คุณได้รับ:

// All are located in ABSPATH.WPINC
'/load.php'
'/default-constants.php'
'/version.php'
'/compat.php'
'/functions.php'
'/class-wp.php'
'/class-wp-error.php'
'/plugin.php'
'/default-filters.php'
'/pomo/mo.php'

// Only Multisite
'/ms-blogs.php'
'/ms-settings.php'

6

สำหรับการสร้างis_user_logged_in()และการcurrent_user_can()ทำงานฉันพบคำตอบที่คล้ายกันที่นี่ (ไม่สามารถแสดงความคิดเห็น) การเปรียบเทียบตรงกับคำตอบที่นี่เช่น:

การใช้define('SHORTINIT', true)+ require('wp-load.php')+ ด้วยตนเองรวมถึง:

Pageload: 1.05 sek - ไฟล์ที่รวมอยู่: 43 ไฟล์

เปรียบเทียบ: ใช้เท่านั้น require('wp-load.php') :

ไฟล์: 1.35ไฟล์ - รวมไฟล์: 419 ไฟล์

ความแตกต่างของเวลา (0.3 sek) อาจแตกต่างจากการติดตั้งและเอ็นจิ้น PHP แต่ในขณะที่ตรวจสอบคำขอจำนวนมากในหนึ่ง pageload - สิ่งที่เพิ่มขึ้น! / @ Anna Ericson

เป็นความคิดที่ดีที่จะใช้การเรียกที่สัมพันธ์กับ WP ที่ติดตั้ง dir จากปลั๊กอินแบบกำหนดเองของ Wordpress "ROOT" เช่น:

$wordpress = '../../../wp-load.php';

จากนั้นภายในปลั๊กอินของฉัน index.php:

define('SHORTINIT', true);
include_once $wordpress;

require_once ( ABSPATH . WPINC . '/class-wp-user.php' );
require_once ( ABSPATH . WPINC . '/class-wp-roles.php' );
require_once ( ABSPATH . WPINC . '/class-wp-role.php' );
require_once ( ABSPATH . WPINC . '/class-wp-session-tokens.php' );
require_once ( ABSPATH . WPINC . '/class-wp-user-meta-session-tokens.php' );
require_once ( ABSPATH . WPINC . '/formatting.php' );
require_once ( ABSPATH . WPINC . '/capabilities.php' );
//require_once ( ABSPATH . WPINC . '/query.php' ); // - might be useful
require_once ( ABSPATH . WPINC . '/user.php' );
require_once ( ABSPATH . WPINC . '/meta.php' );

wp_cookie_constants();

require_once ( ABSPATH . WPINC . '/vars.php' );
require_once ( ABSPATH . WPINC . '/kses.php' );
require_once ( ABSPATH . WPINC . '/rest-api.php' );
require_once ( ABSPATH . WPINC . '/pluggable.php' );

หลังจากนี้การตรวจสอบผู้ใช้ทำงานได้สำหรับฉัน ขอบคุณ @Anna Ericson คำสุดท้ายจากรหัสต้นฉบับ:

สำหรับงานอื่น ๆ ที่ทำงานในหนึ่งหรือสองคำขอลงติดตามไฟล์ที่จำเป็นอื่น ๆ ที่อาจจะไม่คุ้มค่า 0.3 SEK ข้ามSHORTINIT ความยุ่งเหยิงคงที่และด้วยตนเอง


1
นี่เป็นวิธีที่สะอาดที่สุด ทำงานได้ดีในการโหลด ajax- โทรภาพ จำกัด ในการติดตั้งของเรา
Jonas Lundman

@cavameta คุณจะนำเข้า Woocommerce เพื่อกระทะด้วย SHORTINIT ได้อย่างไร
webmastx

2

คุณเคยลองdefine('SHORTINIT', true);ไหม ฉันไม่ได้ทำการทดสอบด้วยตัวเอง แต่ดูเหมือนว่าจะโหลดแง่มุมน้อยมากของ WP core ในขณะที่ยังคงใช้งานได้เพียงพอโดยเฉพาะอย่างยิ่งหากคุณต้องการจัดการกับฐานข้อมูล

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.