4.4 करने के बाद कस्टम टैक्सोनॉमी क्वेरी टूट गई


9

मैंने अभी ४.२ से ०.४ तक अपग्रेड किया है और अब मेरी टैक्सोनॉमी क्वेरी खाली लौटती है। यह उन्नयन से पहले ठीक काम कर रहा है।

मैंने एक कस्टम टैक्सोनॉमी पंजीकृत की है 'title', जिसका उपयोग मेरे कस्टम पोस्ट प्रकार द्वारा किया जाता है 'sg-publications'। WP टेम्प्लेट पदानुक्रम के बाद मैंने एक टेम्प्लेट बनाया, taxonomy-title.phpजो डिफ़ॉल्ट क्वेरी आर्ग का उपयोग करता है, और अब तक प्रत्येक प्रकाशन को शीर्षक के साथ सही ढंग से दिखाया गया है।

यहाँ उस टेम्पलेट में $ queried_object और $ wp_query-> अनुरोध का आउटपुट दिया गया है:

[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 

उपरोक्त क्वेरी में मुझे जो समस्या दिखाई दे रही है, वह सही है WHERE 1=1, किसी कारण से इसे खोज रही है post_title = 'stroupe-scoop'। यह सही नहीं है - यह टैक्सोनॉमी शब्द स्लग है, पोस्ट का शीर्षक नहीं है। वास्तव में, जब मैं उस लाइन पर टिप्पणी करता हूं और इसे डेटाबेस के खिलाफ चलाता हूं तो मुझे उचित रिटर्न मिलता है। तो क्या WP उस स्थिति को जोड़ने का कारण बन रहा है, जब (मुझे लगता है) यह 4.4 में अपग्रेड होने से पहले इसे नहीं जोड़ रहा था?

यहाँ वर्गीकरण-शीर्षक है। एफपी:

<?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();

और function.php में मेरे पास यह क्वेरी फ़िल्टर है:

// 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 );

क्वेरी कोड कहां है? यदि यह आपके टेम्प्लेट में है तो आप इसे तोड़ने वाले हिस्से को क्यों नहीं हटाते? यदि यह नहीं है - तो क्वेरी बनाने के लिए आपने क्या उपयोग किया था?
मॉन्ट्रियल सूची में

कोई कस्टम क्वेरी कोड नहीं है, मैं WP डिफ़ॉल्ट लूप का उपयोग कर रहा हूं। क्योंकि मैं टेम्पलेट पदानुक्रम का पालन कर रहा हूं, इसलिए WP को (और अपग्रेड करने से पहले) मेरी टैक्सोनॉमी के लिए सही क्वेरी पैरामीटर उत्पन्न करना चाहिए।
गैरी डी

2
आपकी क्या सामग्री है taxonomy-title.php? क्या आपने functions.phpमुख्य क्वेरी पर कोई फ़िल्टर हैं या नहीं यह जांचने के लिए थीम को देखा ?
मोंट्रिआलिस्ट

जवाबों:


5

मैं सार्वजनिक क्वेरी चर के साथ मेल खाने वाले एक टैक्सोनॉमी स्लग का उपयोग करने की अनुशंसा नहीं करूंगा title

title क्वेरी चर 4.4 में पेश किया गया था तो मुझे लगता है कि अपनी समस्याओं को समझा जा सके।

की जाँच करें इस हिस्से के WP_Queryवर्ग:

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

इसलिए जब हम उदाहरण के लिए उपयोग करते हैं:

example.tld/?title=test

वर्डप्रेस को यहाँ क्या करना चाहिए? क्या यह एक टैक्सोनॉमी क्वेरी या शीर्षक खोज है?

इसलिए मैं कस्टम टैक्सोनॉमी स्लग, जैसे उपसर्ग की सिफारिश करूंगा

gary_title

संभावित नाम टकराव से बचने के लिए।

अपडेट करें:

@ समुद्र 90 को इंगित करने के लिए धन्यवाद कि यह एक बग है, जो 4.4.1 में तय किया जाएगा


2
4.4 में परिवर्तन पर सिर के लिए धन्यवाद - मुझे संदेह था कि यह नामकरण संघर्ष हो सकता है। एक बार कुछ परीक्षण चलाने के बाद मैं इसका पालन करूंगा।
गैरी डी

कुछ संस्करणों से पहले तक, आप पोस्ट प्रकार को पंजीकृत नहीं कर सकते थे, codeक्योंकि इससे पूरा व्यवस्थापक बैकऑन हो जाता था। जेनेरिक नाम हमेशा टक्कर के उम्मीदवार होते हैं। दूसरी ओर, वर्डप्रेस को अपने स्वयं के इंटर्न को उपसर्ग करना चाहिए।
FUXIA

हाँ, यह बात थी। एक बार जब मैंने टैक्सोनॉमी शब्द और संबंधित फाइलनाम को एक गैर-परस्पर विरोधी योजना में बदल दिया, तो सभी वापस आ गए। अपडेट किए गए WP कोड पर मुझे इंगित करने के लिए फिर से धन्यवाद।
गैरी डी

यह सुनकर खुशी हुई कि यह @GaryD
birgire

कूल, मुझे यह परीक्षण करना है कि जब मैं अपने हाथों को एक पुराने इंस्टॉल पर प्राप्त करता हूं ;-) मैं निश्चित रूप से उस उपसर्ग टिकट का समर्थन करूंगा, लेकिन मैं यह नहीं देखता कि निकट भविष्य में, दुख की बात है @toscho
birgire
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.