it-swarm.asia

Özel Taksonomi Arşivi ile Sayfalandırmayı Sabitleme

Sitemdeki bir serideki yazılar yazmak için bir yol bulmaya çalışıyorum. Buradaki düşünce, her bir gönderinin özel bir taksonomide farklı bir diziye ait olabileceğidir. Hemen hemen her şeyi istediğim gibi ayarlamıştım ... bir istisna dışında.

Taksonomiyi Kaydetmek

Bu kısım çalışıyor. Bir eklentiye şu kodu düşürdüm:

function jdm_build_series_taxonomy() {
    $labels = array(
        'name' => _x('Series Labels', 'taxonomy general name'),
        'singular_name' => _x('Series Label', 'taxonomy singular name'),
        'search_items' => __('Search Series Labels'),
        'popular_items' => __('Popular Series Labels'),
        'all_items' => __('All Series Labels'),
        'parent_item' => __('Parent Series Label'),
        'parent_item_colon' => __('Parent Series Label:'),
        'edit_item' => __('Edit Series Label'),
        'update_item' => __('Update Series Label'),
        'add_new_item' => __('Add New Series Label'),
        'new_item_name' => __('New Series Label Name')
    );

    register_taxonomy(
        'series',
        'post',
        array(
            'hierarchical' => true,
            'label' => __('Series'),
            'labels' => $labels,
            'query_var' => true,
            'rewrite' => true
        )
    );
}

add_action( 'init', 'jdm_build_series_taxonomy', 0 );

Bu Mesajlar açılır menüsüne "Seri Etiketleri" ekler ve yazı düzenleme ekranında bana "Seri Etiketleri" kutusunu verir. Her şey çalışıyor ve gönderileri mükemmel bir serinin parçası olarak işaretleyebilirim. Sorun bir sonraki bölümde yatmaktadır ...

Taksonomideki öğeleri listeleme

Amacım, okuyucuların bir seferde bir diziyi, en eski diziden başlayıp kronolojik olarak ileriye doğru ilerlemelerini sağlamak. Bu, tipik bir arşiv sayfasından farklıdır, çünkü arşivlerim için sayfa başına 10 gönderiye sahibim, ancak açıkça açıkça, seri arşivim için sayfa başına yalnızca bir gönderi istiyorum.

Şablonumun içinde bir taxonomy-series.php dosyası oluşturdum. Ve yarım çalışıyor. İlk sayfa gayet iyi çalışacak - http://localhost/wp/series/my-test-series/, serideki ilk makaleyi sayfanın en altındaki "Next Entry" "bağlantısıyla birlikte görüntüler. Çok uzak çok iyi ...

Ancak "Sonraki Giriş" "e tıklayıp bir sonraki sayfaya (http://localhost/wp/series/my-test-series/page/2/) girdiğinizde bu a) yanlış makale ve b) yanlış şablondur!

Ancak, Okuma sayfasındaki "Blog sayfaları en çok gösteriliyorsa:" değerini "1" e ayarlarsam (normalde 10 olarak ayarlanır), işler iyi sonuç verir. Sayfa 2, ikinci makaleyi görüntüler, sayfa 3 üçüncü görüntüler, vb.

Öyleyse ... taksonomi arşiv sayfasını her sayfada yalnızca bir gönderi görüntülemeye zorlamak için neye iki kez bakmam gerekiyor? Aşağıdakileri denedim:

$new_query = wp_parse_args(
    $query_string, 
    array(
        'posts_per_page' => 1,
        'paged' => $paged
    )
);

query_posts($new_query);

ve

query_posts($query_string.'&posts_per_page=1&paged='.$paged);

boşuna ... fikir? İpuçları? Öneriler?

4
EAMann

İşte kategori ve etiketlerin arşiv sayfalarındaki yayın sayısını değiştirmek için kullandığım kod:

query_posts( array_merge( array(
'posts_per_page' => 1
), $wp_query->query ) );

Bu işlemi özel taksonomi ile yapamıyorsanız, sorunun kodun kendisinde, taksonomide veya başka bir şeyde olup olmadığını kontrol etmek için native (kategoriler, etiketler) ile deneyin.

Ayrıca, bunu kaçırdığınızdan veya bıraktığınızdan emin değilim, ancak $ disk belleği global değişken değil. Get_query_var ('paged') olarak alınmalı

2
Rarst

Bir zamanlar bununla ilgili bir sorunla karşılaştım ve zor zamanları saçı çekerek saate kadar geçtim. Google'a gittim ve konular hakkında özel bir çözüm bulamadım. Birkaç yetenek makalesi buldum ama sorunlarımı karşılamadılar. Aslında özel taksonomi arşiv sayfası sayfalandırma, ilgili işlevlerin bazı argüman ayarlarına bağlıdır. Aslında buraya gidiyorum, taksonomi arşivinde sayfalama sorununu çözme düşüncelerimi paylaşıyorum.

Özel taksonomi arşiv sayfası sayfalandırma için ihtiyacınız olan beş şey mükemmel çalışıyor:

(1) exclude_from_search parametre anahtarını register_post_type argüman parametresi olarak koymayın veya 'exclude_from_search' => false olarak ayarlayın. Varsayılan olarak false olarak ayarlanmıştır.

(2) Özel yazı tipiyle kullanılacak taksonomi 'taxonomies' => 'custom_taxonomy_name'register_post_type argüman parametresi olarak ayarlayın veya doğrudan register_taxonomy_for_object_type() öğesini kullanın. Özel taksonomilerin hala register_taxonomy() ile kayıtlı olmaları gerekir.

(3) new WP_Query ($args) içinde sorgulama yaparken

i) admin static front page içinde ayarlanmadıysa new WP_Query($args) işlevinden önce kullanın

$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;

ve $query = new WP_Query( array( 'paged' => $paged ) ); kullanın

ii) Yönetici statik ön sayfasında ayarlanmışsa, 'yeni WP_Query ($ args)' dan önce kullanın:

  $paged = ( get_query_var('page') ) ? get_query_var('page') : 1;

ve $query = new WP_Query( array( 'page' => $paged ) ); kullanın

new WP_Query($arg) argüman dizisinde posts_per_page ve paged parametresini kullanmayı unutmayın.

Statik ön sayfa ayarlanmadıysa, new WP_Query ($arg) argüman dizisinde page parametresini kullanmanız gerekir.

(4) Arşiv şablonu dosyasında sayfalandırma yapmak için aşağıdaki örnekteki gibi Wordpress paginate_links( $args ) işlevini kullanın.

<?php $big = 999999999; // need an unlikely integer
echo paginate_links( array(
                  'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
                  'format' => '?paged=%#%',  or   '/paged=%#%',  // if using pretty permalink
                   'current' => max( 1, get_query_var('paged') ),
                   'total' => $query->max_num_pages ) ); // Here $max_num_pages is the properties of  new WP_Query() object . It is total number of pages. Is the result of $found_posts / $posts_per_page
 ?>

(5) paginate_links() işlevi, ul li sınıfıyla page-numbers listesini verir. Eğer önyükleme kullanıyorsanız, javascript veya jquery yardımı ile pagination __ul sınıfını enjekte edin ve bir Nice süslü sayfalama çıkar.

Artık 404 sorunu yaşamadan taksonomi arşiv şablonunda sayfalandırmanın keyfini çıkarabilirsiniz. :-)

0
saifulmasud