Saya ingin menambahkan kode PHP khusus untuk memastikan bahwa setiap kali halaman di situs saya dimuat di browser saya, URL dari halaman itu bergema ke layar. Saya dapat menggunakan echo get_permalink()
, tetapi itu tidak berfungsi pada semua halaman. Beberapa halaman (mis. Beranda saya ) menampilkan beberapa posting, dan jika saya gunakan get_permalink()
pada halaman-halaman ini, URL dari halaman yang ditampilkan tidak dikembalikan (saya percaya ini mengembalikan URL dari posting terakhir dalam loop). Untuk halaman ini, bagaimana saya bisa mengembalikan URL?
Dapatkah saya memasang get_permalink()
kait tertentu yang menyala sebelum loop dijalankan? Atau bisakah saya keluar dari loop, atau meresetnya setelah selesai?
Terima kasih.
php
loop
permalinks
urls
cag8f
sumber
sumber
is_home()
atauis_page( 'fr' )
dll dan hanya enqueue skrip jika itu benar?if ( home_url( $wp->request ) == home_url() ) { wp_enqueue_script();}
ini Tampaknya menyala di setiap halaman rumah, terlepas dari bahasa. Apakah itu yang Anda sarankan?$_SERVER['REQUEST_URI']
dan menemani? Lihat pertanyaan ini: stackoverflow.com/q/6768793/247696Jawaban:
get_permalink()
hanya sangat berguna untuk satu halaman dan posting, dan hanya berfungsi di dalam loop.Cara paling sederhana yang pernah saya lihat adalah ini:
$wp->request
termasuk bagian jalur URL, mis./path/to/page
danhome_url()
menghasilkan URL di Pengaturan> Umum, tetapi Anda dapat menambahkan jalur ke sana, jadi kami menambahkan jalur permintaan ke URL beranda dalam kode ini.Perhatikan bahwa ini mungkin tidak akan berfungsi jika Permalinks disetel ke Plain, dan akan menghilangkan string kueri (
?foo=bar
bagian dari URL).Untuk mendapatkan URL saat permalink diatur ke polos, Anda dapat menggunakannya
$wp->query_vars
, dengan meneruskannya keadd_query_arg()
:Dan Anda dapat menggabungkan kedua metode ini untuk mendapatkan URL saat ini, termasuk string kueri, terlepas dari pengaturan permalink:
sumber
echo '//' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
.echo home_url( $wp->request )
. Saya telah memastikan untuk memasukkanglobal $wp
juga. Permalink bukan 'Biasa', tetapi disetel ke 'Nama Posting'. Saya juga tidak melihat kesalahan PHP yang relevan di log. Halaman khusus ini adalah bagian dari situs dev saya, yang sebaliknya diblokir untuk pengunjung. Saya tidak yakin apakah itu penting atau tidak. sunting: Sebenarnya, pegang pemikiran itu - bisa jadi kesalahan pengguna.trailingslashit()
, tergantung pada kebutuhan Anda.Anda dapat menggunakan kode di bawah ini untuk mendapatkan seluruh URL saat ini di WordPress:
Ini akan menampilkan path lengkap, termasuk parameter kueri.
sumber
array()
dengan$_GET
. yaitu:home_url(add_query_arg($_GET,$wp->request));
sumber
Kode berikut akan memberikan URL saat ini:
Anda dapat menggunakan kode di bawah ini untuk mendapatkan URL lengkap beserta parameter kueri.
Ini akan menampilkan path lengkap, termasuk parameter kueri. Ini akan mempertahankan parameter kueri jika sudah ada di URL.
sumber
wp-admin/plugins.php
URL saya saat ini, itu hanya path root dan string kueri.Ini adalah cara contoh yang ditingkatkan yang disebutkan sebelumnya. Ini berfungsi ketika URL cantik diaktifkan namun dibuang jika ada parameter kueri seperti / page-slug /? Param = 1 atau URL jelek sama sekali.
Contoh berikut akan bekerja pada kedua kasus.
sumber
Mungkin
wp_guess_url()
itulah yang Anda butuhkan. Tersedia sejak versi 2.6.0.sumber
home_url()
.Kenapa tidak pakai saja?
sumber