“/ Page / 2 /” neden çalışmıyor?


11

Sonunda aşağıdaki kodla çalışmak için sayfalandırma var, ancak artık sayfalandırma / videos / sayfa / 2 / 'ye bağlanıyor. Sayfa 2'yi nasıl çalıştırabilirim?

<?php
$temp = $wp_query;
$wp_query= null;
$wp_query = new WP_Query();
$wp_query->query('post_type=videos&showposts=1'.'&paged='.$paged);

while ($wp_query->have_posts()) : $wp_query->the_post();
  //display stuff
endwhile;           

php  wp_pagenavi();
 ?>

Böyle ana sorgu geçersiz kılma tavsiye etmem, kullanmayı düşündünüz pre_get_postsmü? Sonra kendi sayfa kodunuzu yazmak yerine yerleşik sayfalama kodunu kullanabilirsiniz ve standart bir post döngüsüne basitleştirebilirsiniz
Tom J Nowell

Ayrıca, WordPress yazı türleri için standart bir arşiv sayfası sağlar, bu yüzden zaten /videos/yüklenecek bir archive-videos.phpsorgu arşivine sahip olmalısınız , bu sorgularla
Tom J Nowell

Yanıtlar:


15

Cevabı buldum:

Wordpress çekirdeği hata ayıklama bir gün sonra, bu sorunu çözmek başardı.

Temel olarak, aynı ada sahip bir SAYFA ve ÖZEL POST TİPİNİZ OLABİLİR. Bunu yaparsanız, kalıcı bağlantı yeniden yazma kuralları karışır ve 404'ü tetikler.

Kullandığım çok basit bir çözüm şudur: Özel gönderi türlerini listeleyen sayfa çoğul olarak adlandırılır (örneğin, ürünler) ve gerçek gönderi türü adı tekildir (ör. Ürün). Yani çatışma yok ve her şey yolunda.

Yapıldı Yapıldı! Umarım bu insanların zamanından tasarruf sağlar.


6
Sanırım, sadece özel gönderi değil, aynı adı taşıyan bir gönderi ve bir sayfanız olamaz.
Rutwick Gangurde

4

Uzun bir süre sonra bu konu için bir çözüm buldum ( franzblog sayesinde ).

Sürüm 4.2 veya daha yenisini kullanıyorsanız, functions.phpdosyanıza aşağıdaki satırları eklemeniz gerekir :

add_filter( 'redirect_canonical', 'custom_disable_redirect_canonical' );
function custom_disable_redirect_canonical( $redirect_url ) {
    if ( is_paged() && is_singular() ) $redirect_url = false; 
    return $redirect_url; 
}

Şimdi her şey yolunda gidiyor!


1

aynı ada sahip bir SAYFA ve ÖZEL POST TİPİNİZ OLABİLİR

Belki ağaç yıllar önce imkansızdı, ama şimdi yapabilirsiniz.

İlk olarak, bu satırları $argsyazı türünüze ekleyin :

'has_archive' => false,
'rewrite'     => array(
                 'slug'       => 'your slug', // if you need slug
                 'with_front' => false,
                 ),

İkincisi, functions.phpek eylemde:

add_action('init', 'custom_rewrite_basic');
function custom_rewrite_basic() {
    global $wp_post_types;
    foreach ($wp_post_types as $wp_post_type) {
        if ($wp_post_type->_builtin) continue;
        if (!$wp_post_type->has_archive && isset($wp_post_type->rewrite) && isset($wp_post_type->rewrite['with_front']) && !$wp_post_type->rewrite['with_front']) {
            $slug = (isset($wp_post_type->rewrite['slug']) ? $wp_post_type->rewrite['slug'] : $wp_post_type->name);
            $page = get_page_by_slug($slug);
            if ($page) add_rewrite_rule('^' .$slug .'/page/([0-9]+)/?', 'index.php?page_id=' .$page->ID .'&paged=$matches[1]', 'top');
        }
    }
}

function get_page_by_slug($page_slug, $output = OBJECT, $post_type = 'page' ) {
    global $wpdb;

    $page = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_name = %s AND post_type= %s AND post_status = 'publish'", $page_slug, $post_type ) );

    return ($page ? get_post($page, $output) : NULL);
}

Gösterge tablosundaki kuralları temizlemeyi unutmayın.

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.