2017-07-25 1 views
1

Ich versuche, einen populären Pfostenabschnitt auf meiner Web site zu verursachen, um die Spitzen5 populärsten Pfosten der letzten Woche zu zeigen.Populärer Beitrag mit wp_query und date_query wordpress

Funktion für Popular Beitrag

function shapeSpace_popular_posts($post_id) { 
    $count_key = 'popular_posts'; 
    $count = get_post_meta($post_id, $count_key, true); 
    if ($count < 1) { 
     delete_post_meta($post_id, $count_key); 
     add_post_meta($post_id, $count_key, '0'); 
    } else { 
     $count++; 
     update_post_meta($post_id, $count_key, $count); 
    } 
} 
function shapeSpace_track_posts($post_id) { 
    if (!is_single()) return; 
    if (empty($post_id)) { 
     global $post; 
     $post_id = $post->ID; 
    } 
    shapeSpace_popular_posts($post_id); 
} 
add_action('wp_head', 'shapeSpace_track_posts'); 

Schleife für das Volk Beitrag

<?php $popular = new WP_Query(array(
        'posts_per_page'=>5, 
        'date_query'   => array(
         //set date ranges with strings! 
         'after' => '1 week ago', 
         'before' => 'today', 
         //allow exact matches to be returned 
         'inclusive'   => true, 
        ), 
        'meta_key'=>'popular_posts', 
        'orderby'=>'meta_value_num', 
        'order'=>'DESC')); 
        while ($popular->have_posts()) : $popular->the_post(); ?> 
        <h5 class="section_category"> 
         <?php the_category(', ') ?> 
        </h5> 
        <div class="trending_title"> 
         <?php the_title(sprintf('<h4><a href="%s" rel="bookmark">', esc_url(get_permalink())), '</a></h4>'); ?> 
        </div> 
        <h5 class="section_author"> 
         By <?php coauthors_posts_links(); ?> 
        </h5> 
        <div class="border-bottom"></div> 
        <?php endwhile; wp_reset_postdata(); ?> 

Wenn Sie trotzdem helfen in können, würde ich dankbar sein.

Danke,

Antwort

0

Verwendung "query_posts" statt "WP_Query"

<?php 
$args = array(
    'post_type' => 'post', 
    'showposts' => 5, 
    'date_query'   => array(
     //set date ranges with strings! 
     'after' => '1 week ago', 
     'before' => 'today', 
     //allow exact matches to be returned 
     'inclusive'   => true, 
    ), 
    'meta_key' => 'popular_posts', 
    'orderby' => 'meta_value_num', 
    'order' => 'DESC' 
); 
query_posts($args); 
//query_posts('post_type=post&showposts=5&meta_key=popular_posts&orderby=meta_value_num&order=DESC'); 
if (have_posts()) : 
?> 
<?php 
while (have_posts()) : the_post(); 
?> 
    <h5 class="section_category"> 
     <?php the_category(', ') ?> 
    </h5> 
    <div class="trending_title"> 
     <?php the_title(sprintf('<h4><a href="%s" rel="bookmark">', esc_url(get_permalink())), '</a></h4>'); ?> 
    </div> 
    <h5 class="section_author"> 
     By <?php coauthors_posts_links(); ?> 
    </h5> 
    <div class="border-bottom"></div> 
<?php 
endwhile; 
?> 
<?php 
endif; 
wp_reset_query(); 
?> 
+0

Es scheint tut einen Unterschied zu machen, wenn ich mit diesem ersetzen. Irgendwelche Vorschläge warum? – Ian

+0

alles funktioniert gut bis zur date_query dann scheint es nicht zu reagieren und ich bin mir nicht sicher warum – Ian

+0

können Sie versuchen "Spalte" => "post_date", "nach" => '- 7 Tage "statt nach" =>' Vor 1 Woche ', –

Verwandte Themen