WordPress işlevlerini WordPress dosyaları dışında kullanmanın doğru yolu nedir?


59

WordPress işlevini WordPress dosyaları dışında başlatmak için yaklaşık 2 yöntem okudum, böylece bu işlevleri WordPress blogu dışındaki herhangi bir sayfada veya web sitesinde kullanabiliriz.

Bu 2 yöntemden hangisi doğru olanı? Her ikisi de doğruysa, her yöntemin kullanım durumları nelerdir? Bir yöntem ya da diğerini kullanma arasındaki fark nedir?

Yöntem 1:

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

Yöntem 2:

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

Hangi WP işlevlerini "WP dışında" kullanmaya çalışıyorsunuz ve neden? Bu yöntemlerden herhangi biri hala WP ortamını yükleyecektir (tema desteği olmasa da), bu yüzden hala WP içindeki işlevleri çağırıyorsunuz.
EAMann

2 yöntem arasındaki farkı anlamaya çalışıyorum. Yapacağım şey, wordpress temasını destek betiğim ile entegre etmek. öyleyse üstbilgiye, altbilgiye ve wordpress'in döngüsüne ek olarak widget'lar ve diğer eklentiler için bir miktar desteğe ihtiyaç
duyacak

Gerçekten bir şeyleri yapmak istediğinizden şüpheliyim ... WordPress'i önyüklemeye çalışmaktan daha iyi çözümler var.
EAMann

Önerilere açığım, işleri yapmanın en iyi yolunu mu arıyorum? wordpress temasını dış web uygulamasıyla birleştirmenin en iyi yolu nedir?
alhoseany

Yanıtlar:


58

Dosyalar arasında çok az fark var. Bir WordPress sayfasını görüntülediğinizde, adı verilen ilk dosya index.php. Ve esasen, "Yöntem 1:" dir.

define('WP_USE_THEMES', true);

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

Blog üstbilgi dosyası (WordPress'in geri kalanını sıraya alır) wp-load.phpdoğrudan yüklenir ve WordPress'in kendisini başlatır. İşte en çok 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' );

}

Yani iki yönteminiz arasındaki fark ... yüklü olan.

Yöntem 1, WordPress'in kendisini yüklemek için tam olarak yaptığıdır (temaları kapatma dışında). Bu nedenle, tüm WordPress'e ihtiyacınız varsa ve tüm varsayılan kancaları / eylemleri başlatmak istiyorsanız, o rotaya gidin.

Metot 2, hattan aşağı doğru bir adım daha. Tüm WordPress'i yükler, ancak wp()şablon yükleyiciyi çağırmaz veya çağırmaz (temalar tarafından kullanılır). Yöntem 2 biraz daha hafif olacak, ancak aynı işlevi size vermelidir.


3
Tüm bu dosyaları dışarı çıkaran bir şema veya bir şey var mı? Uzun zaman önce gördüm ama bulamıyorum.
ninja08

17

Sorunuzdan Yöntem 2:

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

wp-load.phpWordPress'in tüm işlevlerine erişim, hepsi bu. İlk satır WordPress'e Tema dosyalarını yüklememesini söyler; belki dosyalar ihtiyaçlarınız için gerekli, sonra satırı kaldırın.


1
Bu ilk satırın anlamı ne?
Sagive SEO

8
İlk satır WordPress'e tema destek fonksiyonlarının tamamını yüklememesini söyler. Temel olarak, daha az sayıda dosya yükleyin.
EAMann

İlk satır sadece ilk yöntem için gerekli mi?
mcont

4

wp-blog-header.php başlık durumu ekler, 404 http durum kodunu döndürür

wp-load.php olmaz

Ajax kullanırken, http durum kodunu kontrol ederken not almakta fayda var


2

Bazen temanın functions.php dosyasını yüklemek bazı sorunlara neden olabilir. Diğer sayfamın HTML'sini kırıyordu. Böylece yaptığım ve sorunumu çözdüm:

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

0

@ ninja08

Bir betiği analiz etmek için xDebug php eklentisini kullanabiliriz.

Sadece etkinleştirmek ;xdebug.profiler_enable = 1için de php.inikaldırarak dosyanın ;hattının ilk gelen ve bu yeniden başlatma apache sunucusuna sonra ve wordpress sitesi ... ile bu dosya ..open sizin xampp sunucu tmp dizininde oluşturulan şimdi bir dosyayı çalıştırın WincachGrind uygulaması.

Artık betiğinizin haritasını görebilirsiniz

WincacheGrind Basit WordPress Analizi


Bunu ninja08'in aşağıdaki yorumuna eklemeliydin. bu şimdi yanlış bir cevap.
aleaseanı

2
@ alhoseany evet..i şimdi o ... ama yeterince üne sahip değilim ... ve sonra bunu yapmaya karar verdim.
Mostafa
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.