Cea mai bună metodă de a include wp-config.php

28 aug. 2014, 00:33:43
Vizualizări: 13.8K
Voturi: -6

Mă întrebam care este cea mai bună metodă de a include wp-config.php într-un plugin. Am citit despre căile relative care pot eșua dacă fișierele plugin-ului sunt situate în altă locație.

3
Comentarii

Vorbești de fapt despre un plugin WordPress sau încerci să încarci WordPress dintr-un fișier extern?

Andrew Bartel Andrew Bartel
28 aug. 2014 01:08:23

Dacă îți modifici întrebarea să fie mai specifică problemei tale reale, atunci ai putea primi răspunsuri mai bune.

Otto Otto
28 aug. 2014 01:09:34

Am avut probleme cu folosirea $wpdb în plugin-ul meu, am văzut un exemplu care folosea include wp-config. Voi încerca din nou cu $wpdb

stijn.aerts stijn.aerts
28 aug. 2014 01:14:24
Toate răspunsurile la întrebare 3
2

Cea mai bună metodă este să nu faci asta. Nu este nevoie ca un fișier de plugin să includă vreodată wp-config.php.

O faci invers. WordPress încarcă pluginurile. Pluginurile nu încarcă WordPress.

28 aug. 2014 00:50:38
Comentarii

Există motive valide pentru a include wp-config.php. De exemplu, pentru plugin-uri care primesc notificări de la API-uri, un fișier de callback poate include fișierul de configurare pentru a accesa baza de date. În acest caz, încărcarea fișierului de callback din Wordpress este o practică proastă.

ethmz ethmz
25 iun. 2018 14:34:23

Greșești. Acest răspuns poate fi adevărat dacă scrii un plugin simplist de tip 'hello-world' gen 'creează un textarea frumos pe frontend'. Dar dacă scrii de fapt un software complex și ai nevoie de teste Unitate automate? Shell-ul meu încarcă un UnitTest în interiorul Plugin-ului meu, fără a folosi nucleul sau funcționalitățile Wordpress. Opțiunile variază între symlinking, includere cu cale absolută sau namespace-uri în stil Symfony, dar ar trebui să modifici fișierul de bază.

clockw0rk clockw0rk
9 iul. 2021 01:59:55
0

Fișierul wp-config.php ar trebui să fie deja încărcat și nu ar trebui să fie necesar să-l includeți.

În majoritatea cazurilor, cea mai bună modalitate de a vă asigura că $wpdb este inclus în funcțiile din plugin-ul sau tema dvs. este să vă asigurați că fișierele temei sau plugin-ului se află în locația corectă și că plugin-ul sau tema este activă.

Dacă global $wpdb nu este încă setat, atunci nu ar trebui să fie nevoie să includeți orice fișiere de bază din WordPress. Cel mai probabil, aceasta înseamnă că funcția dvs. este declanșată prea devreme și ar trebui să o plasați în interiorul unei acțiuni, cum ar fi muplugins_loaded, plugins_loaded, after_setup_theme, init sau wp_loaded.

Dacă aveți un fișier separat pe care îl utilizați pentru o cerere ajax, atunci ar trebui să-l înlocuiți și să utilizați în schimb cârligele ajax din WordPress.

Singura situație validă în care am găsit necesar să includ wp-config.php este pentru a extinde condiția comună if ( ! defined( 'ABSPATH' ) ) exit;, astfel încât utilizatorii să fie redirecționați către pagina principală atunci când încearcă să acceseze direct oricare dintre fișierele sau directoarele temei sau plugin-ului meu.

<?php
/**
 * Tăcerea este de aur, dar eu de fapt vreau ca oamenii să vizualizeze site-ul.
 */
if ( ! defined( 'ABSPATH' ) ) {
    // Apelăm dirname() de 4 ori, deoarece acest fișier se află în '/wp-contents/plugins/plugin-dir/' iar wp-config.php se află în '/'
    require_once dirname( dirname( dirname( dirname( __FILE__ ) ) ) ) . '/wp-config.php';
    // Redirecționare permanentă către pagina principală.
    wp_safe_redirect( home_url(), 301 );
    die;
}
24 nov. 2017 07:35:28
2
-4

Dacă dorești acces doar la wp-config.php fără restul funcțiilor WordPress.

Urmează acești pași:

  1. creează un fișier gol wp-settings.php în directorul tău de plugin

  2. adaugă acest cod în fișierul tău PHP

    define( 'ABSPATH', $_SERVER['DOCUMENT_ROOT'] . '/wp-content/plugins/YOUR_PLUGIN_DIR/' ); 
    require_once( $_SERVER['DOCUMENT_ROOT'] . '/wp-config.php' );
    

Această metodă funcționează perfect pentru WordPress 4.2.4 "în jos și în sus" și am testat-o în propriul nostru plugin mywebapplets.

13 aug. 2015 13:37:14
Comentarii

După cum @Otto a menționat, acest lucru nu ar trebui făcut.

Nicolai Grossherr Nicolai Grossherr
13 aug. 2015 13:45:44

De fapt, nu este un început rău, dar nu va funcționa cu WordPress instalat într-un subdirector.

xjlin0 xjlin0
25 iul. 2021 18:56:01