$cat_id,
‘hide_empty’ => false
));
$categorias = array_merge(array($categoria), $subcategorias);
foreach ($categorias as $cat) {
// Obtener posts de esta categoría
$posts = get_posts(array(
‘category’ => $cat->term_id,
‘numberposts’ => -1,
‘post_status’ => ‘publish’,
‘post_type’ => ‘post’
));
foreach ($posts as $post) {
// Método 1: Archivos adjuntos directos al post
$adjuntos = get_attached_media(‘application/pdf’, $post->ID); // Cambia ‘application/pdf’ por » para todos los tipos
foreach ($adjuntos as $archivo) {
$archivos[] = array(
‘categoria’ => $cat->name,
‘post_titulo’ => $post->post_title,
‘archivo_nombre’ => basename(get_attached_file($archivo->ID)),
‘archivo_url’ => wp_get_attachment_url($archivo->ID),
‘post_id’ => $post->ID,
‘archivo_id’ => $archivo->ID
);
}
// Método 2: Si usan campos personalizados (común en hospitaldelinares.gob.cl)
$archivos_meta = get_post_meta($post->ID, ‘archivo_adjunto’, true); // Cambia ‘archivo_adjunto’ por tu campo ACF/meta_key
if ($archivos_meta) {
$archivos[] = array(
‘categoria’ => $cat->name,
‘post_titulo’ => $post->post_title,
‘archivo_nombre’ => basename($archivos_meta),
‘archivo_url’ => $archivos_meta,
‘post_id’ => $post->ID,
‘archivo_id’ => ‘meta’
);
}
// Método 3: Múltiples archivos en repeater ACF (descomenta si aplica)
/*
if (function_exists(‘get_field’)) {
$archivos_repeater = get_field(‘archivos_documentos’, $post->ID); // Nombre de repeater ACF
if ($archivos_repeater) {
foreach ($archivos_repeater as $item) {
$archivos[] = array(
‘categoria’ => $cat->name,
‘post_titulo’ => $post->post_title,
‘archivo_nombre’ => basename($item[‘archivo’][‘url’]),
‘archivo_url’ => $item[‘archivo’][‘url’],
‘post_id’ => $post->ID
);
}
}
}
*/
}
}
return $archivos;
}
// Hook para mostrar vía parámetro URL (?listar_archivos=1)
add_action(‘wp’, function() {
if (isset($_GET[‘listar_archivos’]) && $_GET[‘listar_archivos’] == 1 && current_user_can(‘manage_options’)) {
$archivos = listar_archivos_categoria_11();
echo ‘
Archivos de Categoría 11 y Subcategorías (‘ . count($archivos) . ‘ encontrados)
‘;
// Tabla HTML
echo ‘
| Categoría | Post | Nombre Archivo | URL | ID Post/Archivo |
|---|---|---|---|---|
| ‘ . esc_html($arc[‘categoria’]) . ‘ | ‘ . esc_html($arc[‘post_titulo’]) . ‘ | ‘ . esc_html($arc[‘archivo_nombre’]) . ‘ | ‘ . esc_url($arc[‘archivo_url’]) . ‘ | ‘ . $arc[‘post_id’] . ‘/’ . $arc[‘archivo_id’] . ‘ |
‘;
// CSV Download
$csv = «Categoría,Post,Archivo Nombre,URL,IDs\n»;
foreach ($archivos as $arc) {
$csv .= ‘»‘ . str_replace(‘»‘, ‘»»‘, $arc[‘categoria’]) . ‘»,»‘ . str_replace(‘»‘, ‘»»‘, $arc[‘post_titulo’]) . ‘»,»‘ .
str_replace(‘»‘, ‘»»‘, $arc[‘archivo_nombre’]) . ‘»,»‘ . $arc[‘archivo_url’] . ‘»,»‘ . $arc[‘post_id’] . ‘/’ . $arc[‘archivo_id’] . ‘»‘;
$csv .= «\n»;
}
echo ‘
‘;
exit;
}
});
// Shortcode [archivos_cat11] para páginas/posts
add_shortcode(‘archivos_cat11’, function() {
ob_start();
$archivos = listar_archivos_categoria_11();
echo ‘
Total: ‘ . count($archivos) . ‘ archivos
- ‘;
- ‘ . esc_html($arc[‘categoria’] . ‘ – ‘ . $arc[‘post_titulo’]) . ‘
‘;
echo ‘Archivo: ‘ . esc_html($arc[‘archivo_nombre’]) . ‘
foreach ($archivos as $arc) {
echo ‘
‘;
}
echo ‘
‘;
return ob_get_clean();
});
?>
