Завантажте мінімальну середу WordPress


12

Я створив власну службу завантаження для свого веб-сайту, який є окремим від WP, але використовує WP для забезпечення функцій db низького рівня та перевірки користувача. Для цього я включаю wp-load.php в свій основний скрипт (Uploadify), але це, здається, заповнює пам'ять сервера непотрібними компонентами. Завдяки цьому в моєму сценарії я бачу помилку, яка, схоже, вказує на встановлений плагін WP.

Як я можу завантажувати лише основні компоненти WP та ігнорувати плагіни? Це навіть можливо?


1
Перевірте BackPress .
соулсееках

Відповіді:


9

Вимкнення плагінів повністю означає, що ви втратите багато переваг.

Існують дистрибуції wordpress, які йдуть далі і виривають повідомлення та посилання тощо, але вони завжди відставатимуть від ядра WordPress і, як правило, не виживуть так довго.

Ось деякі речі, які можна було б зробити

Короткий Ініт

Помістіть це у свій wp-config.php:

define( 'SHORTINIT', TRUE );

Або визначивши його десь перед завантаженням у wordpress, слід зменшити процес завантаження та повернути його до мінімальних основних функцій.

Вторинні легкі встановлення

Налаштуйте другу установку wordpress із лише потрібними плагінами та темами (якщо такі є). Потім налаштуйте wp-config.php так, щоб використовувати ті самі значення каталогу wp-content та бази даних.

Назад

WordPress, оригінальний BBpress та glotpress серед інших, побудований навколо бібліотеки BackPress. Ви можете використовувати це замість WordPress для своєї роботи, хоча численні API та функції можуть бути відсутніми або потребувати повторної реалізації / перенесення

Таблиці варіантів

Я також маю на увазі, що WordPress завантажує всю таблицю параметрів у пам'ять, щоб скоротити запити, якщо ви зберігаєте там великі значення, це вплине на продуктивність.

Вихід рано

Ви також можете спробувати підключити попередні функції в процесі завантаження WordPress та закрити процес PHP до завершення WordPress, але я не можу порадити, наскільки це безпечно.

Вибіркове завантаження плагінів

Також є ця стаття про вибіркове завантаження плагінів , але вона вимагає зламування основних файлів Wordpress


+1 Ви коли-небудь пробували "Вторинні легкі встановлення" ?
кайзер

Я робив подібні речі, хоча ніколи для цієї мети більшість випадків використання краще було б обслуговувати на багатосторонніх сайтах. В основному я його використовую, щоб я міг встановити розробку, яка працює разом, щоб вони ділилися вмістом
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')+ вручну включає:

Завантаження сторінки: 1,05 сек - включені файли: 43 файли

Порівняння: Використання ТІЛЬКО require('wp-load.php') :

Завантаження сторінок: 1,35 сек - включені файли: 419 файлів

Різниця в часі (0,3 сек) може відрізнятися від встановлення та PHP-механізмів, але при валідації багатьох запитів на одній завантаженні сторінки -роботи додається! / @ Анна Еріксон

Було гарною ідеєю використовувати відносний дзвінок на встановлений 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 сек . Пропустіть SHORTINIT постійне і вручну захаращуйте.


1
Це найчистіший спосіб поки що. Чудово працює над ajax-дзвінками, завантажуючи обмежені зображення на нашій установці.
Йонас Лундман

@cavameta Чи ти імпортуєш Woocommerce, щоб прокинутися з SHORTINIT?
webmastx

2

Ви пробували define('SHORTINIT', true);? Я сам не перевіряв це, але, здається, завантажує дуже мало аспектів ядра WP, зберігаючи достатньо функціональних можливостей, особливо якщо все, що вам потрібно, - це мати справу з базою даних.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.