Slug'dan özel yazı tipi posta kimliği nasıl alınır?


18

Özel gönderi türü gönderi kimliğini yalnızca slug'tan almak mümkün mü?

Bildiğim kadarıyla başlık kullanarak id alabilirsiniz. Ama sümüklü böcekler benzersiz olduğu için özel bir yazı türünde aynı başlık olabilir ???

Yanıtlar:


40

Kullanabilirsiniz get_page_by_path()- adın sizi aldatmasına izin vermeyin, üçüncü argüman yazı tipidir:

if ( $post = get_page_by_path( 'the_slug', OBJECT, 'post_type' ) )
    $id = $post->ID;
else
    $id = 0;

7

Birkaç gün bekleyip 8 Aralık'ta ( AFAIK ) yayınlanacak olan Wordpress 4.4'e yükseltirseniz , bir dizi sümüklü böcek alan yeni parametreyi kullanabilirsiniz.post_name__inWP_Query

MİSAL

Komple yayın nesnesine ihtiyacınız varsa

$args = [
    'post_type'      => 'my_custom_post_type',
    'posts_per_page' => 1,
    'post_name__in'  => ['post-slug']
];
$q = get_posts( $args );
var_dump( $q );

Yalnızca kimliğe ihtiyacınız varsa

$args = [
    'post_type'      => 'my_custom_post_type',
    'posts_per_page' => 1,
    'post_name__in'  => ['post-slug'],
    'fields'         => 'ids' 
];
$q = get_posts( $args );
var_dump( $q );

Güzel, ama muhtemelen slug tarafından bir yazı almak için biraz yoğun? Neden bu özelliği eklediler?
TheDeadMedic

1
@TheDeadMedic Mighty biraz yoğun olabilir evet, bu konuda performansı gerçekten test etmedim, sadece alternatif ;-) olarak eklendi. Neden bilmiyorum, gerçekten bilmiyorum, WordPress'in ünlü olduğu gereksiz şeylerden birine benziyor. Adlandırma kuralı, IMHO da , olması gereken ve olmaması gereken post_nameözellik ve category_nameparametre gibi yanlışslugname
Pieter Goosen

Güzel :) vay aslında benim için güzel güncelleme :)
stlawrance 15

1
@TheDeadMedic Metodum ile metodunuz arasında zaman farkı yok. Sorgularımızın her birini çalıştırmak için sürekli olarak 0.002 ve 0.005 saniye arasında bir süre alıyorum. Ayrıca, her iki yöntem de yalnızca 1 sorgu çalıştırır. ;-)
Pieter Goosen

1
@TheDeadMedic PHP'nin yapacak daha az işi olduğu anlamına geliyordu - evet, kesinlikle, tamamen katılıyorum. Alternatifleri bilmek her zaman güzeldir ( bazen en iyisi olmasa da ) ve bir tür kriterlere sahip olmak. Zevk ;-)
Pieter Goosen

5

Eğer sadece post id istiyorsanız bu bir satırda hile yapacak.

url_to_postid( site_url('the_slug') );

1
url_to_postidÇok esnek bir işlevdir: Eğer permalink / tam URL her türlü geçmek ve bu URL için en doğru sonrası kimliğini alabilirsiniz. Bununla birlikte, esnek kullanım nedeniyle oldukça yavaştır (özellikle çok sayıda uç nokta / post tipi ile). Belirli bir yazı tipi için sadece bir sülükten geçerseniz, kullanımı çok daha hızlıdırget_page_by_path()
Philipp
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.