Recuperar el último post por múltiples categorías con ID

Tengo las categorías enumeradas abajo en mi
product
tipo de poste.
Category Name: Test 1 ID: 82
Category Name: Test 2 ID: 83
Category Name: Test 3 ID: 84
Category Name: Test 4 ID: 85
Ahora quiero recuperar para un puesto de cada categoría el último que agregó. He intentado debajo de código pero no funciona bien.

<?php
    $args = array( 'product_cat_' => 82,83,84,85, 'post_type' => 'product', 'orderby' => 'post_date', 'order' => 'DESC', 'post_status' => 'publish', 'posts_per_page' => 4 ); 
    $postslist = get_posts( $args );    
    foreach ($postslist as $post) :  setup_postdata($post); 
?>  
    <h2><a rel="nofollow" href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2> 

<?php endforeach; ?>
<?php
    $args = array( 'product_cat_' => 82,83,84,85, 'post_type' => 'product', 'orderby' => 'post_date', 'order' => 'DESC', 'post_status' => 'publish', 'posts_per_page' => 4 ); 
    $postslist = get_posts( $args );    
    foreach ($postslist as $post) :  setup_postdata($post); 
?>  
    <h2><a rel="nofollow" href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2> 

<?php endforeach; ?>
.


Solución

El problema es que si pasan categoría múltiples a una pregunta, entonces se podrá recuperar 4 mensajes ordenados por fecha, pero si te 4 últimos puestos están en una categoría, obtendrá 4 todos los mensajes de la misma categoría. Tienes 2 opciones: ejecutar 4 consultas diferentes, uno por cada categoría y recuperar un puesto por consulta o ejecuta una consulta sql personalizada que recuperar los puestos teniendo cuidado de tener un puesto de cada categoría. Te daré una solución para la segunda opción.

El código es más tomado forma here.

function get_unique_post_by_tax( $tax = 'product_cat_', $ids = '', $cpt = 'product') {
  global $wpdb;
  $ids = array_filter( array_map( 'intval', (array) $ids ) );
  if ( empty($ids) ) return false;
  $ids_txt = implode( ',', $ids );
  return $wpdb->get_results( $wpdb->prepare(
    "SELECT p.* FROM $wpdb->term_relationships
    JOIN $wpdb->term_taxonomy AS tt 
    ON tt.term_taxonomy_id = $wpdb->term_relationships.term_taxonomy_id
    JOIN $wpdb->posts AS p ON p.ID = $wpdb->term_relationships.object_id
    WHERE tt.taxonomy = %s 
    AND tt.term_id = IN (%s)
    AND p.post_type = %s AND p.post_status = 'publish'
    GROUP BY $wpdb->term_relationships.term_taxonomy_id
    ORDER BY post_date DESC LIMIT %d",
    $tax, $cpt, $ids_txt, count($ids)
  ) );
}
A la función anterior
functions.php
después de eso, usted puede utilizarlo como sigue:
$loop = get_unique_post_by_tax( 'product_cat_', array(82,83,84,85) );

if ( ! empty($loop) ) {
  global $post;
  foreach ( $loop as $post ) :
    setup_postdata($post);
  ?>
    <h2><a rel="nofollow" href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>;
  <?php
  endforeach;
  wp_reset_postdata();
}
$loop = get_unique_post_by_tax( 'product_cat_', array(82,83,84,85) );

if ( ! empty($loop) ) {
  global $post;
  foreach ( $loop as $post ) :
    setup_postdata($post);
  ?>
    <h2><a rel="nofollow" href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>;
  <?php
  endforeach;
  wp_reset_postdata();
}
.




Problemas relacionados

Múltiples siguiente \/ anterior

Categorías de enlace al último mensaje

¿Cómo insertar lista en página de creación de correos y recuperar elegido categorías?

Obtener el último post del blog de otro blog multisitio

excluir un post de wp_query lazo

¿Cómo puedo lista de las categorías de tipo poste, la taxonomía

Combinar múltiples categorías en URL Slug

obtener enlace del último post con consulta SQL

Obtenga las últimas post en fecha categoría

¿Cómo obtener etiquetas y categorías?

correos personalizados tipo post próximos y último post

Problema Fluxómetro la categoría tipo poste

Source: Stack Exchange Inc; License: cc by-sa 3.0 Contacto / Contact