Özel Yazı Tipi Slug / Sayfa Slug Çatışması - Sayfa kaydetme ayrılmış slug kullanımını önlemek?


13

Temamda özel bir yazı tipi portföyü (slug portföyü) var ve bir şey dışında her şey iyi çalışıyor. Kullanıcılar, örneğin: example.com/portfolio gibi bir portföy portföyüyle bir sayfa oluşturduğunda, tema, düzenleyicide oluşturulmuş sayfamı değil, özel yazı türü arşiv sayfasını kullanmak istediğimi düşünüyor.

Sayfalar hiç kullanılmadığından emin olmak için kaydedildiğinde slug portföyünü bir şekilde "ayırabilir miyim", belki portföy sayfasına yeniden adlandırılabilir mi?

Projem bu derste anlatılan yöntemleri kullanıyor, işte bahsettiğim çatışma şu:

"Kodu yamalamak zorunda kalmanın ötesinde, Page slug'ınızı özel yazı tipi slug'unuzla aynı şeyi çağıramayacağınız bir başka yakalama daha var. Özel yazı türü slug'unuzu ayrılmış bir anahtar kelime olarak düşünün; Ancak, Sayfanızın başlığı, Sayfa slug'ınız farklı bir şey olduğu sürece özel posta türü sümükünüzle aynı addır. " - http://wp.tutsplus.com/tutorials/custom-post-type-pagination-chaining-method/

Herhangi bir tavsiye için teşekkürler!


Gördüğüm bir seçenek bunu register_post_type () init'ten kaldırmak olacaktır: 'rewrite' => dizi ('slug' => 'portföy', 'with_front' => true) ve sadece 'rewrite' => false ve çirkin "tek" portföy öğeleriyle yaşayın.
hhins

Cevabını bilmek istediğim için soruna oy ver! Birkaç kez özel mesajlarla çalıştım, ancak bunu hiç fark etmedim ve şimdi sorunuzu okuduktan sonra denedim. Haklısın, WordPress burada karışıyor!
Rutwick Gangurde

Yanıtlar:


13

Aşağıdaki 2 filtre, WordPress slug'u kontrol ettiğinde ve wp-include / post.php dosyasındaki wp_unique_post_slug () işlevinde bulunduğunda devreye girmenizi sağlar.

Biri hiyerarşik yayınlar için ve diğeri hiyerarşik olmayan için 2 filtre vardır. Hiyerarşik filtre yazı üst öğesinin kimliğini sağlar, böylece $ post_parent 0 ise bunun bir "temel" yazı olduğunu bilirsiniz.

Filtreler, mantığınıza belirli yazı türleri eklemek isterseniz $ post_type parametresini de iletir.

"True" ifadesini döndürerek, WordPress'e bu sülük kötü olduğunu söylüyorsunuz, bu yüzden WordPress, zaten alınmış olan bir posta adı / slug çalışmaya çalıştığınız gibi, bir sonek ekliyor.

add_filter( 'wp_unique_post_slug_is_bad_hierarchical_slug', 'portfolio_is_bad_hierarchical_slug', 10, 4 );
function portfolio_is_bad_hierarchical_slug( $is_bad_hierarchical_slug, $slug, $post_type, $post_parent ) {
    if ( !$post_parent && $slug == 'portfolio' )
        return true;
    return $is_bad_hierarchical_slug;
}

add_filter( 'wp_unique_post_slug_is_bad_flat_slug', 'portfolio_is_bad_flat_slug', 10, 3 );
function portfolio_is_bad_flat_slug( $is_bad_flat_slug, $slug, $post_type ) {
    if ( $slug == 'portfolio' )
        return true;
    return $is_bad_flat_slug;
}

Nedense hala aynı sorunla karşı karşıyayım
Tan-007

1

'Portföy' içeren bir sayfa oluşturun ve 'Özel' yapın. Sümüklü böcek daha fazla kullanımdan ayrılırken halktan gizlenecektir.


1

Bir sayfalama sorununu araştırırken tam olarak bu sorunla karşılaştı. Bir Haberler ana sayfamız (slug "news") var ve sayfalandırma başarısız oldu ... / news / page / 2 / dizinine ulaşma girişimleri her zaman '404 - Bulunamadı' sonucunu verdi.

Sorun, Haber özel türümüze ayrıca sülük "haber" verildiği ortaya çıktı. İkincisini değiştirerek (örneğin "news_archive" olarak) sorun giderildi. Bu, orijinal haber URL referanslarını değiştirmedi. Haber ana sayfası bilgisini değiştirmek de işe yaradı, ancak daha sonra tüm URL'ler değiştirilen bilgileri içeriyordu.

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.