Home_url () ve site_url () arasındaki fark nedir


65

Benim anlayışıma göre, site_url()wordpress çekirdek dosyalarının bulunduğu yer döndürülür.

Yani, bloguma barındırılmaktadır ise http://example.com/blogo zaman site_url()getirilerhttp://example.com/blog

Ama sonra ne kadar home_url()farklı? Benim home_url()için aynı şeyi döndürür:http://example.com/blog

Eğer bu doğruysa, geri dönmek için wordpress alabilir miyim http://example.com/?


4
Çok önemli bir soruda aynı anda iki soru soruyorsun. "Home_url () ile site_url () arasındaki fark nedir?" "WordPress’in URL kökünü kurulu olduğu alt dizin olmadan döndürmesini nasıl sağlayabilirim?"
Volomike

Bu kodeks kılavuzlarını gözden geçirin: codex.wordpress.org/… ; codex.wordpress.org/… ; codex.wordpress.org/…
Tara

Yanıtlar:


51

Aynı anda iki soru soruyorsun:

  1. Arasındaki fark nedir home_url()ve site_url()?
  2. WordPress’in URL kökünü kurulu olduğu alt dizin olmadan döndürmesini nasıl sağlayabilirim?

İşte cevaplar ve WordPress'in temel geliştiricisi Andrew Nacin ile onayladım ve Andrew'un bana söylediklerini doğrulamak için bazı sunucu testlerini yaptım.

Soru 1

Genel> wp-admin ayarları bölümünde home_url()"Site Adresi (URL)" etiketli alana başvurur. Kafa karıştırıcı, ha? Evet, "Site Adresi" yazıyor, böylece varsayıyor olabilirsiniz site_url(), ama yanılıyorsunuz . Kendi testini yap ve göreceksin. (Bir echo H1alanı geçici olarak temalarınızın işlevlerinin en üstünde site_url()ve de home_url()değerleri ile birlikte bırakabilirsiniz .)

Bu arada, site_url()Genel> Ayarlar bölümündeki "WordPress Adresi (URL)" etiketli alana referans verir.

Bu nedenle, bir görüntüyü yüklemek için URL’de bir eklentinin klasör yolunu çağırmak veya bir görüntü yüklemek için bir temanın klasör yolunu çağırmak gibi bir fiziksel yolun bulunabileceği yerlere başvurmak istiyorsanız, bunun için başka işlevler kullanmalısınız - plugins_url()ve bakmak get_template_directory_uri().

Her site_url()zaman, siteye /wp-adminsonuna kadar vurarak ulaşabileceğiniz konum home_url()olacaktır , ancak bu konum güvenilir olmayacaktır.

home_url()Eğer Genel> Ayarlar "Site Adresi (URL)" alanına ayarlayarak Ana sayfanızı belirledik nerede olurdu.

Soru 2

Bu nedenle, blogumu yerleştirdiyseniz http://example.com/blogve example.comyalnızca portföy temasını sevdiğim statik bir site ise, bu, sorunuzla örtüşen bir senaryo olur. Böyle bir durumda, bu kod snippet'ini kullanırdım:

<?php
function getDomain() {
    $sURL    = site_url(); // WordPress function
    $asParts = parse_url( $sURL ); // PHP function

    if ( ! $asParts )
      wp_die( 'ERROR: Path corrupt for parsing.' ); // replace this with a better error result

    $sScheme = $asParts['scheme'];
    $nPort   = $asParts['port'];
    $sHost   = $asParts['host'];
    $nPort   = 80 == $nPort ? '' : $nPort;
    $nPort   = 'https' == $sScheme AND 443 == $nPort ? '' : $nPort;
    $sPort   = ! empty( $sPort ) ? ":$nPort" : '';
    $sReturn = $sScheme . '://' . $sHost . $sPort;

    return $sReturn;
}

A.Nacin ile tartışmaya bağlantın var mı?
kaiser

1
E-posta ile yapıldı. Üzgünüm. Oh, ve düzenleme için teşekkürler - Bir dahaki sefere sözdiziminin değiştiğini hatırlayacağım.
Volomike

8
'Site Adresi (URL)' = 'ev' ve 'WordPress Adresi (URL)' = 'siteurl' olduğunu anlamak çok uzun bir zaman ve çok acı aldı. Bu etiketleri kesinlikle değiştirmeliler.
Ocak'ta Jbm 3

İkinci soruya cevabınız ikramiye vurur!
Devner

7

WP'nin bir dizine kurulmasını ancak sitenin etki alanınızdaki sitenin ana sayfalarında olmasını istiyorsanız, ana index.php dosyasını etki alanı kök dizininize taşımanız ve dizininizde belirtmek için Requir ifadesini düzenlemeniz gerekir.

Bu süreç burada özetlenmiştir: WordPress'e Kendi Dizini Vermek .


Her zaman sadece home_url()wp ağ modunda olduğum için kullanıyorum . WordPress'e sadece bir kez kendi dizinini verdim ve bu benim istediğim değildi. Ancak wp_content_dirbazı siteler üzerinde kullanıyorum .
xLRDxREVENGEx

Multisite ile ilgili herhangi bir deneyimim yok, bu yüzden bu durumun bu durumda nasıl çalıştığını bilmiyorum. WP'yi sadece bir şeyleri temiz tutmak ve kökleri karıştırmamak için bir dizine yüklemeyi tercih ediyorum.
Milo

dosya yapım muhtemelen etrafındaki en düzgün yapılardan biri. home/usr/public_html/site1 home/usr/public_html/site2ve bunun gibi ve sonra wp_content_dirgenellikle bir cdn üzerinde
xLRDxREVENGEx

eğer bir WP kurulumu oradaki tek şey olsaydı iyi olurdu, ama ben çoğunlukla yüzlerce dosya ve dizini içeren başkalarının sunucularında çalışıyorum.
Milo

Anlayışım doğru, site_url () ve home_url () aynı, wordpress kurulum dizinini kökünden farklı olacak şekilde ayarlamadıkça aynı mı?
Praveen

3

TLDR:

Standart olmayan bir kurulumda, WordPress dosyalarınızı web sitenizin kök dizinine yerleştirebilirsiniz.
... ve ziyaretçilerinizin ziyaretçilerine , alt dizin adını eklemeden , sitenizin Etki Alanı (kök) URL'sinden WordPress "web sitenize" erişmelerine izin verin :
(yani: www.example.comvs www.example.com/wordpress):

WP function  | wp_options. | WP constant  | what it represents       | WP Settings Label | Example     
-------------------------------------------------------------------------------------------------------------------------------------
`site_url()` | `siteurl`   | `WP_SITEURL` | WordPress files location | WordPress Address | https://www.example.com/wordpress
`home_url()` | `home`      | `WP_HOME`    | browser address bar      | Site Address      | https://www.example.com 

Bir WP sabiti için değerin, bir wp_options / WP Ayarları değerine göre öncelikli olduğu durumlarda.

WordPress için Farklı Yapılandırmalar

En standart WordPress kurulumlarında home_urlve site_urlaynı değerde olacaktır.
Ne olursa olsun, iki farklı şeyi temsil ediyorlar.

Standart olmayan bir kurulumda, farklı değerleri olabilir.

NOT: Kolay okunabilirlik için cevabımdaki protokolü bırakıyorum.
Bu yazı, başına HER URL: https://, http://OR //
(ben zaten dahil değilse).

( //Olup relativeprotokol ve ya / için çalışacak http://ya da https://)

Standart Kurulumlar ("Tek Tıklamayla" Kurulumlar dahil)

home_url: (wordpress) web sitenizin, kullanıcının adres çubuğunda belirtildiği gibi giriş sayfasıdır.
site_url: wordpress dosyalarınızın bulunduğu dizindir.

WordPress'in 5 dakikalık yüklemesi wordpress dosyalarını kurar, bu iki değer aynı olacaktır - wordpress dosyaları, insanların web sitenizi ya da sunucunuzun web sitesinin wordpress (blog) bölümünü kullanmak için kullanmasını istediğiniz aynı klasöre yüklenecektir.

Örnek 1:
kullanıcı blogunuza şu adresten erişiyor: www.example.com,
: adresinde yüklü wordpress dosyaları www.example.comveya sunucunuzun web sitesinin kök klasörü.

home_url=== site_url==="www.example.com"

Örnek 2:
kullanıcının en blogunuzu erişir: www.example.com/blog,
wordpress dosyalar yüklenir: www.example.com/blogya içinde blogweb sitenizin kök içindeki klasöre.

home_url=== site_url==="www.example.com/blog"

Bu durumda www.example.comana web sitesi ve www.example.com/blogblogunuzun köküdür.
Burada blogunuz ana web sitenizden ayrılır ve alt kümesi olarak çalışır.
Bu durumda, ana web siteniz WordPress tarafından kontrol edilmez , tanımlanmaz veya stillendirilmez.
Sadece blogunuz. Blogunuzdaki tüm URL'ler tarafından devam edilecekwww.example.com/blog

Not: Dokümantasyonda, "Wordpress sitesi / web sitesi" (sadece "site / web sitesi" nin aksine) WordPress dosyalarınızın kurulu olduğu dizini belirtir. Bu durumda, bu www.example.com/blog- blogklasör içindeki her şey . Bu senaryoda "WordPress web sitesi", etki alanınız, kökünüz veya ana web sitenizle aynı değildir. Genel web sitenizin bir alt kümesidir. Bir web sitesi içindeki bir web sitesi gibi. Bundan söz ediyorum, terminoloji bu özel kurulum göz önüne alındığında belirsiz veya kafa karıştırıcı görünebilir.

Alternatif WordPress Kurulum Yapılandırması

WordPress'e Kendi Dizinini Verme bölümü Method II (With URL change).

Örneğin, birçok kişi, web sitesinin kök klasörünü tüm wordpress dosyalarıyla tıkamak istememektedir.
Wordpress'i bir alt dizine kurmak istiyorlar, *, ancak sanki web sitesi için sunucunun kök dizinine yüklenmiş gibi "blog" veya "WordPress web sitesine" sahipler.

Bu, özellikle "Blog" bulunmayan bir web sitesinin tamamını oluşturmak ve çalıştırmak için WordPress kullanıldığında geçerlidir.

Örnek 3:
kullanıcı "blog" una şu adresten erişir: www.example.com,
: adresinde yüklü olan wordpress dosyalarına www.example.com/wordpressveya sunucunuzun web sitesinin kök klasörüne erişir .

home_url=== "www.example.com"
site_url==="www.example.com/wordpress"

(Not: Bu yapılandırma sadece bu değişkenlerin değerlerini değiştirerek "kutunun dışında" işe yaramaz O düzgün çalışması için ek yapılandırma değişiklikleri gerektirir.)
Bkz WordPress, kendi dizinine verilmesi başlıklı bölümü Method II (With URL change)bunun nasıl için.

Gelen bu durumda home_urlve site_urlfarklı değerlere sahip olmalıdır.

Bu ayarda, web sitenizin istediğiniz işlev tam sanki WordPress dosyaları web siteniz için sunucunun kök dizininde yüklü ... edildi
sunucuda organizasyonel amaçlarla ANCAK,
sen aslında adlı bir klasörde WordPress dosyaları var wordpresssunucunun içinde web siteniz için kök dizini.

Böylece, kullanıcı www.example.comWordPress ana sayfanızı almak için yazacaktır.www.example.com/wordpress

wordpress işlevi <--> veritabanı değişkeni <--> Wordpress Constant

Bu bölüm yukarıdaki Örnek 3 konfigürasyonunu üstlenmiştir.
adres çubuğu url'si: www.example.com
wordpress dosyaları: / wordpress dizini

(Diğer durumlar önemsizdir: Tüm değişkenler / işlevler aynı değeri tutar / döndürür.)

Nasıl değerlerini ayarlamak için site_urlvehome_url

Önce şunu belirtelim siteurlve homemağaza değerleri yukarıdaki işlevleri tarafından verilen

1) Normal olarak bu değerleri WordPress backend / dashboard / admin panelinde ayarlarsınız:
Settings -> General ->
siteurl WordPress Adresi: https://www.example.com/wordpress
home Site Adresi: https://www.example.com

(buraya eğik çizgi eklemeyin - başka bir yerde yapılandırılmış olabilir)

2) Alternatif olarak, bu değerleri WordPress veritabanınızda ayarlarsınız:
wp_optionstablo ->

`options_name` | `options_value`
----------------------------------------------------
`siteurl`      | `https://www.example.com/wordpress`  
`home`         | `https://www.example.com`  

(buraya eğik çizgi eklemeyin - başka bir yerde yapılandırılmış olabilir)

3) sizin düzenleyin wp-config.php
tanımla bu özel sabitleri değerleriniz tutmak
tanımlayın WP_HOMEve WP_SITEURLsenin üstüne doğru bu satırları ekleyerek ayarları wp-config.phpdosyası:

define('WP_SITEURL','http://example.com/wordpress');  // wordpress core files
define('WP_HOME','http://example.com');               // address bar url

// ** MySQL settings - You can get this info from your web host ** //
...    

(buraya eğik çizgi eklemeyin - başka bir yerde yapılandırılmış olabilir)

Referans: WP_SITEURL ve WP_HOME

NOT: Bu kafa karıştırıcı
(gerçekten, WordPress onların php adlarına benzer Ayarlar Etiketli keşke
gibi Wordpress Site Addressve Home Page Addressya benzeri daha açık bir şey location of WordPress Site core filesve browser url to access WordPress home page)

`WP_SITEURL` <--> `site_url()` <--> `siteurl` <--> Wordpress Address <--> /wordpress   
`WP_HOME`    <--> `home_url()` <--> `home`    <--> Site Address      <--> /

Şimdi burada zor alır!

EĞER Eğer bu sabitleri tanımlıwp-config.phpdosyası, önemli değil size veritabanı / ayarlar sayfasında var hangi değerleri.
Aslında, bu değeri arka uçtan değiştiremezsiniz (grileşir). Veritabanınızı düzenleyerek hala değişiklik yapabilirsiniz, ancak sabitleri wp-config dosyanızda varken, sitenizi etkilemez.

Config dosyası veritabanınızdaki değerleri değiştirmeyecektir (veya bu nedenle ayarlar sayfasını değiştiriniz). Bunun yerine, veritabanı / ayarlar sayfanızdaki değerler dikkate alınmaz . Wp-config içindeki değerler veritabanı ayarınıza göre önceliklidir veya öncelik taşır.

Yani ... sarmak için (TLDR):

WP function  | wp_options. | WP constant  | what it represents       | WP Settings Label | Example     
-------------------------------------------------------------------------------------------------------------------------------------
`site_url()` | `siteurl`   | `WP_SITEURL` | WordPress files location | WordPress Address | https://www.example.com/wordpress
`home_url()` | `home`      | `WP_HOME`    | browser address bar      | Site Address      | https://www.example.com 

Bir WP sabiti için değerin, bir wp_options / WP Ayarları değerine göre öncelikli olduğu durumlarda.

Wp_options kayıt değeri ve WP Ayarları değeri aynıdır.
Birini düzenleme, tanımı gereği diğerini düzenler.
Aynı değişkene erişmenin sadece 2 farklı yolu.

Öte yandan, WordPress Sabitler benzersiz ve bağımsızdır.
Dahili olarak, WordPress (PHP) sabitleri db benzerlerini geçersiz kılar.
Sabit wp-config tanımlanırsa, bu yok değil veritabanını değiştirin.
Fakat dahili olarak WordPress , db yerine her zaman değerini kullanacak / kullanacaktır .


3

site_url()Ve home_url()işlevleri benzerdir ve nasıl çalıştıkları karışıklığa yol açabilir.

site_url()Fonksiyon için değer değerini alır siteurliçinde wp_optionsveritabanınızda masaya.

Bu, WordPress çekirdek dosyalarının URL'sidir.
Çekirdek dosyalarınız /wordpressweb sunucunuzdaki bir alt dizinde mevcutsa , değer olacaktır http://example.com/wordpress.

home_url()Fonksiyon için değer alır homeiçinde wp_optionsveritabanınızda masaya.

Bu, insanların WordPress web sitenizi görüntülemek için ziyaret etmelerini istediğiniz adres.

WordPress çekirdek dosyalarınız varsa /wordpress, ancak web sitenizin URL’sinin http://example.comana değer olmasını istersiniz http://example.com.


2

İkinci sorunuza cevap vermek için:

S: Eğer doğru ise, http://example.com/ adresini döndürmek için wordpress alabilir miyim ?

WordPress'e kendi dizin adımlarını vermediğiniz sürece yapamazsınız . Bu, kullanarak içine WordPress çekirdek dosyalarını koymak demektir /blogOr /WordPresssonra ve index.phpsizin kök içine.

Eğer kendi dizine içine WordPress koymak için karar, o zaman kullanırsınız home_url()gidiş için index.phpve site_url()çekirdek dosyaları ve böyle almak için.

Referanslar: Wordpress'e Kendi Dizini Vermek İçin
Kodeksi İçin site_url
Kodeksi İçin home_url
Kodeks


-1

Sitenin URL'sini herhangi bir alt dizin olmadan almanın en kolay yolu ( http://example.com/blog yerine http://example.com/ ), sadece ters eğik çizgiyi kullanın /

Örneğin, şunu yazarsanız:

<a href="/">domain url</a>

Etki alanınıza giden bir bağlantı oluşturacak


Katıldığınız için teşekkürler. Ne yazık ki, bu OP tarafından ortaya atılan soruya cevap vermiyor. Bir kişinin OP'nin sorduğu wordpress fonksiyonlarını kullanması için birçok neden vardır. OP'nin bir yazıyı düzenlemek gibi html yoluyla ana sayfalarına bağlantı eklemek istemesi olası değildir. Daha muhtemeldir, OP bir php tema dosyasını ya da bir eklenti dosyasını düzenlemektedir. Her durumda html ile değil php ile çalışıyorlar. OP ederken Son olarak, beklendiği olmadan bir değer /için bu sitede, farklı bir sitede, OP olabilir beklemek bir alt dizin iade edilecek. Her site için WP yapılandırmasına bağlıdır.
SherylHohman
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.