web-dev-qa-db-fra.com

Charge WordPress minimale pour que seulement `get_option` fonctionne (car ajax ...)

Dans un plugin, j'utilise ajax pour get_option() qui prend beaucoup plus de temps que nécessaire car tout le fichier wp est chargé.

Comment puis-je configurer les choses de sorte que (mon ajax) ne charge que ce qui est nécessaire? (get_option())

2
laggingreflex

Si vous construisez quelque chose pour la consommation publique (un plugin, un thème, etc.), utilisez admin-ajax.php comme vous devriez car c’est la manière appropriée et acceptée de faire des choses et donne à vos utilisateurs finaux le pouvoir dont ils ont besoin pour changer et modifier les choses s'ils le souhaitent.

Au-delà de cela, le mieux que vous puissiez pouvoir faire est d’utiliser la constante SHORTINIT. Définissez-le dans un fichier php personnalisé, puis besoin de wp-load.php et faites ce que vous devez faire. SHORTINIT empêche le chargement de la majeure partie du noyau WordPress.

<?php
define('SHORTINIT', true);
require '/path/to/wp-load.php';
// you'll have the basic API here, including `get_option`. Do stuff.

Si vous faites cela en dehors du noyau WP, vous devrez deviner wp-load.php peut être - vous n'aurez pas de constante ABSPATH pour vous guider . C'est un pari risqué à moins que vous ne maîtrisiez totalement le système. En d’autres termes, s’il s’agit d’une coutume et non d’une publication publique, foncez. Sinon, utilisez admin-ajax.php.

5
chrisguitarguy

Une autre méthode consiste à ajouter ce code dans functions.php (ou dans le plugin), sans avoir besoin de require '/path/to/wp-load.php'... mais ce ne sera pas aussi rapide que SHORTINIT:

// EXAMPLE
function MyFuncion(){
    if (isset($_POST['mynamee'])) { echo get_option('my_nm');}
}

//===================Then====================
//1) Execute directly
MyFunction();
//========OR=========
//2) Hook into the EARLIEST ACTION:  
add_action('muplugins_loaded', 'MyFunction',1);

p.s N'OUBLIEZ JAMAIS DE GARDER ET FILTRER LES DEMANDES D'HACKING !!!

0
T.Todua