Cum să încarci WordPress pe o pagină non-WP?
Vreau să folosesc funcția get_option()
din WordPress într-unul dintre fișierele temei mele, care nu este legat de WP, ci doar se află în același director cu celelalte fișiere ale temei. Am nevoie de acest fișier din cauza unor acțiuni suplimentare legate de IPN PayPal, dar am nevoie de unele valori din tabelul de opțiuni care există în WP pentru a le apela în această pagină ca să funcționeze. Știu că nu pot folosi direct get_option()
deoarece acest fișier este ignorat de WordPress. Există vreo abordare prin includerea unor părți din WordPress în tema mea pentru a face ca această funcționalitate să funcționeze?

Cea mai scurtă cale este să încarci wp-load.php
și să întrerupi încărcarea motorului de șabloane (Notă: Nu ai putea face asta dacă ai încărca fișierul header, așa cum vezi pe multe site-uri din internet).
# Nu este nevoie de motorul de șabloane
define( 'WP_USE_THEMES', false );
# Încarcă nucleul WordPress
// Presupunem că suntem într-un subdirector: "~/wp-content/plugins/current_dir"
require_once( '../../../wp-load.php' );

Există mai multe documentații despre WP_USE_THEMES
decât https://codex.wordpress.org/The_Loop ? :)

@jave.web Sigur: Căutarea în sursă cross-file.

Cea mai simplă metodă este să incluzi fișierul wp-load.php
. Acest fișier va încărca întregul nucleu WordPress, astfel încât poți folosi funcții WordPress precum get_option
în fișierul tău PHP:
include 'calea/către/wp-load.php';
echo get_option( 'nume_optiune' );

Acest cod ar trebui să funcționeze pe orice instalare 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');
}
}
?>
