• Dzień dobry. Mam na stronie zakodowany widget „popularne posty”. Niestety ten widget nie działa, tzn. od początku wyświetla te same posty, jedne z pierwszych, a nie wskazuje naprawdę popularnych postów spośród wszystkich. Zakładam, że może brakować jakiejś funkcji, np. wskazania okresu (np. w tym tygodniu albo w tym miesiącu). Czy mogę liczyć na radę co do korekty kodu?

    if($ats[’typ’] == 'popularne’){
    $args = array(
    'posts_per_page’ => $ats[’limit’],
    'order’ => 'DESC’,
    'meta_key’ => 'post_views_count’,
    'orderby’ => 'meta_value_num’,
    );
    }else{
    $args = array(’posts_per_page’ => $ats[’limit’],);
    }

    $the_query = new WP_Query( $args );

    ob_start();

    if ( $the_query->have_posts() ){ // ifposts

    ?><ul class=”posts-list”><?php

    while( $the_query->have_posts() ){

    $the_query->the_post();
    $html .= get_template_part( 'template-parts/post-list’);

    } //endwhile

    ?><?php

    } // end ifposts
    wp_reset_postdata();

    return ob_get_clean();

Viewing 4 replies - 1 through 4 (of 4 total)
  • Sprawdź sobie w bazie, czy masz w ogóle mety post_views_count.
    Jeżeli nie, to w functions.php motywu dopisz sobie

    function my_post_view_count(){
    	if ( is_single() ){
    		global $post;
    		$count_post = esc_attr( get_post_meta( $post->ID, 'post_views_count', true) );
    		if( $count_post == ''){
    			$count_post = 1;
    			add_post_meta( $post->ID, 'post_views_count', $count_post);
    		}else{
    			$count_post = (int)$count_post + 1;
    			update_post_meta( $post->ID, 'post_views_count', $count_post);
    		}
    	}
    }
    add_action('wp_head', 'my_post_view_count');
    Twórca wątku cracker89

    (@cracker89)

    Sprawdziłem. W pliku functions znalazłem taki kod:

    function getPostViews($postID){
        $count_key = 'post_views_count';
        $count = get_post_meta($postID, $count_key, true);
        if($count==''){
            delete_post_meta($postID, $count_key);
            add_post_meta($postID, $count_key, '0');
            return 0;
        }
        return $count;
    }
    
    function setPostViews($postID) {
        $count_key = 'post_views_count';
        $count = get_post_meta($postID, $count_key, true);
        if($count==''){
            $count = 0;
            delete_post_meta($postID, $count_key);
            add_post_meta($postID, $count_key, 0);
        }else{
            $count++;
            update_post_meta($postID, $count_key, $count);
        }
    }

    Czy to oznacza, że nie muszę dodawać w/w kodu?

    Nie musisz.
    Natomiast sprawdź sobie, czy i gdzie potem jest wywoływana funkcja setPostViews

    Twórca wątku cracker89

    (@cracker89)

    A jak to sprawdzić?

Viewing 4 replies - 1 through 4 (of 4 total)
  • Temat ‘Niedziałający widget – błąd w kodzie?’ jest zamknięty na nowe odpowiedzi.