Icono ayuda

¿Necesitas ayuda?

Contactar con asesor por WhatsApp

Saltar al contenido

Ariapsa - Diseño de páginas web México

Exportar la categoría ID XXX a CSV. / Categorías especificas con detalles especificos

Funcionalidades del Plugin:

  1. Exportación específica: Exporta únicamente posts de la categoría ID 641
  2. Campos CSV: Exactamente como solicitaste:
    • Titulo: Título del post limpio
    • Contenido: Texto plano de 300 caracteres máximo, sin imágenes ni enlaces
    • URL: URL permanente del post
  3. Procesamiento de contenido:
    • Elimina shortcodes y HTML
    • Remueve enlaces y URLs
    • Limita a 300 caracteres
    • Convierte a texto plano

Cómo usar el plugin:

Opción 1: Panel de Administración

  1. Instala el plugin
  2. Ve a Herramientas → Exportar Categoría CSV
  3. Haz clic en "Exportar a CSV"

Opción 2: Función directa

php
export_category_XXX_csv(); // Llama esta función para exportar directamente

Opción 3: Shortcode (para usuarios administradores)

[export_category_csv]

Características técnicas:

  • Seguridad: Verificación de nonces y permisos
  • Codificación: UTF-8 con BOM para compatibilidad con Excel
  • Límite: Configurable (por defecto 100 posts, máximo 1000)
  • Formato: CSV estándar con comillas para campos de texto
  • Limpieza: Texto completamente limpio sin HTML, enlaces o caracteres especiales

El archivo CSV se descargará automáticamente con el nombre categoria_XXX_YYYY-MM-DD_HH-mm-ss.csv.

Código
<div style="text-align: center; margin: 20px 0;">
                        <a href="https://ariapsa.com/mb" target="_blank">
                            <img src="https://ariapsa.com/wp-content/uploads/2024/08/Marca-blanca-Diseno-de-paginas-web-mexico-ariapsa.jpg" alt="Banner" style="max-width: 100%; height: auto;">
                        </a>
                       </div>
<?php
/*
Plugin Name: Exportador de Categoría a CSV
Description: Exporta posts de una categoría específica (ID 641) a formato CSV
Version: 1.0
*/
// Prevenir acceso directo
if (!defined('ABSPATH')) {
exit;
}
class CategoryCSVExporter {
public function __construct() {
add_action('admin_menu', array($this, 'add_admin_menu'));
add_action('admin_post_export_category_csv', array($this, 'export_category_csv'));
}
// Agregar menú en el admin
public function add_admin_menu() {
add_management_page(
'Exportar Categoría CSV',
'Exportar Categoría CSV',
'manage_options',
'export-category-csv',
array($this, 'admin_page')
);
}
// Página de administración
public function admin_page() {
?>
<div class="wrap">
<h1>Exportar Categoría a CSV</h1>
<p>Exportar posts de la categoría ID 641 a formato CSV</p>
<form method="post" action="<?php echo admin_url('admin-post.php'); ?>">
<input type="hidden" name="action" value="export_category_csv">
<?php wp_nonce_field('export_csv_nonce', 'csv_nonce'); ?>
<table class="form-table">
<tr>
<th scope="row">Categoría ID</th>
<td>
<input type="number" name="category_id" value="641" readonly>
<p class="description">ID de la categoría a exportar (fijo en 641)</p>
</td>
</tr>
<tr>
<th scope="row">Límite de posts</th>
<td>
<input type="number" name="post_limit" value="100" min="1" max="1000">
<p class="description">Número máximo de posts a exportar (máximo 1000)</p>
</td>
</tr>
</table>
<?php submit_button('Exportar a CSV', 'primary', 'submit', false); ?>
</form>
</div>
<?php
}
// Función principal de exportación
public function export_category_csv() {
// Verificar nonce
if (!wp_verify_nonce($_POST['csv_nonce'], 'export_csv_nonce')) {
wp_die('Error de seguridad');
}
// Verificar permisos
if (!current_user_can('manage_options')) {
wp_die('No tienes permisos para realizar esta acción');
}
$category_id = intval($_POST['category_id']);
$post_limit = intval($_POST['post_limit']);
// Obtener posts de la categoría
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => $post_limit,
'cat' => $category_id,
'orderby' => 'date',
'order' => 'DESC'
);
$posts = get_posts($args);
if (empty($posts)) {
wp_die('No se encontraron posts en la categoría especificada');
}
// Configurar headers para descarga
$filename = 'categoria_' . $category_id . '_' . date('Y-m-d_H-i-s') . '.csv';
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename="' . $filename . '"');
header('Pragma: no-cache');
header('Expires: 0');
// Crear archivo CSV
$output = fopen('php://output', 'w');
// Escribir BOM para UTF-8
fprintf($output, chr(0xEF).chr(0xBB).chr(0xBF));
// Escribir encabezados
fputcsv($output, array('Titulo', 'Contenido', 'URL'), ',', '"');
// Procesar cada post
foreach ($posts as $post) {
$titulo = $this->clean_text($post->post_title);
$contenido = $this->process_content($post->post_content);
$url = get_permalink($post->ID);
fputcsv($output, array($titulo, $contenido, $url), ',', '"');
}
fclose($output);
exit;
}
// Procesar contenido del post
private function process_content($content) {
// Remover shortcodes
$content = strip_shortcodes($content);
// Remover tags HTML
$content = wp_strip_all_tags($content);
// Remover enlaces (texto que parece URL)
$content = preg_replace('/https?:\/\/[^\s]+/', '', $content);
$content = preg_replace('/www\.[^\s]+/', '', $content);
// Remover múltiples espacios y saltos de línea
$content = preg_replace('/\s+/', ' ', $content);
// Limpiar texto
$content = $this->clean_text($content);
// Limitar a 300 caracteres
if (mb_strlen($content) > 300) {
$content = mb_substr($content, 0, 297) . '...';
}
return trim($content);
}
// Limpiar texto
private function clean_text($text) {
// Decodificar entidades HTML
$text = html_entity_decode($text, ENT_QUOTES, 'UTF-8');
// Remover caracteres especiales problemáticos para CSV
$text = str_replace(array("\r\n", "\r", "\n"), ' ', $text);
$text = str_replace('"', '""', $text); // Escapar comillas dobles
// Limpiar espacios extra
$text = trim(preg_replace('/\s+/', ' ', $text));
return $text;
}
}
// Inicializar el plugin
new CategoryCSVExporter();
// Función para uso directo (opcional)
function export_category_641_csv() {
$exporter = new CategoryCSVExporter();
// Simular POST data para exportación directa
$_POST['category_id'] = 641;
$_POST['post_limit'] = 100;
$_POST['csv_nonce'] = wp_create_nonce('export_csv_nonce');
$exporter->export_category_csv();
}
// Shortcode para uso en frontend (opcional)
add_shortcode('export_category_csv', function($atts) {
$atts = shortcode_atts(array(
'category_id' => 641,
'text' => 'Exportar CSV'
), $atts);
if (current_user_can('manage_options')) {
$url = admin_url('admin-post.php?action=export_category_csv');
$nonce = wp_create_nonce('export_csv_nonce');
return '<form method="post" action="' . $url . '" style="display:inline;">
<input type="hidden" name="category_id" value="' . $atts['category_id'] . '">
<input type="hidden" name="post_limit" value="100">
<input type="hidden" name="csv_nonce" value="' . $nonce . '">
<button type="submit" class="button">' . esc_html($atts['text']) . '</button>
</form>';
}
return '';
});
?>

 

Ariapsa - Diseño de páginas web México
×

Iniciar Sesión

El registro de usuarios no está permitido.