Tải môi trường WordPress tối thiểu


11

Tôi đã tạo dịch vụ tải lên của riêng mình cho trang web riêng biệt với WP, nhưng sử dụng WP để cung cấp các hàm db cấp thấp và xác minh người dùng. Để làm điều đó, tôi bao gồm wp-load.php trong tập lệnh chính của mình (Uploadify) nhưng làm điều đó dường như lấp đầy bộ nhớ của máy chủ với các thành phần không cần thiết. Nhờ đó, tôi thấy một lỗi trong tập lệnh của mình dường như trỏ đến một plugin WP đã cài đặt.

Làm cách nào tôi chỉ có thể tải các thành phần WP cốt lõi và bỏ qua các plugin? Điều này thậm chí có thể?


1
Kiểm tra BackPress .
soulseekah

Câu trả lời:


8

Vô hiệu hóa các plugin hoàn toàn có nghĩa là bạn mất nhiều lợi thế.

Có các bản phân phối wordpress đi xa hơn và trích xuất các bài đăng và liên kết, v.v., nhưng chúng sẽ luôn bị tụt hậu so với lõi WordPress và có xu hướng không tồn tại lâu.

Dưới đây là một số điều có thể được thực hiện

Ban đầu ngắn

Đưa cái này vào wp-config.php của bạn:

define( 'SHORTINIT', TRUE );

Hoặc xác định nó ở đâu đó trước khi bạn tải wordpress, nên giảm quá trình tải và kéo nó trở lại các chức năng cốt lõi tối thiểu.

Cài đặt nhẹ thứ cấp

Thiết lập cài đặt wordpress thứ hai, chỉ với các plugin và chủ đề bạn muốn (nếu có). Sau đó cấu hình wp-config.php để sử dụng cùng giá trị cơ sở dữ liệu và thư mục wp-content.

Backpress

WordPress, BBpress ban đầu và glotpress trong số những người khác được xây dựng xung quanh thư viện BackPress. Bạn có thể sử dụng điều này thay vì WordPress để thực hiện công việc của mình mặc dù nhiều API và tính năng có thể bị thiếu hoặc cần triển khai lại / chuyển

Bảng tùy chọn

Tôi cũng sẽ nhớ rằng WordPress tải toàn bộ bảng tùy chọn vào bộ nhớ để cắt giảm các truy vấn, nếu bạn lưu bất kỳ giá trị lớn nào trong đó sẽ ảnh hưởng đến hiệu suất.

Thoát sớm

Bạn cũng có thể thử nối vào các chức năng trước đó trong quy trình tải WordPress và thoát khỏi quy trình PHP trước khi WordPress kết thúc, nhưng tôi không thể tư vấn về mức độ an toàn của nó.

Các plugin tải có chọn lọc

Ngoài ra còn có bài viết này về tải plugin có chọn lọc , nhưng nó yêu cầu hack vào các tập tin lõi wordpress


+1 Bạn đã bao giờ thử "Cài đặt nhẹ thứ cấp" chưa?
kaiser

Tôi đã làm những điều tương tự, mặc dù không bao giờ cho mục đích này, hầu hết các trường hợp sử dụng sẽ được phục vụ tốt hơn bởi multisite. Chủ yếu tôi sử dụng nó để tôi có thể có cài đặt phát triển chạy cùng để họ chia sẻ nội dung
Tom J Nowell

8

Sử dụng BackPress , nhưng tôi có những phát triển nhỏ, trong đó tôi sử dụng cài đặt mặc định và nguồn nhỏ hơn thông qua const.

xem trên wp-settings.php

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

Đặt const SHORTINIT trên true wp-config.phpvà xem chạy nhanh. define( 'SHORTINIT', TRUE );

Đây là những tập tin bạn nhận được:

// 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

Để thực hiện is_user_logged_in()current_user_can()làm việc, tôi đã tìm thấy câu trả lời tương tự ở đây (Cant bình luận) Phần tổng hợp khớp với câu trả lời ở đây, như:

Sử dụng define('SHORTINIT', true)+ require('wp-load.php')+ thủ công bao gồm:

Pageload: 1.05 sek - bao gồm các tệp: 43 tệp

So sánh: CHỈ sử dụng require('wp-load.php'):

Pageload: 1,35 sek - bao gồm các tệp: 419 tệp

Sự khác biệt về thời gian (0,3 sek) có thể khác với các bản cài đặt và các công cụ PHP, nhưng trong khi xác thực nhiều yêu cầu trên một trang tải-bổ sung! / @ Anna Ericson

Đó là một ý tưởng tốt để sử dụng một cuộc gọi tương đối đến thư mục cài đặt WP. Từ một plugin tùy chỉnh Wordpress "ROOT" như:

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

Sau đó, bên trong plugin index.php của tôi:

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' );

Sau này, xác nhận người dùng đang làm việc cho tôi. Cảm ơn @Anna Ericson từ cuối cùng từ mã gốc:

Đối với tác vụ khác, chạy trên một hoặc hai yêu cầu, theo dõi các tệp cần thiết khác có thể không có giá trị 0,3 sek . Bỏ qua sự SHORTINIT lộn xộn liên tục và thủ công.


1
Đây là cách sạch nhất cho đến nay. Hoạt động tốt trên ajax-cuộc gọi tải hình ảnh bị hạn chế trên cài đặt của chúng tôi.
Jonas Lundman

@cavameta Bạn có cách nhập Wooc Commerce để wok với SHORTINIT không?
webmastx

2

Bạn đã thử define('SHORTINIT', true);chưa Tôi đã không tự mình kiểm tra, nhưng dường như nó tải rất ít khía cạnh của lõi WP trong khi vẫn giữ đủ chức năng, đặc biệt nếu tất cả những gì bạn muốn là xử lý cơ sở dữ liệu.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.