तारीख और आज के बीच प्रकाशित होने वाले पोस्ट कैसे प्राप्त करें?


10

क्या यह एक तारीख और आज के बीच प्रकाशित होने वाले पोस्ट पाने का एक तरीका है query_posts()?

उदाहरण: 2012-04-01 से प्रकाशित सभी पोस्ट

धन्यवाद

संपादित करें:

इस क्वेरी पोस्ट पर फ़िल्टर दिनांक कैसे जोड़ें?

query_posts( array(  
    array('post'),
    'tax_query' => array(
        array(
            'taxonomy' => 'post_format',
            'field' => 'slug',
            'terms' => array('post-format-image')
        )
    ),
    'cat' => '-173',
    'post_status' => 'publish'
) );


Query_posts () का उपयोग न करें। इसे देखें -> wordpress.stackexchange.com/a/1755/7890
moraleida

जवाबों:


23

अद्यतन 23 दिसंबर 2014

वर्ग की date_queryसंपत्ति का उपयोग करने का एक बेहतर तरीका है WP_Query:

$args = array(
    'post_type' => 'post', 
    'tax_query' => array(
        array( 
            'taxonomy'  => 'post_format',
            'field'     => 'slug',
            'terms'     => array( 'post-format-image' )
        )
    ),
    'cat'           => '-173',
    'post_status'   => 'publish',
    'date_query'    => array(
        'column'  => 'post_date',
        'after'   => '- 30 days'
    )
);
$query = new WP_Query( $args );

पुराने ANSWER

WP_Query में समय पैरामीटर का उपयोग करें ()

कोडेक्स से उद्धरण उदाहरण:

पिछले 30 दिनों से पोस्ट लौटाएँ:

// This takes your current query, that will have the filtering part added to.
$query_string = array(
    'post_type' => 'post', 
    'tax_query' => array(
        array(
            'taxonomy'  => 'post_format',
            'field'     => 'slug',
            'terms'     => array( 'post-format-image' )
        )
    ),
    'cat'           => '-173',
    'post_status'   => 'publish'
);

// Create a new filtering function that will add our where clause to the query
function filter_where( $where = '' ) {
    // posts in the last 30 days
    $where .= " AND post_date > '" . date( 'Y-m-d', strtotime( '-30 days' ) ) . "'";
    return $where;
}

add_filter( 'posts_where', 'filter_where' );
$query = new WP_Query( $query_string );
remove_filter( 'posts_where', 'filter_where' );

संपादित करें (ओपी के अद्यतन प्रश्न के जवाब में)।

Query_posts का उपयोग करने से बचें । आप अपनी मुख्य क्वेरी को बदलने के लिए उपरोक्त तकनीक का उपयोग कर सकते हैं (कुछ अतिरिक्त शर्तों के अधीन - होम पेज है, एक पेज है जिसे 'फ़ॉबर' आदि कहा जाता है):

function wpse52070_filter_where( $where = '' , $query ) {
   if( $query->is_main_query() && is_page( 'foobar' ) ){
      // posts in the last 30 days
      $where .= " AND post_date > '" . date( 'Y-m-d', strtotime( '-30 days' ) ) . "'";
   }

    return $where;
}
add_filter( 'posts_where', 'wpse52070_filter_where' );

ठीक है ! तो फिल्टर अब अंदर है $query_string। लेकिन यह Query_Posts में मेरे args के साथ कैसे काम करता है? (मेरे संपादन @Moraleida की जाँच करें)
स्टेफी

1
@Steffi - अद्यतन उत्तर देखें। मुझे आशा है कि आप इसके अलावा, मोरेलिडा का बुरा नहीं मानेंगे।
स्टीफन हैरिस

1
बस अपनी वर्तमान क्वेरी को जोड़ा, ताकि आप तुरंत क्वेरी_पॉज़ को खोद सकें। :) और त्वरित अद्यतन के लिए @StephenHarris धन्यवाद!
मनोबलि

थैंक यू @moraleida! गजब का ! बस एक बात। आपने कहा: "query_posts के उपयोग से बचें।" लेकिन यह query_posts()टेम्पलेट फ़ाइलों में उपयोग करना बेहतर है (जैसे कि home.php ) की तुलना में new WP_Query(), नहीं?
स्टेफी

ज़रुरी नहीं। query_postsकेवल मुख्य लूप को बदलने के लिए उपयोग किया जाना चाहिए - और बहुत से लोग तर्क देते हैं कि तब भी नहीं (इसके the pre_get_postsलिए फ़िल्टर भी है)। मैं अक्सर अपने आप को WP_Queryया केवल अपने get_postsसभी प्रश्नों का उपयोग कर पाता हूं क्योंकि वे स्टैंडअलोन हैं और किसी भी चीज के साथ कई बार w / o हस्तक्षेप कर सकते हैं। पूरी तरह से स्पष्टीकरण के लिए अपनी टिप्पणियों पर लिंक किए गए उत्तरों की जांच करें। :)
मनोबलिदा

3

3.7 के रूप में आप date_query का उपयोग कर सकते हैं http://codex.wordpress.org/Class_Reference/WP_Query#Date_Parameters

तो पारित किए गए आर्गन्स इस तरह दिखेंगे:

$query_string = array(
      'post_type' => 'post', 
      'date_query' => array(
        'after' => '2012-04-01' 
      ),
      'tax_query' => array(
          array( 
             'taxonomy' => 'post_format',
             'field' => 'slug',
             'terms' => array('post-format-image')
          )
      ),
      'cat' => '-173',
      'post_status' => 'publish'
);

0

यदि आप दो तिथियों के बीच पद प्राप्त करना चाहते हैं, तो पहले और बाद के पैरामीटर का उपयोग date_query पैरामीटर में करें,

$query_string = array(
  'post_type' => 'post', 
  'date_query' => array(
    'column' => 'post_date',
    'after' => '2012-04-01',
    'before' => '2012-04-30' 
  ),
  'tax_query' => array(
      array( 
         'taxonomy' => 'post_format',
         'field' => 'slug',
         'terms' => array('post-format-image')
      )
  ),
  'cat' => '-173',
  'post_status' => 'publish'
);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.