// LINXACK - Endpoint AJAX para listar y buscar posts
function linxack_get_posts() {
  $search = isset($_GET['search']) ? sanitize_text_field($_GET['search']) : '';
  $tag = isset($_GET['tag']) ? sanitize_text_field($_GET['tag']) : '';

  $args = array(
    'post_type'      => 'post',
    'post_status'    => 'publish',
    'posts_per_page' => -1,
    'orderby'        => 'date',
    'order'          => 'DESC',
    's'              => $search,
  );

  if ($tag) {
    $args['tag'] = $tag;
  }

  $query = new WP_Query($args);
  $posts = array();

  if ($query->have_posts()) {
    while ($query->have_posts()) {
      $query->the_post();
      $cats = get_the_category();
      $cat_name = !empty($cats) ? $cats[0]->name : 'sin-categoria';
      $content = get_the_content();
      $size = round(mb_strlen(strip_tags($content)) / 100) . 'kb';
      $posts[] = array(
        'title'    => get_the_title(),
        'url'      => get_permalink(),
        'date'     => get_the_date('M d H:i'),
        'category' => $cat_name,
        'size'     => $size,
        'slug'     => sanitize_title(get_the_title()) . '.txt',
      );
    }
    wp_reset_postdata();
  }

  wp_send_json($posts);
}
add_action('wp_ajax_linxack_posts', 'linxack_get_posts');
add_action('wp_ajax_nopriv_linxack_posts', 'linxack_get_posts');

// LINXACK - Endpoint AJAX para listar etiquetas
function linxack_get_tags() {
  $tags = get_tags(array('hide_empty' => true, 'orderby' => 'count', 'order' => 'DESC'));
  $result = array();
  foreach ($tags as $tag) {
    $result[] = array(
      'name'  => $tag->name,
      'slug'  => $tag->slug,
      'count' => $tag->count,
    );
  }
  wp_send_json($result);
}
add_action('wp_ajax_linxack_tags', 'linxack_get_tags');
add_action('wp_ajax_nopriv_linxack_tags', 'linxack_get_tags');