केवल कुछ पोस्ट प्रारूप के get_posts


10

मैं केवल अपने "सामान्य" पोस्ट प्रारूप लेख (लिंक नहीं, एक तरफ, बोली, आदि स्वरूपों) के साथ एक संग्रह सूची बनाने की कोशिश कर रहा हूं।

has_post_format( 'standard' )नीचे दिए गए कोड में मैं कैसे लागू करूंगा , या कुछ इसी तरह का?

मैं get_postsकेवल विशिष्ट प्रारूप प्रकारों के लिए अनुरोध करने में सक्षम नहीं हो पाया ।

<?php    
    // Get the posts
    $myposts = get_posts('numberposts=-1&orderby=post_date&order=DESC');     
?>

<?php foreach($myposts as $post) : ?>   

<?php    
    // Setup the post variables
    setup_postdata($post);

    $year = mysql2date('Y', $post->post_date);
    $month = mysql2date('n', $post->post_date);
    $day = mysql2date('j', $post->post_date);    
?>

<p>
    <span class="the_article">
        <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
    </span>
    &nbsp;&nbsp;&nbsp;
    <span class="the_day">
        <?php the_time('j F Y'); ?>
    </span>
</p>

<?php endforeach; ?>

मेरी php स्किल्स शुरुआती स्तर पर सर्वश्रेष्ठ हैं, इसलिए किसी भी मदद की बहुत सराहना की जाएगी।

जवाबों:


20

आप वास्तव में कर-संबंधी तर्क पारित नहीं कर सकते get_posts() (संपादित करें: वास्तव में, हाँ, आप कर सकते हैं। कोडेक्स कुछ हद तक अस्पष्ट है। स्रोत को देखते हुए, get_posts()इसके दिल में है, बस के लिए एक आवरण WP_Query()।) आप मेटा कुंजियाँ / मान, और पोस्ट प्रकार पारित कर सकते हैं , लेकिन पोस्ट जैसे वर्गीकरण नहीं। प्रारूप। तो इस लाइन के लिए:

$myposts = get_posts('numberposts=-1&orderby=post_date&order=DESC');

मैं इसके WP_Query()बजाय उपयोग करने की सलाह दूंगा get_posts():

$myposts = new WP_Query( array(
    'tax_query' => array(
        array(                
            'taxonomy' => 'post_format',
            'field' => 'slug',
            'terms' => array( 
                'post-format-aside',
                'post-format-audio',
                'post-format-chat',
                'post-format-gallery',
                'post-format-image',
                'post-format-link',
                'post-format-quote',
                'post-format-status',
                'post-format-video'
            ),
            'operator' => 'NOT IN'
        )
    )
) );

नोट: हाँ, यह बहुत नेस्टेड सरणियाँ है। कर संबंधी प्रश्न इस तरह से मुश्किल हो सकते हैं।

अगला कदम अपने लूप को खुले / बंद बयान को संशोधित करना है। इन्हें बदलें:

<?php foreach($myposts as $post) : ?>

    <?php /* loop markup goes here */ ?>

<?php endforeach; ?>

...इसके लिए:

<?php if ( $myposts->have_posts() ) : while ( $myposts->have_posts() ) : $myposts->the_post(); ?>

    <?php /* loop markup goes here */ ?>

<?php endwhile; endif; ?>

<?php wp_reset_postdata(); ?>

आपका वास्तविक लूप मार्कअप समान रहने में सक्षम होना चाहिए , सिवाय इसके कि आपको कॉल करने की आवश्यकता नहीं है setup_postdata( $post ):

<?php        
    $year = mysql2date('Y', $post->post_date);
    $month = mysql2date('n', $post->post_date);
    $day = mysql2date('j', $post->post_date);    
?>

<p>
    <span class="the_article">
        <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
    </span>
    &nbsp;&nbsp;&nbsp;
    <span class="the_day">
        <?php the_time('j F Y'); ?>
    </span>
</p>

तो, यह सब एक साथ डाल:

<?php
// Only query posts with the
// "standard" post format, which
// requires *excluding* all other
// post formats, since neither the
// "post_format" taxonomy nor the
// "post-format-standard" taxonomy term
// is applied to posts without
// defined post formats
$myposts = new WP_Query( array(
    'tax_query' => array(
        array(                
            'taxonomy' => 'post_format',
            'field' => 'slug',
            'terms' => array( 
                'post-format-aside',
                'post-format-audio',
                'post-format-chat',
                'post-format-gallery',
                'post-format-image',
                'post-format-link',
                'post-format-quote',
                'post-format-status',
                'post-format-video'
            ),
            'operator' => 'NOT IN'
        )
    )
) );

// Open the loop
if ( $myposts->have_posts() ) : while ( $myposts->have_posts() ) : $myposts->the_post(); ?>

    $year = mysql2date('Y', $post->post_date);
    $month = mysql2date('n', $post->post_date);
    $day = mysql2date('j', $post->post_date);    
    ?>

    <p>
        <span class="the_article">
            <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
        </span>
        &nbsp;&nbsp;&nbsp;
        <span class="the_day">
            <?php the_time('j F Y'); ?>
        </span>
    </p>  
    <?php 

// Close the loop
endwhile; endif;

// Reset $post data to default query
wp_reset_postdata();

धन्यवाद, आपने इसे शुरुआती रूप से अच्छी तरह से तोड़कर समझने के लिए वास्तव में आसान बना दिया। मैं अनुमान लगा रहा हूं क्योंकि मैं केवल एक तरफ, लिंक और मानक पोस्ट प्रारूपों का उपयोग करता हूं, मैं वास्तव में बाकी को छोड़ सकता हूं।
दाबा

1
हाँ; आपको केवल उन पोस्ट स्वरूपों को शामिल करना होगा जिनके लिए आपने समर्थन सक्षम किया है।
चिप बेनेट

get_posts () वास्तव में WP_Query का उपयोग करता है, इसलिए निश्चित रूप से आप टैक्सोनॉमी प्रश्नों में पास कर सकते हैं, बस उन्हें एक सरणी के रूप में पास करें और क्वेरी स्ट्रिंग के रूप में नहीं।
shabushabu

इसके लिए @shabushabu धन्यवाद। मैंने अपना उत्तर अपडेट कर दिया है।
चिप बेनेट

2

पोस्ट फॉर्मेट को एक टैक्सोनॉमी में पूर्वनिर्धारित शब्द कहा जाता है post_format, इसलिए आपको पोस्ट प्रारूप अभिलेखागार बनाने के लिए WP टेम्पलेट पदानुक्रम का उपयोग करने में सक्षम होना चाहिए। बस taxonomy-post_format-post-format-standard.phpअपने विषय की जड़ में नामक एक फ़ाइल बनाएँ और उस फ़ाइल का उपयोग आपके सभी मानक पदों को आउटपुट करने के लिए किया जाएगा। आप किसी भी अन्य प्रारूप नाम, जैसे aside, linkया video, इसलिए 'मानक' स्थानापन्न कर सकते हैं taxonomy-post_format-post-format-video.php। जब तक आप इस प्रारूप से चिपके रहते हैं, तब तक यह किसी भी अन्य वर्गीकरण के लिए भी काम करता है: btw,taxonomy-{TAXONOMY_NAME}-{TERM_NAME}.php

यदि आप कस्टम लूप के साथ पोस्ट फॉर्मेट दिखाना चाहते हैं, जैसे आपके साइडबार में या पेज टेम्पलेट में, तो आप @kaiser से टैक्स क्वेरी का उपयोग कर सकते हैं। बस के साथ वर्गीकरण post_formatऔर साथ slugs स्थानापन्न post-format-{FORMAT_NAME}


धन्यवाद, लेकिन मैं एक पेज टेम्पलेट के भीतर अभिलेखागार बनाने की कोशिश कर रहा हूं, इसलिए मैं अन्य समाधानों में से एक के साथ
जाऊंगा

1

दो अलग-अलग टैक्सोनोमी के लिए। एक एकल के लिए, आप relationआर्ग को बाहर छोड़ सकते हैं।

$args = array(
    'tax_query' => array(
        'relation' => 'AND',
        array(
            'taxonomy' => 'movie_janner',
            'field' => 'slug',
            'terms' => array( 'action', 'commedy' ) // Single terms as string - multiple as array
        ),
        array(
            'taxonomy' => 'actor',
            'field' => 'id',
            'terms' => array( 103, 115, 206 ),
            'operator' => 'NOT IN'
        )
    )
);

0

आप इस तरह से ट्रिक कर सकते हैं:

<?php 
while( have_posts() ) : the_post();
get_post_format()==false? get_template_part( 'loop', 'posts' ) : false;
endwhile;
?>

यह इसलिए है क्योंकि get_post_format () मानक पोस्ट प्रारूप के लिए गलत है। http://codex.wordpress.org/Function_Reference/get_post_format


वास्तव में यह काम करता है, लेकिन जब आप पेजिंग पर विचार करते हैं, तो आप परेशानी में पड़ जाएंगे। यदि आप कुछ ऐसा करते हैं 'posts_per_page' => 6और इसमें 4 मानक मानक टेम्पलेट नहीं हैं, तो आप केवल 2 पोस्ट देखेंगे, न कि 6 जो दिखाई देनी चाहिए। क्वेरी को फ़िल्टर करना जाने का प्रमाण तरीका है ..
honk31
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.