केवल चित्रित छवि के साथ क्वेरी पोस्ट


15

मैं 6 पोस्टों को क्वेरी करना चाहता हूं, लेकिन केवल उन लोगों को शामिल करना है जिनके पास एक चित्रित छवि संलग्न है। मैं इसके meta_keyलिए इस WP_Queryतरह से विधि का उपयोग कर रहा हूं :

$args = array(
    'post_type'  => 'post',
    'meta_key' => '_thumbnail_id',
    'post_count' => 6 );
$query = new WP_Query($args);

के बाद

<?php while($query->have_posts()) : $query->the_post(); ?>
    <h2><?php the_title(); ?></h2>
    <?php the_post_thumbnail('thumbnail'); ?>
<?php endwhile; ?>

यह काम नहीं लगता है। क्वेरी 6 से अधिक पदों पर वापस आ रही है और उन लोगों को भी, जिनमें एक चित्रित छवि नहीं है। किसी भी विचार मैं यहाँ गलत क्या है?

@chip: var_dump($query);एक बड़े परिणाम तो मैं एक में यह पोस्ट किया है देता है pastebin


2
कोड स्निपेट ने उम्मीद के मुताबिक मेरे लिए काम किया। हो सकता है कि त्रुटि कोड के किसी अन्य भाग में हो।
राल्फ

आपको क्या मिलता है var_dump( $query )?
चिप बेनेट

एक अतिरिक्त चीज के रूप में, जिसके बारे में मैंने सोचा था - पोस्ट्स को मेरे स्थानीय सर्वर से वर्डप्रेस निर्यातक / आयातक का उपयोग करके आयात किया गया था। मूल पोस्ट में सभी चित्र थे जो स्पष्ट रूप से आयात प्रक्रिया में खो गए थे। इसका मतलब यह हो सकता है कि यद्यपि चित्रित छवियों को हटा दिया गया था मेटा कुंजियां अभी भी क्वेरी को गड़बड़ाने का कारण बनी हुई हैं?
हर्रीग

जब आपने आयात चलाया, तो क्या आपने सभी अटैचमेंट / मीडिया को डाउनलोड और अटैच करने के लिए बॉक्स को चेक किया था? यदि आपने नहीं किया तो आपकी चित्रित छवियां काम नहीं करेंगी। पोस्ट में एक चित्रित छवि होगी, लेकिन यह एक अनुलग्नक को संदर्भित करेगा जो मौजूद नहीं है, और इसलिए इसे कभी भी प्रदर्शित नहीं किया जाएगा
टॉम जे नोवेल

हां, मैंने आयात करते समय बॉक्स को चेक किया।
harryg

जवाबों:


3

आयातक को चलाने के दौरान, आपको सभी मीडिया / अनुलग्नकों को डाउनलोड करने और आयात करने के लिए चेकबॉक्स की जांच करनी होगी।

यदि आप नहीं करते हैं, तब भी पोस्ट में एक चित्रित छवि सेट होगा, लेकिन वे जिस अनुलग्नक का उल्लेख करते हैं वह अमान्य होगा, और कॉल करने का कोई भी प्रयास the_post_thumbnailविफल हो जाएगा। अपने कोड का उपयोग करते हुए आपको केवल पोस्ट शीर्षक, और कोई थंबनेल नहीं मिलेगा। इससे यह आभास होता है कि जिन पोस्टों में कोई विशेष छवि नहीं है, उन्हें अंदर खींचा जा रहा है। यह मामला नहीं है, उनकी एक चित्रित छवि है, यह सिर्फ आयात करते समय आपके द्वारा की गई गलती के कारण उपलब्ध नहीं है।

अपनी पोस्ट हटाएं, और सही सेटिंग्स का उपयोग करके फिर से आयात करें।

इस बिंदु को प्रदर्शित करने के लिए, आपने वास्तव में पदों की जांच करने का कोई प्रयास नहीं किया, हमेशा जांच करें जैसे:

if ( $query->have_posts() ) { // you never checked to see if no posts were found
    while($query->have_posts()) { // alt style syntax doesn't work with most IDEs
        $query->the_post(); // individual statement should be on individual line
        ?><h2><?php the_title(); ?></h2><?php // you only need open/close tags here, not every line, save yourself some time typing
        if ( has_post_thumbnail() ) { // only print out the thumbnail if it actually has one
            echo '<p>post says it has a featured image</p>'; // double checking
            the_post_thumbnail('thumbnail');
        } else {
            echo '<p>this post does not have a featured image</p>';
        }
    }
} else {
    echo '<p>no posts found</p>';
}

यदि आपने चेकबॉक्स की जाँच नहीं की है, तो आपको यह कहते हुए चित्र मिलेंगे कि उनकी एक चित्रित छवि है, लेकिन कोई चित्र नहीं दिखाया गया है


1
मुझे लगता है कि इसका कारण यह है कि मैंने जो उत्तर दिया है वह अपेक्षा के अनुरूप काम नहीं कर रहा है। वर्डप्रेस आत्महत्या प्लगइन सभी सामग्री को हटाने के लिए बहुत उपयोगी है।
हेलगेटहाइकिंग

मैंने उस बॉक्स को जरूर चेक किया। हालाँकि मेरे अनुभव में यह मेरे लिए कभी काम नहीं आया। सभी छवियों को वापस बाहरी साइट से जोड़ा गया था। मैंने स्थानीय रूप से छवियों को संग्रहीत करने और संलग्न करने के लिए आयात बाहरी छवियां ( wordpress.org/extend/plugins/import-external-images ) प्लगइन का उपयोग किया ।
harryg

मेरे पास एक ही विचार है, मैंने निश्चित रूप से बॉक्स की जांच की, यह अभी भी काम क्यों नहीं करता है? मैंने इसे ग्राहकों से प्राप्त किया है, और यह गलत होने के लिए इतना आसान है, इसलिए अपने पोस्ट हटाएं, पुन: आयात करें और सुनिश्चित करें कि इसकी जाँच की गई है, और यदि यह अभी भी काम नहीं करता है, तो आप इसे नियंत्रित कर सकते हैं। अन्यथा एक नील डेग्रसे टायसन बात करते हैं कि मानवीय स्मृति कितनी कमज़ोर है। अभी मैं आपको दूसरा टिकबॉक्स अनचेक करने के लिए कह सकता हूं और आपको शायद यह भी याद होगा (लेकिन एक नहीं है)
टॉम जे नोवेल

और इस बीच में, चादर the_post_thumbnailएक साथ has_thumbnailकॉल और एक किसी और मामले जोड़ें ताकि आप निश्चित रूप से स्पष्ट रूप से जानते हैं कि उस पोस्ट किसी चुनिंदा छवि नहीं है
टॉम जम्मू नॉवेल

यह भी सुनिश्चित करें कि आपका सर्वर दूरस्थ सर्वर तक पहुंचने में सक्षम है। यदि आपका सर्वर दूरस्थ अनुरोधों को हड़पने में असमर्थ है, तो वह आयात करने में असमर्थ होगा। आप अच्छी तरह से मीडिया संलग्नक पहले से ही पकड़ा नष्ट करने के लिए आवश्यकता हो सकती है
टॉम जम्मू नॉवेल

24

वर्डप्रेस 3.5 के रूप में, मेटा क्वेरी पैरामीटर समर्थन करते हैं EXISTSऔर NOT EXISTSऑपरेटरों की तुलना करते हैं। उस स्थिति में जहां आप इनका उपयोग कर रहे हैं, आप valueमेटा क्वेरी के भाग को छोड़ सकते हैं । अपनी क्वेरी के लिए निम्नलिखित तर्क आज़माएं:

$args = array(
   'post_type'  => 'post',
   'posts_per_page' => 6,
    'meta_query' => array(
        array(
         'key' => '_thumbnail_id',
         'compare' => 'EXISTS'
        ),
    )
);

सलाह के लिये धन्यवाद। मुझे अब 6 पद मिलते हैं लेकिन फिर भी बिना थंबनेल के पोस्ट मिलते हैं।
हर

मैंने इसका परीक्षण किया और इसने मेरे लिए काम किया। लेकिन मैंने नोटिस किया कि यह उन संस्थाओं को लौटा देगा जिनके पास मेटा सेट है, लेकिन किसी कारण से अटैचमेंट आईडी सही नहीं है। इसलिए दोहराएं कि आपकी पोस्ट में चुनिंदा चित्र सेट हैं। अन्यथा, मुझे नहीं पता कि समस्या और क्या हो सकती है।
हेलगेटेवाइकिंग

harryg, क्या आप पुष्टि कर सकते हैं कि आप v3.5 का उपयोग कर रहे हैं या बाद में?
टॉम जम्मू नॉवेल

हां, मैं वर्डप्रेस का नवीनतम संस्करण चला रहा हूं - मेरे स्थानीय देव सर्वर पर एक नेटवर्क (मल्टीसाइट) सेटअप के रूप में ताज़ा स्थापित किया गया है।
harryg

2
बस कुछ अतिरिक्त जानकारी: एक अनसुलझे बग है, ट्रेक टिकट 23268 देखें , जो कि उपयोग किए जाने पर एक मूल्य का उपयोग करना आवश्यक बनाता NOT EXISTSहै।
निकोलई
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.