Apa cara yang benar untuk menggunakan fungsi WordPress di luar file WordPress?

59

Saya membaca tentang 2 metode untuk menginisialisasi fungsi WordPress di luar file WordPress sehingga Kami dapat menggunakan fungsi-fungsi ini pada halaman atau situs web di luar blog WordPress.

Yang mana dari 2 metode ini yang benar? Apa kasus penggunaan untuk setiap metode jika keduanya benar? Apa perbedaan antara menggunakan satu metode atau yang lain?

Metode 1:

<?php 
    define('WP_USE_THEMES', false);
    require('./wp-blog-header.php');
?>

Metode 2:

<?php 
    define('WP_USE_THEMES', false);
    require('./wp-load.php');
?>
alhoseany
sumber
Fungsi WP mana yang Anda coba gunakan "di luar WP" dan mengapa? Salah satu dari metode ini masih akan memuat lingkungan WP (meskipun tanpa dukungan tema), jadi Anda masih menjalankan fungsi di dalam WP.
EAMann
Saya mencoba memahami perbedaan antara 2 metode. Apa yang akan saya lakukan adalah mengintegrasikan tema wordpress dengan skrip dukungan saya. jadi perlu header, footer dan loop dari wordpress plus beberapa dukungan untuk widget dan plugin lainnya
alhoseany
Saya benar-benar ragu ini adalah cara Anda ingin melakukan sesuatu ... ada solusi yang lebih baik daripada mencoba bootstrap WordPress itu sendiri.
EAMann
Saya terbuka lebar untuk saran, saya mencari cara terbaik untuk melakukan sesuatu? apa cara terbaik untuk mengintegrasikan tema wordpress dengan aplikasi web luar?
alhoseany

Jawaban:

58

Ada sedikit perbedaan antara file. Saat Anda melihat halaman WordPress, file pertama yang dipanggil adalah index.php. Dan itu pada dasarnya adalah "Metode 1:" Anda

define('WP_USE_THEMES', true);

/** Loads the WordPress Environment and Template */
require ('./wp-blog-header.php');

File header blog (yang mengantri di WordPress lainnya) dimuat wp-load.phpsecara langsung dan menjalankan WordPress itu sendiri. Inilah sebagian besar wp-blog-header.php:

if ( !isset($wp_did_header) ) {

    $wp_did_header = true;

    require_once( dirname(__FILE__) . '/wp-load.php' );

    wp();

    require_once( ABSPATH . WPINC . '/template-loader.php' );

}

Jadi perbedaan antara kedua metode Anda adalah ... apa yang dimuat.

Metode 1 persis seperti yang dilakukan WordPress untuk memuat dirinya sendiri (dengan pengecualian mematikan tema). Jadi, jika Anda membutuhkan semua WordPress dan ingin memecat semua kait / tindakan default, ikuti rute itu.

Metode 2 hanyalah langkah lebih jauh ke depan. Ini memuat semua WordPress, tetapi tidak memanggil wp()atau memanggil loader template (digunakan oleh tema). Metode 2 akan sedikit lebih ringan, tetapi harus memberi Anda fungsionalitas yang sama.

EAMann
sumber
3
Apakah ada diagram atau sesuatu yang memetakan semua file ini? Saya telah melihatnya sejak lama tetapi saya tidak dapat menemukannya.
ninja08
17

Metode 2 dari pertanyaan Anda:

<?php 
define( 'WP_USE_THEMES', false ); // Don't load theme support functionality
require( './wp-load.php' );

wp-load.phpadalah akses ke semua fungsi WordPress, itu saja. Baris pertama memberitahu WordPress untuk memuat bukan file Tema; mungkin file-file tersebut diperlukan untuk kebutuhan Anda, lalu hapus baris.

bueltge
sumber
1
apa artinya baris pertama itu?
Sagive SEO
8
Baris pertama memberi tahu WordPress untuk tidak memuat semua fungsionalitas dukungan temanya. Pada dasarnya, muat lebih sedikit file.
EAMann
Apakah baris pertama hanya diperlukan untuk metode pertama?
mcont
4

wp-blog-header.php akan melampirkan status tajuk, itu akan mengembalikan kode status http 404

wp-load.php tidak akan melakukannya

Berguna untuk dicatat ketika menggunakan ajax karena memeriksa kode status http

RayLau135
sumber
2

Terkadang memuat functions.php dari tema dapat menyebabkan Anda mengalami beberapa masalah. Itu melanggar html dari halaman saya yang lain. Jadi itulah yang saya lakukan dan menyelesaikan masalah saya:

define('STYLESHEETPATH', '');
define('TEMPLATEPATH', '');
require_once(RAIZ_WORDPRESS."/wp-load.php");
Wellington Lorindo
sumber
0

@ ninja08

Kita dapat menggunakan ekstensi xDebug php untuk menganalisis skrip.

cukup aktifkan file ;xdebug.profiler_enable = 1Anda php.inidengan menghapus ;dari baris pertama dan setelah ini me-restart server apache dan menjalankan situs wordpress Anda ... sekarang file yang dibuat di direktori tmp server xampp Anda .. buka file ini dengan aplikasi WincachGrind .

sekarang Anda dapat melihat peta skrip Anda

Analisis Wordpress Sederhana WincacheGrind

Mostafa
sumber
Anda harus menambahkan ini di komentar di bawah ninja08. ini sekarang jawaban yang salah.
alhoseany
2
@ alhoseany ya..sekarang ... tapi saya tidak punya reputasi yang cukup ... dan kemudian saya memutuskan untuk melakukan ini.
Mostafa