Средний почтовый возраст в днях на срок таксономии - PullRequest
0 голосов
/ 28 октября 2019

Я строю некоторые статистические данные для веб-сайта каталога, и я застрял, вычисляя средний возраст списков, назначенных для определенного типа листинга.

Я вычислил расчет возраста листинга в днях по идентификатору:

$today = date( 'Y-m-d' );
$listing_date = get_the_date( 'Y-m-d', $id );
$diff = strtotime( $today ) - strtotime( $listing_date );
$age = round( $diff / 86400 );

Я выяснил, как получить списки, назначенные определенному типу списка по идентификатору термина:

$args = array(
    'posts_per_page' => -1,
    'fields' => 'ids',
    'post_type' => 'listing',
    'post_status' => 'publish',
    'tax_query' => array(
        array(
        'taxonomy' => 'listing-type',
        'field' => 'id',
        'terms' => $id
        )
    )
);
$ids = get_posts( $args );

Это дает мне массив идентификаторов всех списков, назначенных определенному типу списка. Теперь мне нужно вычислить общий возраст в днях для всех тех списков, для которых я получил идентификаторы.

Я рассчитал $cnt = count( $ids );, чтобы получить общее количество найденных списков (идентификаторов), но я не могу вычислить расчетобщий возраст в днях для тех.

1 Ответ

2 голосов
/ 28 октября 2019

с циклом foreach:

<?php

// Your function to get the diff
function get_diff($id) {
   $today = date( 'Y-m-d' );
   $listing_date = get_the_date( 'Y-m-d', $id );
   $diff = strtotime( $today ) - strtotime( $listing_date );
   $age = round( $diff / 86400 );

   return $age;
}


// We want to store all the diff
$diffs = [];

foreach($ids as $id) {
   $diffs[] = get_diff($id);
}

// Get the average | We filter to remove empty values
$diffs = array_filter($diffs);
if(count($diffs)) {
    echo $average = array_sum($diffs)/count($diffs);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...