arrays - array - Wordpress Sum meta_values de publicaciones y ordénelas por categoría
php sum array column (2)
Estoy usando este código para consultar todas las categorías de una matriz y sumar los valores meta_key por categoría:
<?
$arr_cat = array(1,34,64,32);
foreach ($arr_cat as $cat) {
$MySum = 0;
$args = array(
''cat'' => $cat,
''meta_key'' => ''proyecto_votos'',
''post_type'' => ''proyecto'',
''posts_per_page'' => ''-1'');
$the_query = new WP_Query( $args);
while ( $the_query->have_posts() ) : $the_query->the_post();
$MySum += get_post_meta($post->ID, ''proyecto_votos'', true);
endwhile;
wp_reset_postdata();
}
//var_dump($arr_cat);
?>
Y funciona bien Pero no puedo mostrar solo las 5 categorías principales con la mayoría de la suma de custom_value. Por favor, puedes ayudarme en esto.
Muchas gracias.
Finalmente, con un poco de google lo tengo :-):
<? $totalvotes = get_meta_values( ''proyecto_votos'', ''proyecto'' ); ?>
<?
foreach ($arr_cat_reg as $cat) {
$MySum = 0;
$args = array(
''cat'' => $cat,
''meta_key'' => ''proyecto_votos'',
''post_type'' => ''proyecto'',
''posts_per_page'' => ''-1'' );
$the_query = new WP_Query( $args);
while ( $the_query->have_posts() ) : $the_query->the_post();
$MySum += get_post_meta($post->ID, ''proyecto_votos'', true);
endwhile;
//echo $MySum.''<br/>'';
$percent = $MySum * 100;
$percent = $percent / $totalvotes;
//echo $percent;
wp_reset_postdata();
$catslug = get_cat_slug($cat);
$most_voted[] = array(''region'' => $catslug, ''votos'' => $MySum);
}
$sortArray = array();
foreach($most_voted as $region){
foreach($region as $key=>$value){
if(!isset($sortArray[$key])){
$sortArray[$key] = array();
}
$sortArray[$key][] = $value;
}
}
$orderby = "votos";
array_multisort($sortArray[$orderby],SORT_DESC,$most_voted);
$top5 = array_slice($most_voted, 0, 5);
?>
Espero que esto ayude a alguien.
Solo para las 5 publicaciones principales
$args = array(
''cat'' => $cat,
''post_type'' => ''proyecto'',
''meta_key'' => ''proyecto_votos'',
''orderby''=''meta_value_num'',
''posts_per_page'' => ''5'' // top 5 posts using ASC order by default
);
posts_per_page => -1
mostrará todas las publicaciones.