Get_post_permalink ve get_permalink arasındaki fark nedir?


11

Ben belgelerine okudum get_post_permalink()ve get_permalink()ve bu ikisi arasındaki farkı bilmemektedir. Bunun nedeni, $leavenameve $sampleparametrelerinin amacını anlamıyorum . Herkes bunları açıklayabilir mi ve bir işlev ne zaman diğerinden daha yararlı olur? Teşekkürler!

Yanıtlar:


6

get_post_permalink()Funciton değiştirir onun "kalıcı" bağlantısını artı özel yeniden yazma kuralları bağlı olarak yayına bağlantı getirir ?p=123örn için içine my-beautiful-sunday-diary. get_permalink()Fonksiyon hem de daha çok yönlü ne yaptığını daha "temel" ama a For post_typearasında

  • page, kullanır get_page_link()
  • attachment, kullanır get_attachment_link()
  • post, kullanır get_post_link()

Ayrıca termbenzer categoryve tarih kalıcı bağlantılarının görüntülenmesini de yönetir . Sonunda, "güzel" bağlantısının yerini alır home_url()veya özel yeniden yazma kuralı atanmamışsa yalnızca ham bağlantıyı döndürür. Son olarak genel bir filtre ekler:

/**
 * Filters the permalink for a post.
 *
 * Only applies to posts with post_type of 'post'.
 *
 * @since 1.5.0
 *
 * @param string  $permalink The post's permalink.
 * @param WP_Post $post      The post in question.
 * @param bool    $leavename Whether to keep the post name.
 */
return apply_filters( 'post_link', $permalink, $post, $leavename );

Bu konuyu açıklığa kavuşturmak dileğiyle.

ProTip: Bir eklenti değişim peramlinks gerekiyorsa, içindeki belirli filtreler ile gitmek get_attachment_link(), get_post_link()vb ya tek bir site üzerinde çalışıyoruz ve kodunuzu dağıtmak düşünmüyoruz veya sadece yeniden hedefleme bir eklenti yazıyorsanız eğer Sadece eğer sonra yukarıdaki genel filtreyle devam edin. Yoksa her tema yazarının çabalarını nuke ve bir geri arama önceliği yarış başlatmak.


2

Başka biri kesinlikle benden daha iyi açıklayacaktır. Sadece kullandığım gibiget_permalink()

Çoğunlukla benzerdir, çünkü her ikisi de post permalink'i döndürür, get_permalinkkullanır get_post_permalink(post_types için) ve filtre olabilir. Ayrıca get_post_permalinkpost_types adanmış gibi görünen bir sayfa bağlantısı, ek almak için de kullanılacaktır .

DÜZENLE:

Kullanımı hakkında $leavename, bağlantının direk tipine göre, yapı konstrüksiyon slugunu döndürdüğü için bir ön uç (ve arka uçta) kullanımına gerek yoktur.

 echo get_permalink(123, true);

Kullanılabilecek bağlantı için yeniden yazma şemasını döndürme

Bir yayın:

 http://example.com/%postname%/

Ürün:

 http://example.com/%product%/

$ leavename, $ rewritecode dizisindeki get_permalink () öğesinde kullanılır ve 221 işlev satırına ilk parametre olarak konur

$permalink = home_url( str_replace($rewritecode, $rewritereplace, $permalink) );

Bir geliştirici için bir bağlantı için yeniden yazma sümüğünü keşfetmek yararlı olabilir (ama bunu yapmanın daha iyi bir yolu olduğunu düşünüyorum)

Umarım birisi daha fazla ayrıntı verir.


Teşekkürler! Yine de bu konuda hala net değilim. Kalıcı bağlantı yapısını değiştirmek için $ livename kullandınız mı? Bunu neden ve nasıl yaparsınız? Ve arşiv almak için get_post_permalink () yönteminin kullanıldığını mı, yoksa get_permalink () yönteminden mi bahsediyorsunuz? Ben bugüne kadar get_permalink () gibi tam olarak kullanılan üzerinden koştu bugüne kadar kullanılan get_post_permalink () görmedim bu yüzden fark net değilim.
Michelle

Ben get_permalink hakkında konuşuyorum, kaynak var, yazar sayfası, kategoriler vb almak ... Get_post_permalink daha yapacak. Get_permalink, yanılmıyorsam ve güçlü bir şablon işlevidir.
Benoti

Anlaşıldı, get_post_permalink () 'e ihtiyacımız olduğunda veya kullanmak istediğimizde elde edemiyorum - bir kod örneği verebilir misiniz? Ve $ leavename ve $ sample'ın ne yaptığını biliyor musunuz? Ben sadece get_permalink () da kullandım :-)
Michelle

2
$leavenameadmin, kalıcı bağlantı yapısını almak için kullanılır, böylece bir gönderinin sümüklerini düzenlemenizi sağlayan arabirimi oluşturabilir.
Milo
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.