Pemahaman saya adalah bahwa site_url()
mengembalikan lokasi di mana file inti wordpress berada.
Jadi, jika blog saya di-host http://example.com/blog
maka site_url()
kembalihttp://example.com/blog
Tetapi bagaimana bedanya home_url()
? Bagi saya, home_url()
mengembalikan hal yang sama:http://example.com/blog
Jika itu benar, maka bisakah saya meminta wordpress kembali http://example.com/
?
Jawaban:
Anda mengajukan dua pertanyaan sekaligus:
home_url()
dansite_url()
?Inilah jawabannya, dan saya mengonfirmasi dengan Andrew Nacin, pengembang inti WordPress, serta menjalankan beberapa tes server untuk mengonfirmasi apa yang dikatakan Andrew kepada saya.
Pertanyaan 1
Secara Umum> Pengaturan wp-admin,
home_url()
referensi bidang yang berlabel "Alamat Situs (URL)". Membingungkan, ya? Ya, katanya "Alamat Situs" jadi Anda mungkin berasumsisite_url()
, tetapi Anda akan salah . Jalankan tes Anda sendiri dan Anda akan melihat. (Anda dapat menjatuhkan sementara suatuecho H1
bidang dengansite_url()
danhome_url()
nilai - nilai di bagian atas functions.php tema Anda.)Sementara itu,
site_url()
referensi bidang yang berlabel "Alamat WordPress (URL)" di Umum> Pengaturan.Jadi, jika Anda ingin referensi di mana jalur fisik mungkin seperti memanggil jalur folder plugin pada URL untuk memuat gambar, atau memanggil jalur folder tema untuk memuat gambar, Anda harus menggunakan fungsi lain untuk itu - lihat
plugins_url()
danget_template_directory_uri()
.Itu
site_url()
akan selalu menjadi lokasi di mana Anda dapat mencapai situs dengan menempel pada/wp-admin
akhirnya, sementarahome_url()
itu tidak akan menjadi lokasi yang andal.Itu
home_url()
akan menjadi tempat Anda mengatur beranda dengan menyetel bidang Umum> Pengaturan "Alamat Situs (URL)".Pertanyaan # 2
Jadi, jika saya telah menempatkan blog saya
http://example.com/blog
, danexample.com
hanya beberapa situs statis di mana saya menyukai tema portofolio, maka ini akan menjadi skenario yang sejalan dengan pertanyaan Anda. Dalam kasus seperti itu, maka saya akan menggunakan potongan kode ini:sumber
Jika Anda ingin WP diinstal di direktori tetapi situs di root domain Anda, Anda perlu memindahkan file index.php utama ke root domain Anda dan mengedit pernyataan yang diperlukan untuk menunjuk dalam direktori Anda.
Proses ini diuraikan di sini: Memberi WordPress Direktori Sendiri .
sumber
home_url()
karena saya pada mode jaringan wp. Saya hanya memberi WordPress direktori sendiri sekali dan itu hanya tidak saya sukai. Namun saya menggunakanwp_content_dir
di beberapa situs.home/usr/public_html/site1
home/usr/public_html/site2
dan seterusnya dan kemudianwp_content_dir
biasanya pada cdnTLDR:
Dalam instalasi non-standar, Anda dapat menempatkan file WordPress di subdirektori dari root situs web Anda.
... dan masih memungkinkan pengunjung Anda ke pengunjung untuk mengakses "situs web" WordPress Anda dari URL Domain (root) situs Anda, tanpa menambahkan nama subdirektori:
(yaitu:
www.example.com
vswww.example.com/wordpress
):Di mana nilai konstanta WP lebih diutamakan daripada nilai wp_options / WP Settings.
Konfigurasi yang berbeda untuk WordPress
Di instalasi WordPress paling standar ,
home_url
dansite_url
akan memiliki nilai yang sama.Bagaimanapun, mereka mewakili dua hal yang berbeda.
Dalam instalasi non-standar , mereka mungkin memiliki nilai yang berbeda.
(
//
adalahrelative
protokol dan akan bekerja untuk salah satu / keduanyahttp://
atauhttps://
)Instalasi Standar (termasuk Instalasi "Satu-Klik")
home_url
: adalah halaman beranda situs web Anda (wordpress), seperti yang ditunjukkan pada bilah alamat pengguna.site_url
: adalah direktori tempat file wordpress Anda berada.Instalasi WordPress 5 menit menginstal file wordpress kedua nilai ini akan sama - file wordpress akan diinstal dalam folder yang sama yang Anda ingin orang-orang gunakan untuk alamat situs web Anda, atau bagian wordpress (blog) dari situs web server Anda.
Contoh 1:
user mengakses blog Anda di:
www.example.com
,file wordpress dipasang di:
www.example.com
, atau folder root dari situs server Anda.home_url
===site_url
==="www.example.com"
Contoh 2:
user mengakses blog Anda di:
www.example.com/blog
,file wordpress dipasang di:
www.example.com/blog
, atau diblog
folder dalam root dari situs Anda.home_url
===site_url
==="www.example.com/blog"
Dalam hal ini
www.example.com
adalah situs web utama, danwww.example.com/blog
merupakan akar dari blog Anda.Di sini blog Anda terpisah dari, dan berfungsi sebagai bagian dari, situs web utama Anda.
Dalam hal ini, situs web utama Anda tidak dikontrol, ditentukan, atau ditata oleh WordPress.
Hanya blog Anda. Semua url di blog Anda akan diproses oleh
www.example.com/blog
Catatan: Dalam dokumentasi, "Situs / situs web Wordpress" (bukan hanya "situs / situs web") merujuk ke direktori tempat file WordPress Anda dipasang. Dalam hal ini, itu adalah
www.example.com/blog
- segalanya di dalamblog
folder. "Situs web WordPress", dalam skenario ini, tidak sama dengan domain Anda, root Anda, atau situs web utama Anda. Ini adalah bagian dari keseluruhan situs web Anda. Jenis seperti situs web di dalam situs web. Saya menyebutkan ini sebagai terminologi yang bisa tampak tidak jelas atau membingungkan, mengingat pengaturan khusus ini.Konfigurasi Instalasi WordPress Alternatif
Memberikan WordPress Direktori Sendiri , bagian
Method II (With URL change)
.Sebagai contoh, banyak orang tidak ingin menyumbat folder root situs web mereka dengan semua file wordpress.
Mereka ingin menginstal wordpress di subdirektori, * tetapi memiliki "blog" atau "situs web WordPress" diakses seolah-olah file-file itu dipasang di root root server untuk situs web.
Ini terutama benar ketika WordPress digunakan untuk membangun dan menjalankan seluruh situs web yang bahkan tidak memiliki "blog".
Contoh 3:
user mengakses Anda "blog" di:
www.example.com
,file wordpress dipasang di:
www.example.com/wordpress
, atau folder root dari situs server Anda.home_url
==="www.example.com"
site_url
==="www.example.com/wordpress"
(Catatan: konfigurasi ini tidak akan berfungsi "di luar kotak" hanya dengan mengubah nilai-nilai dari variabel-variabel ini. Ini memerlukan perubahan konfigurasi tambahan agar berfungsi dengan benar)
Lihat Memberikan WordPress Its Own Directory , bagian berjudul
Method II (With URL change)
untuk bagaimana melakukan ini.Dalam hal ini
home_url
dansite_url
harus memiliki nilai yang berbeda.Dalam pengaturan ini, Anda ingin situs web Anda berfungsi persis seperti jika file WordPress dipasang di direktori root server untuk situs web Anda ...
TAPI, untuk keperluan organisasi di server,
Anda sebenarnya memiliki file WordPress di folder yang disebut
wordpress
server. direktori root untuk situs web Anda.Jadi, pengguna akan mengetik
www.example.com
untuk mendapatkan beranda WordPress Anda, bukanwww.example.com/wordpress
fungsi wordpress <--> variabel basis data <--> Wordpress Constant
(Kasus-kasus lain sepele: Semua variabel / fungsi memegang / mengembalikan nilai yang sama.)
Cara mengatur nilai untuksite_url
danhome_url
Pertama, saya perhatikan
siteurl
danhome
simpan nilai yang dikembalikan oleh fungsi di atas1) Biasanya Anda menetapkan nilai-nilai ini di panel backend / dashboard / admin
Settings -> General ->
siteurl
WordPress: Alamat WordPress:https://www.example.com/wordpress
home
Alamat Situs:https://www.example.com
(tidak termasuk trailing slash di sini - yang akan dikonfigurasi di tempat lain)
2) Atau, Anda menetapkan nilai-nilai ini di database WordPress Anda:
wp_options
table ->(tidak termasuk trailing slash di sini - yang akan dikonfigurasi di tempat lain)
3) Edit
wp-config.php
Tentukan konstanta spesifik ini untuk menahan nilai-nilai Anda
Tentukan
WP_HOME
danWP_SITEURL
pengaturan dengan menyisipkan baris-baris ini ke bagian ataswp-config.php
file Anda :(tidak termasuk trailing slash di sini - yang akan dikonfigurasi di tempat lain)
Referensi: WP_SITEURL dan WP_HOME
CATATAN: Ini membingungkan
(saya benar-benar berharap WordPress telah melabeli Pengaturan yang mirip dengan nama php mereka,
seperti
Wordpress Site Address
danHome Page Address
atau sesuatu yang lebih eksplisit sepertilocation of WordPress Site core files
danbrowser url to access WordPress home page
)Sekarang Di sinilah rumit!
JIKA Anda mendefinisikan konstanta-konstanta itu dalam
wp-config.php
fileAnda, tidak masalah nilai apa yang Anda miliki di halaman database / pengaturan Anda.Bahkan, Anda tidak akan dapat mengubah nilai ini melalui bagian belakang (itu akan diklik). Anda masih dapat memodifikasi dengan mengedit database Anda, tetapi hal itu tidak akan berpengaruh pada situs Anda, sementara konstanta ada di file wp-config Anda.
File konfigurasi Anda tidak akan mengubah nilai dalam basis data Anda (atau dengan demikian halaman pengaturan Anda). Sebaliknya, nilai halaman basis data / pengaturan Anda akan diabaikan . Nilai-nilai di wp-config timpa atau didahulukan dari pengaturan basis data Anda.
Jadi ... untuk menyelesaikan (TLDR):
Di mana nilai konstanta WP lebih diutamakan daripada nilai wp_options / WP Settings.
Nilai catatan wp_options dan nilai Pengaturan WP adalah sama.
Mengedit satu, menurut definisi mengedit yang lain.
Ini hanya 2 cara berbeda untuk mengakses variabel yang sama.
Di sisi lain, Konstanta WordPress unik dan independen.
Secara internal, konstanta WordPress (PHP) menimpa rekan db mereka.
Jika konstanta didefinisikan dalam wp-config, itu tidak mengubah database.
Tetapi secara internal WordPress akan selalu lebih suka / menggunakan nilainya daripada db satu.
sumber
Fungsi
site_url()
danhome_url()
fungsinya mirip dan dapat menyebabkan kebingungan dalam cara kerjanya.The
site_url()
fungsi mengambil nilai nilaisiteurl
dalamwp_options
tabel dalam database Anda.Ini adalah URL ke file inti WordPress.
Jika file inti Anda ada di subdirektori
/wordpress
di server web Anda, nilainya akan menjadihttp://example.com/wordpress
.The
home_url()
fungsi mengambil nilai untukhome
dalamwp_options
tabel dalam database Anda.Ini adalah alamat yang Anda ingin orang kunjungi untuk melihat situs web WordPress Anda.
Jika file inti WordPress Anda ada
/wordpress
, tetapi Anda ingin URL situs web Anda menjadihttp://example.com
nilai rumah seharusnyahttp://example.com
.sumber
Untuk menjawab pertanyaan kedua Anda:
Anda tidak bisa, kecuali jika Anda mengambil WordPress Memberikan langkah-langkah direktori sendiri . Menggunakan ini berarti Anda menempatkan file inti WordPress ke
/blog
atau/WordPress
dan kemudianindex.php
ke akar Anda.Jika Anda memutuskan untuk meletakkan WordPress di dalam direktori sendiri maka Anda akan menggunakan
home_url()
untuk pergi keindex.php
dansite_url()
untuk mendapatkan file inti dan semacamnya.Refrences:
Codex untuk
site_url
Codex untuk
home_url
Codex untuk Memberikan Direktori Wordpress Sendiri
sumber
Cara termudah untuk mendapatkan url situs tanpa sub-direktori ( http://example.com/ daripada http://example.com/blog ), cukup gunakan backslash /
Misalnya, jika Anda mengetik:
Ini akan membuat tautan yang menuju ke domain Anda
sumber
/
untuk ini situs, di situs yang berbeda, OP mungkin mengharapkan subdirektori untuk dikembalikan. Itu tergantung pada konfigurasi WP untuk setiap situs.