user
  • 0
Гуру

Получение и вычисление среднего значения настраиваемых полей одного и того же тега

  • 0

Итак, в основном я получил это значение пользовательского поля, которое хранится в $ postrating — и в поле базы данных customfield1. Я хочу получить значение этого поля для всех сообщений, в которых тег просматривается в данный момент. Затем я хочу рассчитать среднее значение этих чисел и отобразить на странице archive.php при просмотре тега.

Share
  1. Я не уверен в вашем описании — вы используете собственные настраиваемые поля WP или у вас есть (сообщения?) Таблица, расширенная дополнительным столбцом или чем-то еще?

    • 0
  2. Если это обычное настраиваемое поле, вы можете добавить его в свой archive.php:

    //before the loop
    $rating_count = 0;
    $total_rating = 0;
    
    //in the loop 
    $total_rating = $total_rating + get_post_meta($post->ID,'your_custom_field_name',true);
    $rating_count = $rating_count + 1;
    
    //after the loop:
    $average = $total_rating / $rating_count;
    echo 'the average rating for this tag is: ' . $average;
    

    Обновлять

    Теперь, когда вы упомянули, что разбиение на страницы эволюционировало, и вы не получаете все сообщения (например, 10/14), вы можете создать новый объект WP_Query и использовать его для получения всех сообщений (14/14) и проверить среднее. добавьте этот код перед циклом:

    global $wp_query;
    $real_query = $wp_query->query; //save reall query
    //create new query for all posts of the tag/category/whatever
    $args = array_merge( $wp_query->query, array( 'posts_per_page' => '-1' ) );
    $average_q = new WP_Query($args);
    $rating_count = 0;
    $total_rating = 0;
    while ($average_q->have_posts()){
        $average_q->the_post();
        $total_rating = $total_rating + get_post_meta($post->ID,'your_custom_field_name',true);
        $rating_count = $rating_count + 1;
    }
    wp_reset_query();
    $average = $total_rating / $rating_count;
    echo 'the average rating for this tag is: ' . $average;
    query_posts($real_query);
    
    • 0

Оставить ответ

You must login to add an answer.