Saya baru saja memutakhirkan dari 4.2 ke 4.4 dan sekarang permintaan taksonomi saya kembali kosong. Sudah berfungsi dengan baik sebelum peningkatan.
Saya telah mendaftarkan taksonomi khusus bernama 'title'
, yang digunakan oleh jenis pos kustom saya 'sg-publications'
. Mengikuti hierarki templat WP, saya membuat templat yang disebut taxonomy-title.php
yang menggunakan arg kueri default, dan sampai sekarang telah menunjukkan dengan benar setiap publikasi berdasarkan judulnya.
Ini adalah output dari $ queried_object dan $ wp_query-> request dalam templat itu:
[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
Masalah yang saya lihat dalam kueri di atas tepat setelah WHERE 1=1
, karena beberapa alasan ia mencari post_title = 'stroupe-scoop'
. Ini tidak benar - itu adalah istilah siput taksonomi, bukan judul tulisan. Bahkan, ketika saya mengomentari baris itu dan menjalankannya terhadap database saya mendapatkan pengembalian yang tepat. Jadi apa yang menyebabkan WP menambahkan kondisi itu, ketika (saya berasumsi) itu tidak menambahkannya sebelum saya memutakhirkan ke 4.4?
Berikut adalah 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();
Dan di functions.php saya memiliki filter kueri ini:
// 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 );
taxonomy-title.php
? Apakah Anda melihat di temafunctions.php
untuk memeriksa apakah ada filter pada permintaan utama?Jawaban:
Saya tidak akan merekomendasikan menggunakan siput taksonomi yang bertepatan dengan variabel kueri publik, seperti
title
.The
title
variabel permintaan diperkenalkan pada 4,4 jadi saya pikir yang bisa menjelaskan masalah Anda.Periksa bagian dari
WP_Query
kelas:Jadi ketika kita gunakan misalnya:
apa yang harus dilakukan WordPress di sini? Apakah ini pencarian taksonomi atau pencarian judul?
Jadi saya akan merekomendasikan awalan siput taksonomi kustom, misalnya
untuk menghindari kemungkinan tabrakan nama.
Memperbarui:
Terima kasih kepada @ ocean90 untuk menunjukkan bahwa ini adalah bug, yang akan diperbaiki di 4.4.1
sumber
code
, karena itu membuat seluruh admin backend monospace. Nama generik selalu menjadi kandidat tabrakan. Di sisi lain, WordPress harus awalan internalnya sendiri.