custom-post-types – Enumere las cargas de imágenes más recientes, pero solo para el tipo de publicación personalizada específica

Pregunta:

Puedo obtener una lista de los archivos adjuntos de imágenes más recientes así:

$attachments = get_posts( array(
    'post_type' => 'attachment',
    'posts_per_page' => $number,
    'post_mime_type' => 'image'
) );

Esto devuelve todas las imágenes que se han subido recientemente, ya sea que estén adjuntas a una publicación o página, o que no estén adjuntas a través del menú Medios.

Lo que me gustaría es limitar esa lista a solo las imágenes adjuntas a un tipo de publicación personalizada que he creado. (El tipo de publicación personalizada no es tan importante; la misma pregunta podría ser: 'solo imágenes adjuntas a publicaciones' o 'solo imágenes adjuntas a páginas').

Me doy cuenta de que podría probar cada imagen después de ejecutar la consulta anterior y eliminar cualquiera cuyo padre no sea el tipo de publicación correcto, pero quiero devolver una cantidad específica de imágenes ( $number ), y este método podría eliminar algunas o todas las devueltas. imagenes!

Respuesta:

¿Intentaste agregar un filtro a get_posts. Esto no se prueba, solo un pensamiento después de un poco de búsqueda:

 function my_filter( $query )
 {
      if( is_home() ) //Example, if u want to display recent images on home
      {
           $query->set( 'post_type', array( 'attachment', 'my_cpt' ) );
      }
 }
 add_filter( 'pre_get_posts', 'my_filter' );

EDITAR: Después de volver a leer, no creo que logre lo que está tratando de hacer, creo que mostrará tanto los archivos adjuntos como las publicaciones de su CPT.

Supongo que lo dejaré aquí por si te da alguna idea.

EDITAR 2: La única otra forma además de filtrar en PHP que puedo pensar sería una consulta sql personalizada y luego configurar los datos de la publicación. EX :

$sql = "SELECT * FROM wp_posts
        WHERE post_type = 'attachment'
        AND post_parent IN (SELECT ID FROM wp_posts WHERE post_type = 'your-cpt')
        //ORDER BY";

 $posts = $wpdb->get_results( $sql, OBJECT );

 //loop - setup_postdata

Más info: WordPress Codex

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım