Geçerli sayfa URL'sini alın (sayfalandırma dahil)


13

Geçerli sayfanın doğru URL'sini otomatik olarak almak için bir WP işlevi var mı? Sadece tek bir gönderi açtığımda, işlev aynı şekilde döner get_permalink(), ancak sayfanın sayfalandırılmış bir örneğindeysem (yorumlar arasında sayfalama yaparken), işlev aynı şekilde döner get_pagenum_link(get_query_var('paged')).

Ben kodeksi aradım ama ne aradığını bulamadım. (Ama get_pagenum_link()orada belgelenmemiş bile .)

Bu işlevi zaten biliyorum , ama işi yapan bir "yerli" WP işlevi olsaydı sevinirim.

Şimdiden teşekkürler! Saygılarımızla, René

Yanıtlar:


27

Rajeev Vyas'ın cevabına ek olarak, boş olmayan parametreleri de iletmeniz gerekmez add_query_arg(). Aşağıdakiler benim için her zaman iyi çalıştı:

// relative current URI:
$current_rel_uri = add_query_arg( NULL, NULL );

// absolute current URI (on single site):
$current_uri = home_url( add_query_arg( NULL, NULL ) );

İşlev geri düşer $_SERVER[ 'REQUEST_URI' ]ve urlencode_deep()ona uygulanır . Bkz. Https://github.com/WordPress/WordPress/blob/3.8/wp-includes/functions.php#L673

Düzenleme:$_SERVER[ 'REQUEST_URI' ] Filtrelenmemiş kullanıcı girişini temsil ettiği gibi , her add_query_arg()zaman içerik değiştiğinde dönüş değerinden kaçmalıdır. Örneğin, kullanmak esc_url_raw()DB kullanım veya için esc_attr()veya esc_url()HTML için.

Güncelleme

Mutlak bir URI (şema ve ana bilgisayar içeren) oluşturması gereken gösterilen örnek, home_url()bir yol segmenti de dahil olmak üzere tam URI'yi döndüreceği gibi alt dizinlere sahip çoklu sitede çalışmaz . Çok bölgeli farkında kod için daha iyi bir çözüm şudur:

// absolute URI in multisite aware environment
$parts = parse_url( home_url() );
$current_uri = "{$parts['scheme']}://{$parts['host']}" . add_query_arg( NULL, NULL );

WordPress çekirdeği, çok siteli bir site URL'sindeki bağlantı noktası, kullanıcı veya şifreyi desteklemediğinden, bu yeterli olmalıdır.


OP'nin sinir bozucu olması bu cevabı olduğu gibi Çözüm olarak seçmedi. Teşekkür ederim.
cfx

3
global $wp;
$current_url = add_query_arg( $wp->query_string, '', home_url( $wp->request ) );

Bir işlev değil, ama kesinlikle wordpress kodunu kullanarak ..

http://kovshenin.com/2012/current-url-in-wordpress/


2
Kısmen çalışır, ancak bazı şeyler istediğim gibi çalışmaz: Daha yearönce orada olmasalar bile, sorgu dizesine gibi parametreler eklenir ve diğer parametreler, örneğin replytocomparametre kaybolur. Bunun için bir çözüm biliyor musunuz?
René Schubert

0

1) $_SERVER['REQUEST_URI']- Komut dosyasını yürüten sayfaya erişmek için URL'yi döndürür. Sayfaya http://www.example.com/product.php?id=5erişmek için yazmanız gerekiyorsa $_SERVER['REQUEST_URI']geri döner /product.php?id=5.

2) $_SERVER['DOCUMENT_ROOT']- Sunucunun yapılandırma dosyasında belirtilen sunucunun kök dizinini döndürür. Bu değişken genellikle /usr/yoursite/wwwLinux ve D:/xamps/xampp/htdocspencerelerdeki gibi yol döndürür .

3) $_SERVER['HTTP_HOST']- http başlığında bulunan ana bilgisayarın adını döndürür. Bu değişken genellikle tarayıcının adres çubuğunda example.combulduğunuz gibi yol döndürür ve http://example.comadres çubuğunda www.example.comgördüğünüzde geri döner http://www.example.com. PHP için çevrimiçi ödeme yaparken oturumu korumanız gerektiğinde oldukça yararlıdır çünkü oturum için saklanan oturum ile http://example.comaynı değildir http://www.example.com.

4) $_SERVER['HTTP_USER_AGENT']- Web sayfasına erişen kullanıcı aracısının (tarayıcı) ayrıntısını döndürür. strpos($_SERVER["HTTP_USER_AGENT"],”MSIE”)Microsoft Internet explorer'ı algılamak için kullanabilir veya strpos($_SERVER["HTTP_USER_AGENT"],”Firefox”)PHP'de firefox tarayıcısını algılamak için kullanabilirsiniz .

5) $_SERVER['PHP_SELF']- Yürütülmekte olan komut dosyasının dosya adını döndürür. Diyelim ki URL'yi erişmekte olduğunuzu varsayalım http://www.example.com/product.php?id=5sonra $_SERVER['PHP_SELF']döner /product.phpBetiğinizde.

6) $_SERVER['QUERY_STRING']- Yürütülmekte olan komut dosyasına erişmek için sorgu dizesi kullanılıyorsa sorgu dizesini döndürür. Sorgu dizeleri “?” Den sonra kullanılabilen dizelerdir sign.Eğer $_SERVER['QUERY_STRING']aşağıdaki URL'yi yürüten komut dosyasında kullanırsanız , komut dosyanızda http://www.example.com/index.php?id=5&page=productgeri döner id=5&page=product.

7) $_SERVER['REMOTE_ADDR']- Geçerli sayfaya erişen uzak makinenin IP adresini döndürür. Ancak $_SERVER['REMOTE_ADDR']müşterinin makinesinin gerçek IP adresini almak için güvenemezsiniz . PHP'de gerçek IP eklentilerini nasıl alacağınızı öğrenmek için bu makaleye bakın.

8) $_SERVER['SCRIPT_FILENAME']- Yürütülmekte olan dosyanın mutlak yolunu döndürür. var/example.com/www/product.phpLinux'ta olduğu gibi D:/xampp/xampp/htdocs/test/example.phpve pencerelerde olduğu gibi yol döndürür .


1
Bunların hiçbirinin CLI'nizde bulunmadığını ve bu nedenle cron işleri için işe yaramadığını unutmayın.
kaiser

0

wp_guess_url aradığınız şey.

Sitenin URL'sini tahmin edin.

Yalnızca wp-admin dizininde olmayan dönüş URL'lerini almak için wp-admin bağlantılarını kaldıracaktır.


Kullanmaya çalıştığımda bu, geçerli sayfadan tamamen farklı bir URL döndürüyor.
Kirby

0

add_query_args( null, null ) $qs[""] = nullsonucu etkilemese de boş anahtar ( ) ile bir dizi öğesi oluşturur .


Göre ) (add_query_arg | İşlev | WordPress Geliştirici Kaynakları , 2., 3. parametreler isteğe bağlıdır ve bunlar atlanabilir.

add_query_args( null, null )olabilir daha kısa .

$current_url = add_query_args( [] );

1. parametre gerekli parametre olduğundan önerilmemesine rağmen en kısa sürüm de vardır .

$current_url = add_query_args();

Buna ek olarak, not her iki home_url( add_query_vars( [] ) )ve home_url( add_query_arg( null, null ) ) gerçek URL'sini getirmeyebilir WordPress alt dizinde yüklendiğinde.

mesela https://example.com/wp/wp/fooWordPress takıldığında döndürülebilir https://example.com/wp/.


Güncelleme: 2017/01/23

Sürümüm, David'in mutlak URL alma çözümüne dayanıyor.

$parts = parse_url(home_url());
$uri   = $parts['scheme'] . '://' . $parts['host'];

if (array_key_exists('port', $parts)) {
    $uri .= ':' . $parts['port'];
}

$uri .= add_query_arg([]);

0

Benim için <?php esc_url(the_permalink()); ?>çalışıyor (sayfalandırmalı bir arşiv sayfasında).


İmkansız. the_permalink()kaçan kalıcı bağlantıyı tekrarlar, hiçbir şey döndürmez. esc_url()Şey almaz ve bu olur, eğer bir çıkış yapılan URL olacaktır.
fuxia

Haklısın, sadece sanırım permaink önbellekleme nedeniyle çalıştı.
Henning Fischer

-1

Artık sayfalandırma yapmıyorum, ancak döngü içinde url almak için bu işlevi kullanabilirsiniz

<?php $ID = get_the_ID(); 
echo get_permalink( $ID ); ?>

Veya php kullanmayı tercih etmiyorsanız, burada jquery yöntemini de tercih edebilirsiniz (bu döngü dışında çalışmanıza yardımcı olacaktır)

$(document).ready(function () {
var vhref = $(location).attr('href');
var vTitle = $(this).attr('title');
$('#spnTitle').html('' + vTitle + '');
$('#spnURL').html('' + vhref + '');
});​

veya php işlevini kullanmayı tercih ederseniz, kimliği döngü dışında almanız gerekir


1
Üzgünüm, ama bu istediğim the_permalink()şey değil ... + döngü içinde çağrıldığında kimliğe ihtiyaç duymaz.
René Schubert

2
Bu cevabın orijinal soru ile çok az ilgisi vardı. Doğru cevap vermedi ve konuyla ilgili herhangi bir değerli bilgi vermedi.
jounileander

-2

Geçerli sayfa URL'sini almak için wordpress işlevini kullanabilirsiniz

the_permalink()

Bu size güncel sayfa URL bağlantısını döndürür.


4
Neredeyse; the_permalink()olacak yazdırmak Mevcut yayının URL'sini. Ancak diğer istekler için çalışmaz ve sayfalandırma gibi değişkenler içermez. Yani aslında René Schubert'in cevabı aramıyor.
TheDeadMedic
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.