Özel Yazı Tipi Eklentisi: Şablonu Nereye Koyabilirim?


11

Özel bir yazı tipi eklentisi yazıyorum. Bir kısmı şablona kısa kodlar üzerinden çıktı alıyorum. Ama diğer bölümlerin özel bir yazı şablonuna ihtiyacı var ve ben CPT'ler için şablon hiyerarşisini nasıl kullanacağımı anladım. Ancak özel şablon temada ve eklentinin en azından başlangıçta kendi kendine yetmesi gerektiğini düşünüyorum.

Peki buradaki en iyi uygulama nedir? Şablon dosyalarını bir CPT eklentisine nasıl ekleriz? Beni bunun nasıl yapıldığına dair iyi örneklere yönlendirebilir misiniz?

Yardım ettiğin için teşekkür ederim.



1
Bunun bir kopya olduğundan emin değilim, ama öznel bir soru. Benim için en iyi uygulama temanın üstesinden gelmesine izin vermektir. Başkaları için en iyi uygulamalar, eklentiyi tamamen bağımsız hale getirmektir.
chrisguitarguy

@JohannesPille Sormadan önce arama yaptım. Ama bağlantı için teşekkürler. Ben bakacağım.
NotoriousWebmaster

1
@chrisguitarguy Kabul etti. Temayı ele almayla ilgili sorunum, temaları değiştirirsek, eklentiyi barındırmak için bazı özelleştirme yapmak zorundayız. Aksi takdirde, CPT'nin partiye getirdiği şeyleri kaybederiz.
NotoriousWebmaster

Yanıtlar:


8

Peki buradaki en iyi uygulama nedir?

Temanın halletmesine izin vermenin ve eklentinizle bir varsayılan sağlamanın bir kombinasyonunu söyleyebilirim.

single_templateŞablonu değiştirmek için filtreyi kullanabilirsiniz . Geri aramalarınızda, temanın gönderi türü için bir şablon sağlayıp sağlamadığını, varsa, hiçbir şey yapmadığını görün.

<?php
add_filter('single_template', 'wpse96660_single_template');
function wpse96660_single_template($template)
{
    if ('your_post_type' == get_post_type(get_queried_object_id()) && !$template) {
        // if you're here, you're on a singlar page for your costum post 
        // type and WP did NOT locate a template, use your own.
        $template = dirname(__FILE__) . '/path/to/fallback/template.php';
    }
    return $template;
}

Bu yöntemi en çok seviyorum. "Şablonu etiketleri" bir ses ayarı sağlayan birleştirin (örn. the_content, the_title) Bazı ses varsayılan birlikte son kullanıcıya özelleştirme çok fazla güç vermek ne olursa olsun özel Yazınızı türü ile birlikte giden verileri ve bu desteği. Bbpress bu tür şeyleri gerçekten iyi yapıyor: kullanıcı şablonlarını buluyorsa ve çok sayıda şablon etiketi sağlıyorsa.

Alternatif olarak, the_contentfiltreli bir geri arama kullanabilir ve yalnızca içeriğin kendisinde bir şeyler değiştirebilirsiniz.

<?php
add_filter('the_content', 'wpse96660_the_content');

function wpse96660_the_content($content)
{
    if (is_singular('your_post_type') && in_the_loop()) {
        // change stuff
        $content .= '<p>here we are on my custom post type</p>';
    }

    return $content;
}

@Toscho ile temiz bir çözüm olmadığını kabul ediyorum. Ancak bir dizi kategori etiketi sunmayı seviyorum. Sonuçta eklentimde bir örnek CPT şablonuyla bir tema klasörü olacağından şüpheleniyorum ve kullanıcıların bunu durumlarına uyarlamasını tavsiye ediyorum. Ayrıca the_content filtresini de beğeniyorum, çünkü içeriğimi kullanıcının düzenine yerleştiriyor. Her ikisini de uygulayabilir ve kullanıcının bir seçenek geçişiyle hangi yolu seçeceğini seçmesine izin verebilirim.
NotoriousWebmaster

3

Sen içine kanca olabilir template_includeve istek sonrası türü için olup olmadığını eklenti dosyasını iade:

add_filter( 'template_include', 'insert_my_template' );

function insert_my_template( $template )
{
    if ( 'my_post_type' === get_post_type() )
        return dirname( __FILE__ ) . '/template.php';

    return $template;
}

Ama bu görünüşü büyük ölçüde değiştirecek. Hala temiz bir çözüm yok.


Evet, haklısın, düzen, widget'lar ve benzeri gibi görünümü değiştirecekti. Benim zevkime göre çok radikal. Ama teşekkürler.
NotoriousWebmaster
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.