Come caricare WordPress su una pagina non WP?
Voglio utilizzare la funzione get_option() di WordPress in uno dei file del mio tema che non è collegato a WP, si trova semplicemente nella stessa directory degli altri file del tema. Ho bisogno di questo file per alcune azioni aggiuntive relative a IPN di PayPal, ma devo richiamare alcuni valori dalla tabella delle opzioni di WordPress perché funzioni. So che non posso semplicemente usare get_option() perché questo file viene ignorato da WordPress. Esiste un approccio per includere alcune parti di WordPress nel mio tema per far funzionare solo questa funzionalità?
Il modo più breve è caricare wp-load.php e interrompere il caricamento del motore di template (Nota: non potresti farlo se stessi caricando il file header, come si vede in molti siti sul web).
# Non serve il motore di template
define( 'WP_USE_THEMES', false );
# Carica il core di WordPress
// Assumendo che siamo in una sottocartella: "~/wp-content/plugins/current_dir"
require_once( '../../../wp-load.php' );
Ci sono più documentazioni su WP_USE_THEMES oltre a https://codex.wordpress.org/The_Loop ? :)
jave.web
@jave.web Certo: La ricerca incrociata nei file del codice sorgente.
kaiser
Questo dovrebbe funzionare su qualsiasi installazione WordPress:
<?php
function load_wp_load() {
$wp_did_header = true;
require_once($_SERVER['DOCUMENT_ROOT'] . '/index.php');
$matches = preg_grep('/wp-blog-header.php/', get_included_files());
if (!empty($matches)) {
$abspath = dirname(reset($matches)) . '/';
define('ABSPATH', $abspath);
require_once(ABSPATH . 'wp-load.php');
}
}
?>