4.4'e yükselttikten sonra özel sınıflandırma sorgusu kırıldı


9

4.2'den 4.4'e yükselttim ve şimdi sınıflandırma sorgum boş çıkıyor. Yükseltmeden önce iyi çalışıyor.

Özel posta türüm 'title'tarafından kullanılan adlı özel bir sınıflandırma kaydettim 'sg-publications'. WP şablon hiyerarşisini takiben, taxonomy-title.phpvarsayılan sorgu argümanlarını kullanan adlı bir şablon oluşturdum ve şimdiye kadar her yayını başlığına göre doğru bir şekilde gösterdim.

İşte bu şablonda $ queried_object ve $ wp_query-> isteğinin çıktısı:

[queried_object] => WP_Term Object
    (
        [term_id] => 1256
        [name] => Stroupe Scoop
        [slug] => stroupe-scoop
        [term_group] => 0
        [term_taxonomy_id] => 1374
        [taxonomy] => title
        [description] => 
        [parent] => 0
        [count] => 30
        [filter] => raw
    )

[queried_object_id] => 1256

[request] => 
SELECT wp_posts.* 
FROM wp_posts 
INNER JOIN wp_term_relationships 
ON (wp_posts.ID = wp_term_relationships.object_id) 
WHERE 1=1 
AND wp_posts.post_title = 'stroupe-scoop' 
AND ( 
    wp_term_relationships.term_taxonomy_id 
    IN (1374)
    ) 
AND wp_posts.post_type = 'sg-publications' 
AND (wp_posts.post_status = 'publish' 
    OR wp_posts.post_status = 'private'
    ) 
GROUP BY wp_posts.ID 
ORDER BY wp_posts.post_date 
DESC 

Yukarıdaki sorguda gördüğüm sorun hemen ardından WHERE 1=1, bazı nedenlerle arıyor post_title = 'stroupe-scoop'. Bu doğru değil - bu, sınıflandırma başlığı değil, sınıflandırma başlığıdır. Aslında, ben bu satır yorum ve veritabanına karşı çalıştırmak zaman uygun döner olsun. Peki, WP'ye bu durumu eklemesine neden olan şey nedir (4.4'e yükseltmeden önce eklemediğimde)?

Taksonomi-title.php:

<?php
/**
 * @package WordPress
 * @subpackage Chocolate
 */
  global $wp_query;

  $quer_object = get_queried_object();
  $tax_desc    = $quer_object->description;
  $tax_name    = $quer_object->name;
  $tax_slug    = $quer_object->slug;

get_header();
get_sidebar();

$title = get_the_title( $ID );
$args  = array(
    'menu'            => 'new-publications',
    'container'       => 'div',
    'container_id'    => $tax_slug . '-menu',
    'menu_class'      => 'menu-top-style nav nav-tab',
    'menu_id'         => '',
    'echo'            => true,
    'fallback_cb'     => false,
    'before'          => '',
    'after'           => '',
    'link_before'     => '<i class="fa fa-chevron-circle-right fa-fw fa-2x"></i>',
    'link_after'      => '',
    'items_wrap'      => '<ul id="%1$s" class="%2$s">%3$s</ul>',
    'depth'           => 0,
    'walker'          => ''
);

?>

<div id="page-title">
  <h1><?php _e( 'Publications - ' . $tax_name, LANGUAGE_ZONE ); ?></h1>
  <p><?php _e( 'View our monthly newsletter and stay informed on the latest real estate news.', LANGUAGE_ZONE ); ?></p>

<?php wp_nav_menu($args); ?>

</div>

<div id="multicol">

<?php
if ( have_posts() ) : while ( have_posts() ) : the_post();

get_template_part( 'loop' , 'title' );

endwhile;
endif;
?>

</div><!-- end #multicol -->
<section class="page-text well"><?php _e( $tax_desc, LANGUAGE_ZONE ); ?></section>

<?php
get_footer();

Ve function.php Bu sorgu filtresi var:

// use pre_get_posts to remove pagination from publications
function gd_publications_pagination( $query ) {
  if ( is_admin() || ! $query->is_main_query() )
    return;

  if ( is_tax('title') ) {
    // Display all posts for the taxonomy called 'title'
    $query->set( 'posts_per_page', -1 );
    return;
  }
}
add_action( 'pre_get_posts', 'gd_publications_pagination', 1 );

Sorgu kodu nerede? Şablonunuzdaysa, neden onu kıran parçayı kaldırmıyorsunuz? Değilse - sorguyu oluşturmak için ne kullandınız?
montrealist

Özel bir sorgu kodu yok, WP varsayılan döngüsünü kullanıyorum. Şablon Hiyerarşisini takip ettiğim için, WP benim sınıflandırma için doğru sorgu parametrelerini oluşturmalı (ve yükseltmeden önce).
Gary D

2
İçeriğiniz nedir taxonomy-title.php? functions.phpAna sorguda herhangi bir filtre olup olmadığını kontrol etmek için temaya baktınız mı?
montrealist

Yanıtlar:


5

Ben gibi genel sorgu değişkenleri ile çakışan bir sınıflandırma slug kullanmanızı tavsiye etmem title.

title Bunun sorunlarını açıklayabilir düşünüyorum böylece sorgu değişkeni 4.4 kullanılmaya başlandı.

Sınıfın bu bölümüne göz atın WP_Query:

    if ( '' !== $q['title'] ) {
        $where .= $wpdb->prepare( 
            " AND $wpdb->posts.post_title = %s", 
            stripslashes( $q['title'] ) 
        );
    }

Örneğin, kullandığımızda:

example.tld/?title=test

WordPress burada ne yapmalı? Bir sınıflandırma sorgusu veya başlık araması mı?

Bu nedenle , özel sınıflandırma bilgilerinin önekini öneriyoruz , ör.

gary_title

olası isim çarpışmalarını önlemek için.

Güncelleme:

İçin @ ocean90 sayesinde işaret bu olacak bir hata olduğunu tespit 4.4.1 yılında


2
4.4'teki değişikliğe kafa tuttuğunuz için teşekkür ederiz. Bunun bir adlandırma çatışması olabileceğinden şüphelendim. Birkaç test yaptıktan sonra takip edeceğim.
Gary D

Birkaç sürüm öncesine kadar, bir yazı türünü codekaydedemediniz, çünkü bu, tüm yönetici arka ucunu tek aralıklı hale getirdi. Jenerik isimler daima çarpışma adaylarıdır. Öte yandan, WordPress kendi içlerine önek eklemelidir.
fuxia

Evet, hepsi bu. Taksonomi terimini ve ilgili dosya adlarını çelişkili olmayan bir şemaya değiştirdiğimde hepsi geri döndü. Beni güncellenmiş WP koduna yönlendirdiğiniz için tekrar teşekkürler.
Gary D

duyduğuma sevindim ve tekrar çalışıyor @GaryD
birgire

harika, eski bir kurulumda ellerimi aldığımda bunu test etmeliyim ;-) Bu önek biletini kesinlikle destekleyeceğim, ama yakın gelecekte geçeceğini görmüyorum, ne yazık ki @toscho
birgire
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.